Newsgroups: rec.arts.int-fiction
Path: news.duke.edu!newsgate.duke.edu!nntp-out.monmouth.com!newspeer.monmouth.com!newsfeed.icl.net!newsfeed.skycache.com!Cidera!news-reader.ntrnet.net!uunet!ash.uu.net!world!buzzard
From: buzzard@world.std.com (Sean T Barrett)
Subject: Re: Relative difficulty of Inform, Tads, Hugo?
Message-ID: <GCHy4w.9Fo@world.std.com>
Date: Sat, 28 Apr 2001 09:53:20 GMT
References: <3ae85fdc.19287513@newsserver.epix.net> <wkae53iitq.fsf@turangalila.harmonixmusic.com> <9cce7r$huq$1@nntp.Stanford.EDU> <wkvgnqarfb.fsf@turangalila.harmonixmusic.com>
Organization: The World Public Access UNIX, Brookline, MA
Lines: 56
Xref: news.duke.edu rec.arts.int-fiction:86089

Dan Schmidt  <dfan@harmonixmusic.com> wrote:
>That's surprising to me.  Here are some things I find a bit irregular
>about Inform's syntax:

Shortcuts are no big deal--you don't have to learn or use them:

> - the alternate function-calling syntax, e.g., print (The) obj,
> - -> to mean 'child of previous object'

several of the things you listed are just infix operators like "+":

> - obj in obj2
> - obj has attribute, obj hasnt attribute

(although I admit "hasnt" is a bit silly.)

several of them are the only definition syntax provided at all,
so I'm not sure what it's supposed to be irregular with respect to:

> - function definitions: [ variables; code; ]
> - with <properties>
> - has <attributes>
> - Object object_name "name" location
> - the special syntax for defining/extending verbs
> - special directives such as Release, Replace

(I mean, would you complain that C's syntax is irregular because
you use [] in some cases, {} in some cases, and () in others?  I
guess a LISP programmer would.)

and many of them are irregularities:

> - move x to y
> - give obj attribute, give obj ~attribute
> - <additional command>
> - <<redirected command>>
> - implicit switch on action
> - ##Verb
> - different implicit return values depending on what name your
>   function has (I guess this is semantics, not syntax, though)

One major issue is that these are not just syntactic irregularities;
you can override the behavior of any function call, but you can't
override "move x to y" or "give obj attribute"--that this is a
problem is obvious from the number of times newbies make the mistake
of trying "move player to y" instead of calling PlayerTo(y) or whatever
exactly it's called.

Since the point of this thread was supposed to be about the issues
of the "harder" languages vs. the easy languages, in my opinion
the issue is really that if you're using the harder languages, it's
because you want to do advanced things.  The problem with Inform
for doing advanced things is the semantic irregularities--and the
hackiness of much of the standard libraries.

SeanB
