“In developing LISP our first goal is to describe a language which is as powerful as possible from the point of view of the programmer.”^1
Most programmers meet Lisp for the first time through some of the many quotes and aphorisms which, sometimes exaggerated, emphasize beauty, elegance and power of the language. Thus, for example, understanding of Lisp is called enlightenment; it is claimed that experience with Lisp programming makes a programmer a better programmer, even if one will never use Lisp in their entire life. The language is, as a joke of course, prescribed mystycal attributes; god (or gods) have written the universe in Lisp, and the Lisp community is described as a cult.
If a programmer decides to study Lisp, he will probably conclude that Lisp is a surprisingly powerful, but also an equally surprisingly simple programming language. Power is less questionable; if a language designer wishes to create a powerful language and invests enough time and effort, it is hard not to succeed. Simplicity is strange; it leaves the impression that Lisp is discovered and not created. A similar impression was left on members of the ARTIFICAL INTELLIGENCE project at U.S. MIT, who developed Lisp, imaginged as powerful, but practical and very complex language. To the contrary on what might be expected, Lisp was becoming simpler and simpler during the development. It was when the main designer, John McCarthy, wrote an article which introduced Lisp to the public that the project members recognized Lisp as “the subject of beauty” and worth studying for its own sake.
In the following decades, some members of the Lisp community have tried to make the language more general, more powerful, and simpler by a more accurate description of the ways in which programmers think. Other numerous attempts at advancements were driven by the desire to make the language more efficient, practical, popular, and even profitable. Even when compromises were made, designers have tried to identify, keep and perhaps also improve important qualities of the language. Lisp influenced other programming languages. To a lesser degree, other programming languages had influence on Lisp. Different motives, priorities and solutions have led to dissolution and framgentation of the community and to the development of numerous, quite different dialects, and communities gathered around those dialects.
In the context of a fragmented community and the existence of numerous interpretations of main ideas, if one wishes to understand Lisp, it is hard to avoid a historical approach, by the studying the ideas in the form they had when they evolved. As a rule, the most interesting period is the earliest one. This book tries to expose the evolution and development of Lisp’s main ideas during the first few years in which John McCarthy has led the language’s development.
There has already been efforts to systematically present main ideas in early period of Lisp. John McCarthy himself has given several presentations and has written several articles on the subject. Early Lisp history is more thoroghly explored by Herbert Stoyan. Beside Stoyans book Lisp, Anwendungsgebiete, Grundbegriffe, Gechichte from 1980, published only in German language and today hardly avaialable, all works about Lisp history are written in a form that assumes good Lisp familiarity. This book is written to be understandable by any programmer with little experience in any specific programming language.
During the writing of the manuscript for this book, the author has held several presentations in Hacklab Mama in Zagreb. Discussions with the Hacklab members had lots of influence on content and form of this book.
In original documents, the name Lisp was usually written in capitalized letters: LISP. In this book, the currently common and more practical form, Lisp is used. The original way of writing is kept only in quotes.
1 McCarthy, Programs in Lisp, AIM-012, 1959, p. 4