Ellipsical Orbits

Paul Graham’s book Hackers & Painters (ISBN 0-596-00662-4) contains much wisdom, as you might expect from someone nerdy enough to co-develop the precursor of Yahoo! Store, but artistic enough to study painting in Florence. Whilst I think that he is over-optimistic over the power of spam filtering, I agree wholeheartedly with his stance on languages for software development.

Paul is a leading exponent of one of the oldest programming languages, Lisp. Although its name was derived from list processing, its predilection for parentheses often results in it being claimed as an acronym for lots of infuriating superfluous parentheses, or thereabouts. At first sight, code fragments such as
(and (= (car x) (car y)) (or (not (cdr y)) (bigger (cdr x) (cdr y))))
confirm that as a fair judgment, but Lisp is incredibly powerful and flexible. In the right hands it is probably the most expressive programming language, readily adapted to fit almost any circumstance.

Until the advent of OS X, Lisp – now blossomed and standardised into Common Lisp – was particularly well supported on the Mac. Apple had purchased Coral, developers of Common Lisp for the Mac, when assembling its Advanced Technology Group East in Cambridge, Massachusetts, in 1989.

A few blocks away from the brilliant minds of MIT, Ike Nassi, Larry Tesler, and other Apple illuminati turned Macintosh Common Lisp (MCL) to develop Dylan, a new dynamic language intended to empower Macs and the palmtops that became Newton. Running short of research investment and disappointed in the lack of products beyond MCL, Apple shut the Cambridge site in 1995, passing its Lisp to Digitool, Dylan to the PC, and giving Newton a different programming language derived from Sun’s Self.

Sadly Newton’s star shone bright but very briefly back in 1993-8, but Apple learned a great deal which helped it make the iPad successful more than a decade later. By that time Dylan and Self had gone to rest in the burgeoning heaven for dead programming languages, but Lisp lived on.

Apple’s flagship software development platform for Mac OS X, Xcode, has never aspired to host Common Lisp, and maintaining support for Java proved tough enough (and has now effectively been abandoned). OS X thus poses the paradox that its Unix internals make it easy to port language compilers and development tools to the command-line, but its other architectures make it very hard to turn those tools into first class development environments.

Apple has meanwhile channelled its resources into making Xcode’s Objective C good enough to keep its own, and more importantly Adobe’s, developers happy in massive commercial projects like Final Cut Pro and Adobe’s CC. It has also added Swift, now going Open Source and promising to flourish.

Anyone wanting to develop in other languages has to work hard to use the Xcode development environment, and with the small market for third-party developer tools, the investment required to deliver a complete development environment is generally far too great.

As Digitool’s support for MCL waned, I was looking for an alternative to allow me to code in Lisp rather than Objective C, but still to access the full features of OS X. Being an academic rather than money-spinning language, there are plenty of open source implementations of Lisp, some of them of very high quality. Sadly only one of them, OpenMCL, spun out when Digitool was taking over MCL, had half decent access to the full trappings of OS X, and that has now evolved into Clozure CL (CCL), detailed here.

Thankfully I have been rescued – albeit at a cost – by LispWorks’ fine commercial offering.

Here I see a very strange quirk of fate, as curious and closed as a crop circle: in 1995, Apple passed the mantle of Dylan on to Harlequin, based in Cambridges on both sides of the Atlantic, who promptly added insult to injury by offering it for PCs but not Macs, despite developing the ScriptWorks RIP for pre-press.

Harlequin’s other major software product was Common Lisp, which survived receivership and passed first to Global Graphics, then Xanalys, and has now become the Lisp development environment of choice for OS X. There are times when the computer industry seems to be scripted straight out of David Lynch’s movie, Mulholland Drive.

Updated from the original, which was first published in MacUser volume 23 issue 12, 2007.