DekGenius.com
[ Team LiB ] Previous Section Next Section

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.

    [ Team LiB ] Previous Section Next Section