?

Log in

No account? Create an account
Lord Yupa

February 2010

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28      
Powered by LiveJournal.com
Danger Mouse

Lisp/Scheme Information.

I wrote this for someone else, who was curious as to what Lisp (and the Lisp dialect, Scheme) were based on, what they were used for, etc.

If you'd like to see a quick introduction to Lisp/Scheme, what it is, how it's used, etc, take a look. ;-)

Lisp isn't really based of anything, at least, not off of any other programming languages. It is based on the concept of the Lambda Calculus, which is something of a way to describe programs in a strictly logical and mathematical way.

Now, as to why you haven't heard of it before, my guess is because you are either not a University Computer Science graduate, or you haven't branched into functional programming. Most universities will cover it at least very briefly in some sort of programming languages class, though rarely do they do it justice.

As for functional programming, it's a programming paradigm, like imperative or object oriented programming. It tends to be very powerful, often makes use of constructs which are terse (fewer lines of code to do the same thing than required in other languages) and generally makes extensive use of recursion.

Lisp is very interesting, however. Even though it is usually thought of as a functional language, it actually provides excellent support for functional, imperative, and object oriented programming. In fact, many people think the Common Lisp Object System (CLOS) is one of the best Object Oriented Programming implementations available. It was also the first object oriented language that was standardized (by ANSI or ISO, I don't remember for sure which one).

It's also been around for quite a while. In fact, Lisp is one of the oldest programming languages still in somewhat common use today. (The only older language being Fortran, which predates it by about 5 years, as I recall.)

If you've never had any experience with functional programming, I strongly encourage you to investigate and study[1] it a little, even if you never really use it, because you will learn a great deal about programming in general for your time invested.

Now, as for what applications have been written in it, the canonical example is GNU Emacs. At it's core, Emacs is basically a lisp interpreter, and most of the editor is then written in Lisp.

One fairly well known application, in some circles, is the Viaweb software that is used to power Yahoo!Stores (it allows people to create their own Yahoo powered stores for selling things). One of the co-authors wrote an article explaining why they used Lisp and how it helped them.

Another very interesting application is called Aaron, and discussed in this Wired article here. Aaron is a program that's been in development for over 20 years, and is an attempt to design a "creative" program. You see, Aaron is an artist. ;-)

While applications that are written entirely in Lisp are perhaps not as well known, one of the most common places to find Lisp is as an extension language for other programs. Here are a handful that make impressive use of Lisp:

The GIMP uses Scheme, a dialect of Lisp for it's Script-Fu, which can be used to programmatically execute anything that can be done by hand.

Autodesk, the makers of the industry leading CAD software AutoCAD use their own dialect of Lisp, called AutoLISP, for programming and customizing the AutoCAD software.

Siag Office is a free small, Open Source, and very impressive, Office Suite making extensive use of Scheme. (SIAG == Scheme In A Grid). It includes a very cool Spreadsheet program, as well as others, and is highly customizable.

GnuCash makes use of the Guile library to provide Scheme as an extension and scripting language for the application.

Speaking of Guile, Guile is the official extension language library of the GNU project. Using Guile to provide Scheme scripting, you can add support for scripting and extensibility to any application. Guile is used in many applications including GnuCash (mentioned above), the SCWM Window Manager, the TeXmacs editor (integrating Tex support into an Emacs like editor), and many others.

One last example is the Sawfish Window Manager, which seems to be among the most popular Window Managers around these days. It makes use of an Emacs-ish philosophy, having a very small core program, including a lisp interpreter, and implementing most of its feature set on top of that with lisp.

This is, of course, not an exhaustive list of applications written in, or making use of, Lisp, however I think everyone here will prolly recognize a few names there. ;-)

[1] If you're interested in learning more about Lisp, I strong suggest you take a look the book Structure and Interpretation of Computer Programs. The full text is available online at the link here, and it is one of the best books ever written about Computer Science. It's also used as an early CS text book at MIT.

Other books available online about Lisp/Scheme are The Scheme Programming Language, and How to Design Programs.

Lastly, there is the Teach Scheme project which has information on Scheme and it's use in introductory computer science classes.

If you want a solid platform to play with Scheme/Lisp, I urge you to try out DrScheme. It provides a full environment including editor, debugger, GUI library (and others). It's also written entirely in Scheme

Comments

One thing...

...looks very nice, with some good references, but it could stand a little <lj-cut> action.

Re: One thing...

D'oh!

Good call.

I was copying it over from where I'd originally wrote it, and didn't think to do that. I'll fix it in a moment. ;-)