It is 1986 all over again.
It occurred to me in the past week or so I did not have a feel for what lisp is capable of. I have been learning all the components of Clojure and trying to figuring out how they hang together. But I really want to “stand on the shoulders of giants” and gain this insight as rapidly as possible rather than gradually absorbing it over the years.
Clojure is a dialect of lisp and there is a set of classic videos from1986 to help out. These videos are basically the old MIT course that introduced programming to undergrads at MIT, it was replaced only a few years ago. The lectures where videoed when they were given it to a bunch of people at HP in 1986.
I particularly liked the symbolic differentiation lecture. This used to be an example program I would code when learning a new language. At the end of one lecture they had reached a point where I had often reached. The following lecture they explained that they could go further and create a pattern matching interpreter for trees and then just supply the rules for symbolic differentiation. This same interpreter could then be re-used for equation simplification and
other things. Great stuff.
I am just over halfway through and to be honest some parts are a little slow and this really due to the fact some of the ideas they are arguing for are now common place and they are really aimed as an introduction to programming.
I suppose because of this the focus is not on lisp in itself but to use lisp to express the ideas they are trying to convey as precisely as possible, I often find myself considering how the same ideas could be expressed in C++/Java and it seem in terms of code size and ease of implementation lisp is a winner. I don’t feel qualified to comment on how other high level languages compare with lisp.
In all there are well over 20 hours of lectures and assuming you know a little bit of a lisp like language there is plenty of insight to be gained from watching them. You can also find them on YouTube and Google Video.