[comp.sys.mac.hypercard] Scripting language

francis@uchicago.edu (Francis Stracke) (01/25/91)

In article <1991Jan24.223857.9881@portia.Stanford.EDU> duggie@jessica.stanford.edu (Doug Felt) writes:


   In article <2899@casbah.acns.nwu.edu> jln@casbah.acns.nwu.edu (John Norstad) writes:
   >Eventually, if all goes well, we hope to see an object-oriented 
   >system-wide scripting language based on HyperTalk and AppleEvents which 
   >can be used to control this process.

   I find the idea of a scripting language based on Hypertalk to be a bit
   frightening.  Do people really think Hypertalk is the way to go?

Well, for one thing, a lot of us know it already.  Always important.
Besides that, it's the *only* language that I know of that really has
a good paradigm for the Mac.  Trying to use anything like a standard
language would involve much more for the average user to learn--if
they've learned to use the Mac, they've learned a bunch of the stuff
that underlies the Hypertalk concepts.  Why throw that away?

What exactly do you have against it?

Note the crossposting: this is clearly of interest to
c.s.m.programmer, and (IMHO) should be addressed by c.s.m.hypercard,
since they're the ones with the most experience in HyperTalk.  Feel
free to flame me if you take major exception.

--
/=============================================================================\
| Francis Stracke		| My opinions are my own.  I don't steal them.|
| Department of Mathematics	|=============================================|
| University of Chicago		| Until you stalk and overrun,	     	      |
| francis@zaphod.uchicago.edu	|  you can't devour anyone. -- Hobbes 	      |
\=============================================================================/

duggie@jessica.stanford.edu (Doug Felt) (01/26/91)

In article <FRANCIS.91Jan24205149@math.uchicago.edu> francis@uchicago.edu (Francis Stracke) writes:
>
>In article <1991Jan24.223857.9881@portia.Stanford.EDU> duggie@jessica.stanford.edu (Doug Felt) writes:
>
>   In article <2899@casbah.acns.nwu.edu> jln@casbah.acns.nwu.edu (John Norstad) writes:
>   >Eventually, if all goes well, we hope to see an object-oriented 
>   >system-wide scripting language based on HyperTalk and AppleEvents which 
>   >can be used to control this process.
>
>   I find the idea of a scripting language based on Hypertalk to be a bit
>   frightening.  Do people really think Hypertalk is the way to go?
>
>Well, for one thing, a lot of us know it already.  Always important.
>Besides that, it's the *only* language that I know of that really has
>a good paradigm for the Mac.  Trying to use anything like a standard
>language would involve much more for the average user to learn--if
>they've learned to use the Mac, they've learned a bunch of the stuff
>that underlies the Hypertalk concepts.  Why throw that away?
>
>What exactly do you have against it?

As John Norstad pointed out, there are ambiguities in the language.  I 
think it is too easy for people to believe the hypertalk they've written
does one thing when it really does another.  Computer languages need
to be precise because computers need to know precisely what to do.  If
you try to hide that from the user, I think you're asking for trouble.

Hypertalk has its own subtleties, like other 'standard' languages do.
For example, try this in the message box:

put baz -- baz
baz -- (error: can't under stand "baz")
put foo into baz
baz -- foo
put "foo" into baz
baz -- foo
put quote & baz & quote into baz
baz -- "foo"
value(baz) -- foo
value(value(baz)) -- foo
put "this is some text" into baz
put baz -- this is some text
put word 1 of baz -- this
put quote & "this is some text" & quote into baz
put baz -- "this is some text"
put word 1 of baz -- "this is some text"
value(baz) -- this is some text
value(value(baz)) -- false
put this into some
value(this is some) -- true
this is some -- (error: can't understand arguments of "this".)

While this behavior is predictable, and makes sense if you understand
what is happening, I don't believe most Macintosh users will find this
all that clear.  It is subtle, and there are similar subtleties all
through Hypertalk-- the "which handler gets the message" question, for
example.  Such subtleties may seem insignificant, but can at times
lead to major problems.

Other problems I see are: the distinctions between functions and
handlers (you can 'send' and 'do' one but not the other).  No
intermediate scope (variables are either local to the handler, or
global to all of hypercard).  No structures-- meaning both that
hypercard is very long-winded (put item foo of line bar of cd fld baz
of card dimwit into flathead) and that there is no way to deal with
lists of arbitrary data except as multiple cards, which can be
cumbersome, and which I don't see porting to well to a scripting
language.  I think the fact that you can build up a string on the fly
and "do" it leads to all kinds of abuse and can cause debugging
nightmares, despite its occasional utility.  I'm also not so sure the
ability to write handlers which take variable numbers of parameters
is, overall, a win, though I have had occasions to make use of this
as well.

Now, I'm speaking as a programmer, and therefore as someone who deals
with fairly complicated tasks for which precision and expressive power
in a language is essential.  I believe Hypertalk is ok for the purpose
for which it was originally intended-- short scripts in buttons which
provide a bit of flexibility in determining which card to go to.
However, we've all seen Hypertalk pushed far, far beyond these
purposes, and the convoluted code that results.  I feel the same will
happen with a scripting language.  The language will be pushed to (and
beyond) its limits once people get a taste of what can be done.  While
it is easy for me as a programmer to overestimate the importance of
features useful for complex systems, I think it is important not to
ignore the consequences of omitting those features.  Apple has had
these problems in the past-- with the original flat file system, which
couldn't handle large numbers of files, and with appletalk, which
couldn't handle large networks.  I would hate to see Apple saddle
itself with a scripting language inadequate to the purposes people
will find for it over the next several years, especially since it may
be pretty resistant to change once it gets out and in use.

I do believe that scripting languges have to be interactive, and have
as uncumbersome a syntax as possible.  These are laudable goals that
Hypertalk meets pretty well.  But I think it has flaws, too, and I am
worried about it being put to yet another purpose for which it wasn't
designed.

>Note the crossposting: this is clearly of interest to
>c.s.m.programmer, and (IMHO) should be addressed by c.s.m.hypercard,
>since they're the ones with the most experience in HyperTalk.  Feel
>free to flame me if you take major exception.

There are far too many flamefests on the net as it is.  I prefer to
believe people can rationally discuss things about which they
disagree.  A foolish belief, I suppose...

>/============================================================================\
>| Francis Stracke		| My opinions are my own.  I don't steal them.|
>| Department of Mathematics	|=============================================|
>| University of Chicago	| Until you stalk and overrun,	     	      |
>| francis@zaphod.uchicago.edu	|  you can't devour anyone. -- Hobbes 	      |
>\============================================================================/

Doug Felt
Academic Information Resources
Stanford University
duggie@jessica.stanford.edu