May 98 MacTech Online
Volume Number: 14
Issue Number: 5
Column Tag: MacTech Online
Subject to Interpretation
by Jeff Clites online@mactech.com
The Other Kind of Scripting
Here's the deal: Scripting languages are becoming a big thing these days, and the
Macintosh is by no means being left out in the cold. Scripting languages integrate with
Java, complement Java, provide alternatives to Java, and stand on their own. We're
going to use this month's issue on Java as a jumping-off point for learning about some
lesser-known languages for the Mac.
What Scripting Languages Are Not
Scripting languages are not newcomer replacements for AppleScript or Frontier.
"Traditional" scripting languages (if there is such a thing) developed in the Unix
world. Like AppleScript, they tend to stitch together pieces written in languages such
as C and Pascal, but there is an important distinction: whereas AppleScript operates
primarily on applications, these scripting languages operate primarily on data. They
may rely on components (analogous to Scripting Additions, or OSAX), and they can be
made to interface with AppleScript, but they are a different breed, grown up with a
different focus in mind.
Scripting languages are usually interpreted, meaning that they run directly from
human-readable programs, rather then first being compiled into machine-executable
form. As a result, they require an interpreter to run -- the analog of the Java virtual
machine. To an even greater extent than Java, this allows platform independence. For
those who are not impressed by this, or who worry about execution speed, many
scripting languages are developing compiled implementations.
To get started, check out the excellent article Choosing a Scripting Language on the
SunWorld site, which does a great job of introducing the big players, Perl, Tcl, and
Python, and of getting the reader excited about them. Then, check out Scripting: Higher
Level Programming for the 21st Century, which explains in detail how and when
scripting languages can be more powerful and convenient than system programming
languages, like C++ or Java.
Choosing a scripting language - SunWorld - October 1997
http://www.sun.com/sunworldonline/swol-10-1997/swol-10-scripting.ht
ml
Scripting: Higher Level Programming for the 21st Century
http://www.sunlabs.com/~ouster/scripting.html
Perl
Perl (the Practical Extraction and Report Language) began as a language for
manipulating text and extracting information from it, sporting such power features as
built-in regular expression (a.k.a. grep) capabilities, and accordingly has become
popular for writing CGI scripts to generate web pages on the fly. It is probably the
most well-supported of the scripting languages on the Mac, with a CD and a
forthcoming book from the Free Software Foundation, which hosts the MacPerl pages.
Perl could be a nice teaching language -- the MacPerl book aims to serve as a guide for
those learning Perl as their very first programming language, as well as introduce the
language to experienced programmers. Don't let Perl's text-based roots put you off --
they are only one of its strengths. It is a large language with an emphasis on
practicality and the motto "There's More Than One Way To Do It.
The MacPerl Pages
http://www.ptf.com/macperl/
The www.perl.com Home Page
http://www.perl.com/
The Perl Institute
http://www.perl.org/
Tcl/Tk
Tcl (the Tool Command Language) is being actively developed by Sun as a scripting
companion to Java, complemented by Tk (the Tool Kit) which provides it with a GUI.
Tcl is completely untyped -- "everything is a string." This may horrify long-time
Pascal or C programmers, but it is a strength -- it gives Tcl a unique flexibility and
an amazingly readable style. It follows Perl in its level of Mac support, as Sun has a
separate page devoted to Tcl/Tk for the Mac. They even have a browser plugin which
allows you to run Tcl scripts within web pages, complete with Tk interfaces. Of
course, Tcl/Tk can readily be used in Java-free contexts, where it started. A great
example is the popular shareware text editor Alpha, which uses Tcl as its internal
scripting language, allowing users to customize Alpha by writing Tcl scripts. For
instance, you can teach Alpha to syntax-color a new language; this is actually an
excellent way to start experimenting with Tcl.
Sun's Overview of Tcl/Tk
http://sunscript.sun.com/about/
The Macintosh Tcl/Tk Project
http://sunscript.sun.com/mac/
Alpha Home Page
http://www.ict.uni-karlsruhe.de/Rutz/Apple/alpha.html
Python
Python (named, yes, after Monty Python) in many ways sits at the intersection of
scripting and system programming languages. It is dynamic and object-oriented -- the
types of variable are not determined until the last possible moment during execution,
and programmers still stinging from the demise of Apple's Dylan project will be happy
to hear that as in Dylan, everything in Python is an object. It is well suited to
metaprogramming, easily generating executable code on the fly. It is also said to excel
at group projects: it's highly modular, scales well, and its syntax makes it easy for one
programmer to read another's code. In almost all ways, Python is a small language, but
it packs power -- it has exception-handling facilities and high-level data structures,
and the latest release has added Perl-like regular expressions. There is even JPython,
a Java-based interpreter. The Python Language Home Page is the place to start. Also be
sure to check out the SunWorld article Getting started with Python, which serves as a
nice introduction, and then visit the Python Compared to Other Languages page to gain
some perspective.
The Python Language Home Page
http://www.python.org/
Jack's MacPython Page
http://www.cwi.nl/~jack/macpython.html
JPython: Seamless Scripting for Java
http://www.python.org/jpython/
Getting started with Python - SunWorld - February 1998
http://www.sun.com/sunworldonline/swol-02-1998/swol-02-python.html
Python Compared to Other Languages
http://www.python.org/python/Comparisons.html
Just Do IT!
Scripting languages generate enthusiasm, and for more than just their power. They all
reflect the personalities of their inventors, all are still evolving, and all are free
(including the source code). Spend and hour or two playing with one -- it will be a
pleasant experience. As you do, check out the following personal pages of a few Mac
scripting experts, where you will find powerful tools as well as useful examples.
Mizutori Tetsuya's Scripting World (AppleScript and Perl)
http://www.bekkoame.or.jp/~mizutori/script/index.html
Vince's Tcl-Tk page
http://www.fas.harvard.edu/~darley/Vince-TclTk.html
Joe's Python Code
http://www-acs.ucsd.edu/~jstrout/python/index.html
This is an especially important month to visit our companion web pages at
http://www.mactech.com/online/, where these links are supplemented by a wealth of
other links about Perl, Tcl/Tk, and Python, as well as other programming resources.