Tuesday, December 20, 2011

Alternate Paths: Lisp

Lisp is an ancient computer language, born in 1958.  It has retained a following and respect for the last 50-plus years, particularly in the artificial intelligence community.

Vladimir Sedach suggests that:

Common Lisp is the best language to learn programming

I can see strengths and weaknesses in the approach.  Lisp as highly regarded as a language, but doesn't have a tremendous job market.  It might be very good to develop core skills, but I suspect that after learning Lisp students would look for a more common and marketable skill set.

I'd welcome comments from anyone who started with Lisp first.


  1. I'll bite. Other than untutored messing about with QBasic, Scheme was my first language. It was a course in the tradition of the Wizard Book (though not based on it explicitly).

    My first observation is that I don't think anyone left that class without understanding recursion, which is more than I can say about my first C class.

    The course was structured to rapidly progress towards the basics of runtime analysis, since the syntax (though a bit alien), is minimal enough that you can get coding and analyzing basic sort and search algorithms. I'm not sure how much your typical novice cares about either of these things, but for a future professional programmer, they are essential.

    The Wizard Book rapidly goes through details of programming language implementation, including fairly advanced topics like declarative programming and lazy evaluation. You could also address parallelism, etc.

    Scheme remains an enduring favorite language of mine, though, because unlike most other languages, I can hold an accurate *and* complete version of its semantics in my head. It's a language that fits in your pocket. For contrast, you can write single statements in many languages that use enough dusty corners that they're more or less impossible to figure out what they mean or do (an exemplar of this is typedefs in C---the complicated ones can be inscrutable).

    The fact that an intermediate programmer can write an interpreter for scheme, and therefore get a strong grasp on what goes on inside is a big part of this. The lisps are probably the only high level languages that can have this feature. Forth, for instance, is similarly compact, but feels very bare metal by comparison.

  2. Thanks! Good to hear from someone who enjoyed the path.