Common Lisp

What is Common Lisp?

This is a modern definition of one of the oldest computer languages: Lisp. While it's name is a modest acronym (List Processing), it's a far more powerful language than almost any other. It's original purpose was to perform symbolic computations at a time that computers were thought to just do arithmetic (which is true, but most everyone doesn't know how powerful arithmetic really is anyway). It became the assembly language of Artificial Intelligence (AI) research and later an implementation language for very sophisticated applications - even in today's Internet-heavy world.

Lisp is of course known for its use of (parentheses) - lots of them. One of the unofficial meanings of Lisp is Lots of Insipid Silly Parentheses. But it has a refreshingly simple syntax that takes hardly a moment to understand. The trick is to have an editor that can count parentheses. Hardly different from today's editors that indent, change color, understand (the many) language constructs, fill in the blanks, and even match braces ({}). Remarkable.

Common Lisp is an industrial-class language, capable of implementing the most sophisticated, modern applications. It's a BIG language built on a small set of simple and remarkably powerful ideas (kind of like Unix). Programming it well requires a shift in how a programmer approaches building an application. But not a bigger shift than that required of a programmer to become proficient at Object-Oriented programming - the great savior of today.

Origins

Lisp is the second-oldest programming language (excluding assemblers), right behind FORTRAN. Both were out-growths of the early days of computing - the 1950's. FORTRAN did arithmetic calculations, and Lisp dealt in abstractions - symbols and lists. In 1957, John McCarthy? (then at MIT) published a seminal work - not a paper (of which he published a great many), but the manual for Lisp 1.5. This was the first practical version, and it became the original shoot from which all of the functional languages evolved - including a multitude of dialects of Lisp. It became the researcher's standard implementation language.

In the early 1980's, computers were becoming powerful enough to enable the application of AI research to real-world problems. In other words, AI was just starting to come out of the ivory tower. And as anyone who has been in both worlds knows, solutions to real-world problems require big and complex tools. And it takes a lot of trained programmers to implement the nitty-gritty details of an enterprise application. Lisp seemed at the time to be the logical choice (imagine trying to do this in COBOL). But which Lisp? The research community had fractured Lisp into a myriad of clones, all just a little (and some big) different. Another MIT researcher, Guy Steele, stepped up and declared that he would create a new definition of Lisp that would take the best and most common features of the various Lisps and beef it up to handle industrial requirements. And he did it in a way reminiscent of the open-source processes we have now. The result (funded and supported by DARPA) was Common Lisp version 1.

While very successful at the time, the computing community had grown to include object-oriented techniques. And the needs of enterprise computing needed even more power. And, amazingly enough, there turned out to be bugs in the CL version 1 specification. In response, Guy re-worked the specification, adding sections on Exceptions, Loop macro, and pretty printing. The major addition was the Common Lisp Object System.

What is it good for?

Common Lisp has been called the assembly language of AI - and for good reason. Lisp has often been the vehicle for trying new computing techniques and developing new language capabilities. Common Lisp has also proven its ability to support modern, Internet-based applications such as Orbitz and Yahoo Stores.

References

Related topics: CLforJava, Java

Topic revision: r6 - 2009-03-20 - 14:30:37 - MadelineWilliams
 
Home
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback