Thursday, September 15, 2005


An analogy - Lisp as Graffiti

The Palm kind, that is.

Whining about Lisp's syntax is a favorite sport on the blogs, especially among students that have a Lisp assignment in a class. I look at it the same way Jeff Hawkins looked at Grafitti when developing the Palm (from a Fast Company article):

"People are smarter than appliances," Hawkins told his colleagues. "They can learn.'' He recalled a lesson from his Berkeley days: "People like learning. People can learn to work with tools. Computers are tools. People like to learn how to use things that work."

It's good to make things easy for the user, but there comes a point where if the user can compromise a little in one area they can gain a lot in others. For the original Palm, learning Graffiti meant the PDA could fit in your pocket, be cheap and run on two AAA's since the software could be simplified enough to fit in the restrictions of the machine. For Lisp, making a small change, going to prefix notation and "all those parentheses" gains you code as data as code, macros that match the syntax of the language, and everything else you've been reading about.

If you're a whiny student who doesn't want to believe me, try believing Robert Floyd, from his Turing Prize lecture (from here via here):

“Contact with the programming written under alien conventions may help. Visiting MIT on sabbatical this year, I have seen numerous examples of the programming power which Lisp programmers obtain from having a single data structure, which is also used as a uniform syntactic structure for all the functions and operations which appear in programs, with the capability to manipulate programs as data. Although my own previous enthusiasm has been for syntactically rich languages like the Algol family, I see now clearly and concretely the force of Minsky’s 1970 Turing Lecture, in which he argued that Lisp’s uniformity of structure and power of self-reference gave the programmer capabilities whose content was well worth the sacrifice of visual form.”

You may be interested in this essay by VisiCalc co-inventor Dan Bricklin:

The ``Computer as Assistant'' Fallacy
Learning to use things that are hard is part of being human.

I agree with this, but only so far as the things which are still hard are the important part. A tool that's equally powerful as another but makes the most common usage easier is still a better tool.

For a while I was deciding between OCaml and Common Lisp for programming. Both of them may be (about) equally powerful, but I thought CL was easier to use for both syntax extension and in the combination of FP and OOP.
Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?