One of my courses this semester is Programming Languages, covering their fundamental histories and differences. Something I direly need to open my eyes and jolt me out of Java fanaticism. I particularly enjoyed playing around with Scheme, a dialect of Lisp. Rather than selfishly leaving the precious resources somewhere in a dark corner, I wrote this article to help get you started with Lisp as well.
Ridiculously Brief Introduction to Lisp
If you’re not familiar with Lisp, it’s a functional programming language whose name stands for LISt Processing. It was created by John McCarthy in 1958, mainly to serve as a programming language for artificial intelligence. It was and is still used in various AI research. What’s perhaps the most prototypical example Lisp’s power is that the programs themselves can write their own, new code — which has obvious benefits for AI. The language is often symbolized with the greek lowercase Lambda letter, seen above, due to the fact that it’s based on Lambda Calculus.
MIT Lectures on Programming and Lisp
First up, courtesy of MITs excellent CSAIL and a part of MITs free OpenCourseWare collection, we get free access to course materials for Structure and Interpretation of Computer Programs:
Structure and Interpretation of Computer Programs has been MIT’s introductory pre-professional computer science subject since 1981. It emphasizes the role of computer languages as vehicles for expressing knowledge and it presents basic principles of abstraction and modularity, together with essential techniques for designing and implementing computer languages.
It’s an entire MIT course for free online, complete with an online version of the textbook as well as funky downloadable lectures. They give an introduction to Lisp in the first lecture and use Scheme throughout the course. Both the book and videos are Creative Commons licensed, and the videos are so retro that the rims of my glasses grew 2cm thicker (hot stuff regardless, mind you, this is MIT!). Live free, study hard, rock on ’80s lectures!
DrScheme Programming Environment
If you want to try your hand at Scheme, check out DrScheme — a graphical programming environment available for OS X, Unix and Windows. The screenshot below shows the main terminal.
It might not look like much if you’re used to something like Eclipse. I’d say it ranks 0.4 on the retro-glasses rim-thickness scale, but it’s really easy to install and get started, and it has some surprisingly fun features such as drawing arrows on the code for debugging. They also have good introductory articles to DrScheme.
Quick Introductory Articles and References
In case you don’t exactly have the time to take an entire course, like you probably don’t, then no worries. Here are a few other introductions and examples that come in handy as reference material and quick reads.
- An Introduction to Scheme by Shriram Krishnamurthi. Contained in one webpage with Scheme code examples and minimal text. Good for quick code reference.
- Teach Yourself Scheme in Fixnum Days by Dorai Sitaram. A bit tedious to browse for quick reference, but still a nice quick-start guide with Scheme code examples.
- Scheme Tutorial by James D. Arthur at Virginia Tech. A concise overview of the fundamentals, contained on one webpage. Good for quick conceptual+code reference.
- Game programming in Scheme Downloadable eBook (pdf), code examples and tutorial.
- Scheme Tutorial by someone unknown. Categorized text on Scheme. (Didn’t use this one much but may come in handy).
- Alligator Eggs! is a pretty funny game created by Brett Victor, based on Lambda Calculus (the alligator pictures are from the game).
- Lisp.org, the Association of Lisp Users. Supporting developer community with a lot of resources.
- Practical Common Lisp is a book available online (and in print) by Peter Leibel. While it’s about Common Lisp and not Scheme, it’s still worth listing as an excellent resource on Lisp.
- MITs OpenCourseWare. Worth mentioning twice. Loads of free interesting lectures. Truly a goldmine of knowledge.