Lisping and Scheming

Lynn David Newton lynn.newton at gmail.com
Fri Jun 23 08:16:35 MST 2006


  >> Has anyone on this list been to the mountaintop
  >> and been permanently transformed by Lisp? Any
  >> advice for a re-learner like me, as to books,
  >> classes, resources? I can't go take a class at MIT
  >> -- I have to do it here. :-)

I've studied a bit of Scheme, and as a 19-year Emacs
user know Emacs Lisp well enough that I've written some
mode packages and many convenience functions.

Somewhere in this thread -- I seem to have flushed the
original -- someone asked if one would use Emacs to
edit Lisp. I can't think of any editing system better
suited to it, because after all Emacs is basically an
Emacs Lisp interpreter, completely programmable, with
its built-in functions ideally suited for problems
related to whacking text -- in every context, whether
that means coding in any programming language, writing
email, running shell commands, and so on. While Emacs
Lisp is much different from either Common Lisp or
Scheme, the syntax and methodology of these languages
are essentially the same. It doesn't take long to
absorb the Lisp way of doing things, just from using
Emacs on a day-to-day basis, which is quite different
from languages like C and Perl.

I've never studied Common Lisp, though it's still very
much alive and well and of great interest to me. If
you've done much searching on job sites, looking at job
descriptions that require various programming skills,
you will rarely ever see Lisp listed as a requirement
these days, although it's suitable for system
programming.

One of my closest friends teaches both operating system
design and Lisp at University of Ohio in Columbus. He
told me a couple of years ago that he designed a
semester project for his students to write an operating
system from scratch that boots directly into Emacs. Now
that would be fun to see! He never followed through on
it, though.

Scheme is an amazing strain of Lisp -- pure as
new-fallen snow. Its syntax can be learned in minutes,
including by persons who have never programmed in their
lives -- assuming they are of normal intelligence and
attuned to thinking about logical systems.

In 1991, while at Motorola, I had brief occasion to
work with some third party vendor software, including a
commercial implementation of Scheme, so spent some time
getting familiar with it. The number one source book on
the subject is "Structure and Interpretation of
Computer Programs" by Abelson, Sussman, and Sussman. 
During that period of interest the Government
Electronics Group at Motorola had an Artificial
Intelligence group working with this. They invited
Harold Abelson, who teaches at MIT, to give a most
interesting lecture, which I attended.

He began by explaining that Scheme was created at MIT
(mostly by his book partner Gerry Sussman, with Guy
Steele, who is the primary creator of Common Lisp --
originally defined in two or three pages extremely
arcane logical calculus) for the purpose of teaching
programming to first year students in computer
technology at MIT, where they learn both hardware and
software. (So they don't major in either Electrical
Engineering or Computer Science. I don't know what they
call it.) Some of their incoming students at that time,
as talented as they were, still had little or no
hands-on experience with computers. They needed a
language that was extremely simple to use, solid as a
rock, and that would not require students to have to
deal with stuff like compilers, learning chapter after
chapter of syntax and rules, editing, and so on. They
wanted them to be doing useful programming by the end
of the first class -- and they were.

Abelson demonstrated by means of some very plain
examples how extremely simple functions can be used to
layer systems of rapidly increasingly complexity --
which of course is a fundamental tenet of good
programming. You start with functions that return the
fibonacci series of a number and before you know it
you're writing robotic controllers.

I'm not aware, though, of much application software
that has been developed using any flavor of Scheme. 
(I'm sure there is some.) At Motorola we did have a
state of the art inventory control system written in a
commercial implementation of Scheme that was used by
the people on assembly lines to construct computers. 
I'm sure it soon became obsolete and replaced by
something web browser driven written in a high level
language such as Java.

Not long after the Abelman lecture, Motorola GEG
sponsored a three-day class in Scheme -- not something,
as noted above, that draws attention on a resumé or is
of much day-to-day use, but I was able to take it and
had enormous fun. It was taught by two of the heavies
in the world of Scheme from academia -- George Springer
and Daniel Friedman, both authors of important
textbooks on the subject, and professors at University
of Indiana. (The Abelson/Sussman book, while
definitive, assumes a fair level of competency with
calculus on the part of its readers after about the
first 50 pages, as its examples are centered on
functions that solve complex equations. Springer and
Friedman's books are a little more down to earth.)

Fifteen years later, I've had little or no occasion to
do anything with any form of Lisp other than Emacs
Lisp, but it is certainly an enjoyable language to play
with, and not difficult to get into.

-- 
Lynn



More information about the PLUG-discuss mailing list