Took the AppleScript MacLab (2 hours) and while the instructor may be “all that” in Automator and PeachPit circles, the class was rambling, undirected, and not very useful. Tried to cover waaaaay too much with nowhere near the depth even a beginner would need to get started. I could learn far more spending two hours poking around here and reading the tutorials here.
Also took the UNIX Scripting MacLab (2 hours) and it didn’t fit the description. I was looking for a very basic intro to UNIX command-line scripting…introduction to grep, awk, sed piping, etc. Turns out it was 4 hours of material tried to be crammed down to 2 and was aimed more at systems administrators coming from a UNIX-centric background and “having to work with” Macs. Meant I was 25-50% lost most of the two hours.
He did give a nice quick overview of the various shells and scripting languages, but his overview of AppleScript was aweful. Even someone like me realized his informaton on AppleScript was a few years out of date, he used bad terminology (they are handlers not subroutines or functions for crying out loud, for a start), and he never once mentioned the “do script” command (which given that he covered bash, perl, etc. would seem a natural thing to mention). I found that you could execute AppleScript from shell (via osascript) kinda ironic.
Both classes I got something out of in my own peculiar way, but overall they were quite aweful.
And the Expo itself? I think they named it wrong, it was really iPodWorld or iPhoneWorld. Also disappointing unless you live a trendy, “mobile lifestyle.”
The big advantage of AppleScript syntax is that it makes it easy to get a broad idea of what an existing AppleScript does, even if you don’t know the AppleScript language in particular or programming in general.
The big disadvantage of AppleScript syntax is that it makes it very difficult to form an accurate understanding of how it actually does it. For example, is ‘foo bar’ a property name, a constant name, a command name, a command name followed by a property/constant/variable name, or something else again?
With more conventional language syntaxes, you have the opposite situation: in order to make any sense at all of an existing script, you first have to learn to read the syntax and know some basic programming. OTOH, once you’re past that initial hurdle, it’s easier to understand exactly what makes it tick, e.g. x.foo_bar is a property name, :foo_bar is a constant, foo_bar() is a command, foo(bar) is a command name followed by a variable name, and so on.
The upshot of this is that AppleScript has a lower barrier to entry but higher cost of use compared to other languages. It’s a trade-off, but one that probably fits quite well with the needs of many AppleScripters, who write relatively small programs on an irregular basis. A high cost of entry will be harder to justify if you don’t actually use the language very often. OTOH, if you write large programs on a daily basis then what matters most is long-term productivity, and you’ll recoup the time taken to learn a language fairly quickly by comparison.
Funny, your description is why I chose FaceSpan over Apple’s application development environment…though nobody here ever seems to get that.
I think language designers have fun inventing syntax and rules only the elite will understand, which keeps their club exclusive. Which is probably why I have some attachment to AppleScript…it speaks to the less-excluding side of me, the ease-of-use-that-is-Macintosh. I’ve used my share of cryptic and geeky languages, even before procedural languages, and I’m glad to be done with them. Same way I’ve used my share of operating systems and machines that needed too much tweaking all the time, and glad I found the Macintosh all those years ago.
Maybe what we need is some programming-language designer who is not so prideful of some existing language to meld the best aspects of AppleScript with something like Perl. Or just wait for AppleScript so slowly evolve (and it has, albeit VERY slowly).
For the record though, length of script has less to do with it that frequency. I write scripts relatively infrequently, but my “proudest creation” is Clorox File Repair…1400 lines of AppleScript application. You can write 'em long n-useful if you need to.
I think what strikes me odd is that it adds little periods and extra punctuation to what otherwise would be straightforward operations. Without delving deeper (no plans to learn Perl…PHP would be my next choice…), it seems counter-intuitive. Assuming these “accents” have some meaning to the learned, but still odd. I mean “5 plus 6” is easy, but why “5.plus 6” (note the period)?
Is it really hard to understand what the Ruby code is doing?
One of the weaknesses of AppleScript is the difficulty to
transition from it to another language. Most of the other
languages have so much in common it becomes easier to move to a new
language. A few hours and you learn the syntax and after that begins
the long journey of learning the libraries the language has to offer.
Once you make the leap and learn another language, no matter which one
it is, you will start to see where AppleScript falls short.
I do want to say though that there is absolutely nothing wrong with
only knowing AppleScript. For many this is all they will ever need.
Which is true of any programming language…once you’re “in the know” it isn’t “hard” per se.
Not per se, but it’s still not human-readable in any quick, easy way. As someone whose job it is to convey information quickly and easily, Ruby falls short in all categories. Better than some though, I’ll admit. Glad the Ruby website set me straight on that count, unlike a certain MacLab instructor.
I agree, except I did it the other way around…I transitioned from the other languages to this one.
I find every programming language falls short in one way or another.
I just see the loss of potential…so many “non-programmers” have great ideas but lack the entry point to execute them. And so many bad, inefficient programmers who only get saway with it because their managers don’t know any better (modern OS’s and programs are rife with this idea).
Just a peeve of mine…been my observation that making it more accessible, like AppleScript tries to, is more the right direction than other languages, that’s all.
Only for certain definitions of “human-readable”. As mentioned previously, what conventional syntaxes lose in high-level readability (what it does) when compared to AppleScript, they gain in low-level readability (how it does it). e.g. Compare:
foo bar baz zim
In order to understand the exact mechanics of any given AppleScript, you need good, detailed knowledge of every application and osax dictionary involved, and then work back from that to determine what’s a command, what’s a property, what’s a constant, etc. To understand the exact mechanics of any given Python/Ruby/etc. script, you just follow the syntax. e.g. The above Python code is a call to a function named ‘foo’, passing the value of variable ‘bar’ as a direct parameter and the value of variable ‘zim’ as a named parameter, ‘baz’. The above AppleScript is completely meaningless unless interpreted with reference to additional, external information. Don’t underestimate the value of a regular and unambiguous syntax, just because it doesn’t look attractive.
There is plenty of work being done on end-user programming (do a web search for the term). It just doesn’t get much attention in major OS distributions, which is a pity, but I can imagine it’s a tough sell. For my money, an environment more akin to MIT’s Scratch or Carnegie Mellon’s Alice would be much more appropriate for non-programmers than the current AppleScript language, albeit redesigned as a more adult-oriented, keyboard-driven tool (a lot of end-user programming tools tend to be aimed more at kids).
Agreed, though with the caveat that the biggest hurdle for novice programmers (particularly the self-taught ones) isn’t the lack of tools, it’s the absence of thinking skills that’d allow them to employ those tools effectively. Their ambitions often tend to outstrip their abilities in fairly short order, but if they aren’t even aware of all the tools and techniques that are at their disposal then how can they know where and how to use them? It’s like trying to express yourself as an artist when the only tools you have are pencil and paper and you’ve never read a book on art theory or history in your life. Sure you can make marks with that, but how much more are you missing out on?
p.s. Craig might like this: here’s a blog I ran across the other day that has a bunch of postings on using Ruby+appscript to do neat stuff like create NetNewsWire usage graphs: http://mph.puddingbowl.org/2009/01