Why we use Common Lisp
Introduction
Many students ask the question why we use Common Lisp in teaching
programming. Here, we try to answer that question.
There are many reasons for students to question the choice of Common
Lisp. We therefore structure this section around different reasons
students give for not wanting Common Lisp.
The industry argument
The argument
Common Lisp is not used in industry (or rather, Common Lisp is never
seen in the advertisements for employment). The university should
teach programming languages that are actually used, so that students
have useful knowledge when they graduate.
The refutation
First, Common Lisp is used. Several major commercial
software packages are written in Common Lisp or some other Lisp
variant. It is hard to know in what language commercial software is
written (since the user should not have to care), but there are a few
that are well known. Interleaf, a documentation system, is written in
Lisp. So is AutoCAD, a system for computer-aided design. Both are
major applications in their domains. While not a commercial software
system, Emacs is an important system written in Lisp.
But even if Common Lisp were not used at all in industry, this would
not be a good argument. The level of sophistication of the software
industry is quite low with respect to programming languages, tools,
and methods. The university should teach advanced languages, tools
and methods with the hope of having industry use them one day, as
opposed to teaching bad ones that happen to be used today. Students
who want training in particular tools that happen to be demanded at
the moment, should quit the university and apply for more specific
training programs.
Besides, whether a language such as Common Lisp is used in industry
depends a lot more on the individual student than on industry. There
is a widespread myth among students that industry is this a monolithic
entity whose tools and methods cannot be altered. In reality,
industry consists of people. Whatever industry uses is whatever the
people working there use. Instead of refusing to learn sophisticated
tools and techniques, the student can resolve to try to become one of
the forerunners in industry after graduation.
The readability argument
The argument
Common Lisp notation is unnatural, which makes it hard to understand.
Better, then, to use a more natural notation that more people can
understand, and that is easier to learn.
The refutation
Depending on your definition of natural either all notations
are natural, or all notations are unnatural. The correct term would
be familiar, but then the argument becomes an argument for
using only familiar notations. University education is not about
requiring the smallest effort possible on the part of the students.
Instead it is about teaching tools and methods that allow the student
to become more efficient once knowledge about these tools and
methods has been acquired.
Usually, the learning period for an advanced tool is relatively short
compared to the savings in time obtained by long-term use later on.
In the case of Common Lisp, the increased efficiency compared to other
languages is so great that it easily compensates for any learning
period.
There is widespread belief among students that it is intrinsically
hard to count parentheses in Lisp. In reality, Lisp users do not
count parentheses. A sophisticated text editor such as Emacs assists
the programmer with parenthesis matching, and a human reader of Lisp
code looks only at the indentation, never at the number of
parentheses.
The efficiency argument
The argument
Common Lisp is an interpreted language, and thus slow. One should use
as efficient languages as possible, so Common Lisp is out of the
question.
The refutation
First of all, Common Lisp is not an interpreted language. In
fact, there is not even a reasonable definition of ``interpreted
language''.
Second, most Common Lisp compilers are capable of generating very
good, very fast code. Obtaining fast code may require the user to add
declarations that assist the compiler in optimizing the
code, so fast object code is not obtained from naïve source code.
Also, the students have a tendency to exaggerate the importance of
speed. There are quite a number of applications that use very slow
systems, such as Perl, Shell, Tcl/Tk, Awk, etc. It is simply not true
that maximum speed is always required.
The graphics argument
The argument
Common Lisp does not have advanced graphics functions. Applications
with graphic user interfaces are more and more common, so Common Lisp
cannot be used for modern applications.
The refutation
Common Lisp has perhaps the most advanced library for writing graphic
user interfaces in existence. Its name is CLIM (Common Lisp Interface
Manager), and can be bought from major vendors of Lisp technology.
Unfortunately, there is not yet a free version of CLIM available
(although it is being worked on).