5.3 The "English-likeness" Monster
As we have already seen,
AppleScript is
English-like. Its vocabulary appears to be made up of English
imperative verbs, nouns, prepositional phrases, and even an
occasional relative clause.
Whether this English-likeness is a good thing or not is debatable. It
is probably responsible for attracting users who would otherwise be
frightened by the rigid-looking pseudo-mathematical terseness of a
language like Perl, with its funny variable names, its braces and
brackets and semicolons. Personally, though, I'm not
fond of AppleScript's English-likeness. For one
thing, I feel it is misleading. It gives one the sense that one just
knows AppleScript because one knows English; but that is not so. It
also gives one the sense that AppleScript is highly flexible and
accepting of commands expressed just however one cares to phrase
them; and that is really not so. This sense is
reinforced by AppleScript's abundance of synonyms.
For example, instead of saying:
if x <= y
you can say:
if x is less than or equal to y
You are also allowed to use the word
"the" wherever it feels natural.
And nouns even come with plurals:
get the first word of "hello there"
get the words of "hello there"
Nevertheless, none of this is due to AppleScript's
knowing any English. AppleScript actually has no natural language
intelligence at all. AppleScript is every bit as mathematically
structured, rigid, and unforgiving as Perl or any other computer
language. If you step outside its rules by a tiny fraction of an
inch, AppleScript slaps your hand just as any computer language
would. The trouble here, I suggest, is that it was
AppleScript's English-likeness that tempted you
(subconsciously perhaps) to break the rules in the first place.
For example, later in the book I will have to leap up and down and
wave my arms wildly to warn the reader not to confuse these two
constructs:
get words 1 thru 4 of "now is the winter of our discontent"
get text from word 1 to word 4 of "now is the winter of our discontent"
The natural tendency to meld these two constructs (which do very
different things) into an illegal blend such as "get
words 1 to 4" or "get text from
words 1 thru 4" is almost overwhelming.
That's because in English these notions are too
similar to one another. If they were represented by harsh
mathematical symbols, there would be no danger of confusing them; but
because they look like English, the part of one's
brain that speaks English takes over and tries to soften the
boundaries between these expressions in the same way that the
boundary between them is soft in the world of natural language.
It is often the case, too, that AppleScript vocabulary looks like a
certain English part of speech when it can't in fact
be used as that part of speech would be. For example, in the Finder
there is an application file property called has scripting
terminology, which naturally leads one to try to say
something like this:
if theApplication has scripting terminology
That won't compile; rather, you have to say this
very un-English-like phrase:
if has scripting terminology of theApplication
Another problem with AppleScript's English-likeness
is that with so many English words floating around the language, it
can be hard to think up a meaningful variable name that
isn't already in use for something else. The
following lines of code are all illegal:
set name to "Matt"
set feet to 7
set count to 9
set center to 1.5
The trouble here is that so much of the English language has been
reserved for AppleScript's personal use.
Then there is the fact that English is verbose. In most computer
languages, you would make a variable x take on the
value 4 by saying something like this:
x = 4
In AppleScript, you must say something wordy like one of these:
copy 4 to x
set x to 4
Doubtless not everyone would agree, but I find such expressions
tedious to write and hard to read. In my experience, the human mind
and eye are very good at parsing simple symbol-based equations and
quasi-mathematical expressions, and I can't help
feeling that AppleScript would be much faster to write and easier to
read at a glance if it expressed itself in even a slightly more
abstract notational style.
|