It is difficult to find an exact date for LISP’s birthday. It wasn’t so much born in an instant as it was gradually dragged out of the primordial slime during the heady days of late 50s computer research. What is known is that John McCarthy, LISP’s “father”, published a report in October 1958 about his new programming language aimed at providing artificial intelligence capabilities on the IBM 704 mainframe computer. That report, one of a series, was the first one to use the name LISP.
OOPSLA, a major annual conference on object-oriented programming, has decided to celebrate LISP’s 50th birthday on 20 October 2008. Practically everyone at that event is likely to be smarter, geekier and possibly even more pedantic than me. So for now I’m going to go with that date and raise a glass to LISP and John McCarthy in one week’s time.
John Walker’s almost-accidental but still inspired decision to add LISP to AutoCAD was, in my opinion, the most significant feature addition in AutoCAD’s history. There were many other feature additions without which AutoCAD would be a joke (e.g. blocks, undo/redo, dimensioning, polylines) but they were always going to happen anyway.
Adding LISP wasn’t like that. It wasn’t inevitable. It was an excellent example of Walker thinking outside the box, and it was the one thing that raised AutoCAD significantly above its competitors (yes, it had serious competitors once) at a time when the PC CAD market was still up for grabs.
The genius of this move was that instead of attempting to fill AutoCAD’s many feature holes, Autodesk could provide the tools that would let the users do that for themselves. The language was an ideal fit for a number of reasons, and users in droves started hole-filling with a vengeance. Without that boost to AutoCAD’s open architecture, the PC CAD market would have been a very different place. Autodesk itself may not even have survived into the 1990s, and I could have been writing this blog about Versacad, Computervision, or some other competitor.
Today, despite an unfortunate history of long periods of neglect from Autodesk, LISP remains the language of choice for most of my AutoCAD-related programming needs. There are exceptions, but I’ll usually first see if a given job can be done in LISP. If it can’t be done easily and well in LISP, then I will consider using one of the other available languages. For the sort of work I usually do, that doesn’t happen very often.
Why? I’ll explain my reasoning in a later post.
I couldn’t say if LISP was the best programming model to add to AutoCAD back then. I can say that they did a superb job of it.
AutoLISP added levels of customization that we still don’t often see, and the implementation was superbly done.
With a little experimentation, I had routines that loaded a text file into annotation, built and drew curve tables for subdivision plats (including key symbols at the curves), and labeled lines plat-style. This was while I was still learning AutoCAD at a trade school. In 1986.
Without AutoLISP we might not even have Civil 3D today – the Softdesk/Land Desktop routines that evolved into C3D could not have been done back then without AutoLISP’s level of access to the application and the live drawing data.
Even original, write-code-in-notepad AutoLISP still works today, and sometimes the solution is up and running before any of the other programming models can get their IDE up.
😉