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).