Cameron Laird's personal page on choosing a scripting language

Table of Contents

Origin

This page began as an elaboration of the cover article we did for SunWorld in October 1997. You're welcome also to read other articles we've written. Like that article (which itself deserves a number of amendments), this page considers the technical merits of only portable, freely-available, general-purpose scripting languages, such as Perl, Tcl, Python, Scheme, ...; comments on will appear as follow-ups later in 1998.

What is scripting?

John Ousterhout and Brent Welch, both of Sunscript, have written "Scripting: Higher Level Programming for the 21st Century" and "What is scripting?", respectively.

[also see ...]

[also see our article in the June 1998 Byte.]

Peter Salus explained the "History of Scripting" for the Sixth Tcl/Tk Conference.

Nicholas Petrely declared scripting fashionable in September 1998.

Bilateral comparisons

These have moved to their own page.

Miscellanea regarding choices between scripting languages

[ Python vs. Tcl; Scheme vs. Tcl; Java vs. Tcl (EET) ...]

[gluing]

[events vs. threads]

[languages; modes; DCOM; CORBA; ...]

[competition; co-operation]

Nat Pryce makes available a delightful work-in-progress, Patterns for Scripted Applications. "Patterns", here, is of course a keyword in the tradition of ...

Amendments to the SunWorld article

Typos

Editorial processes, like all others, have characteristic noise spectra. Among the items lost and/or created in the shuffle:

The perl-porters mailing list spawned a thread in reaction to the article. Readers also sent a pile of letters to the SunWorld editors. We reply to several publicly.

Language notes

A couple of readers complained that the article gave no direct reference to more information about Expect. I apologize. We also failed to give a pointer to Lua's home page, which it certainly deserves.

One gentleman argued that Haskell isn't a scripting language. Perhaps so; I understand the point. On the other hand, with availability of the Hugs implementation, it looks like scripting to me. I leave it to readers to decide for themselves. The same reader asked for links to Limbo and Taos.

Another reader made a strong pitch for the importance of FORTH and NetREXX. The former, for example, is the monitor language of a naked SPARCstation, some Macintoshes, and so on, while the latter anticipates and even surpasses in some regards the more recent Jacl. He's right; still, their use in 1997 is more specialized than for Perl, Tcl, and Python, and we made a distinction where we thought it would most benefit our readers.

MetaCard and other XTalk languages

Scott L. Raney of MetaCard Corporation wrote a long and generous response to the article. Among the points he asserted is that the MetaCard equivalent of the stopwatch example

is 22 lines (vs 19 for the Tcl version), largely because of the "on message, end message" handlers. But [it] is *much* more intelligible to non-MetaTalk users, which transfers in to a much shorter learning curve. Note too, that no "syntactic gymnastics" are required in the MetaTalk version as are required in the Tcl version (especially the use of the "format" function, some references to variables require a $ and some don't, implicit globals, and the tricky distinction between references to globals that *do* require global declarations vs those that don't).

Also note that there is no code to construct the UI: this is all done with MetaCard's IDT (you can write scripts to do UI construction, but you almost never have to). . . .

Mr. Raney goes on to detail several other features he has built into MetaCard which he asserts make it superior to Tcl and the other languages featured in the article.

Mr. Raney is a mildly controversial figure in comp.lang.tcl where he advertises the benefits of MetaCard ("Scripting, without all the syntactic gymnastics") too aggressively for the tastes of many. On the other hand, I appreciate his industry in making available to readers the MetaCard example above, so that you can do the comparison for yourselves.


from the Republic of Perl
Cameron Laird's personal page on choosing a scripting language/claird@phaseit.net