Brian Harvey on Scheme vs. Python

Posted on January 30, 2013 by Tommy McGuire
Labels: lisp, programming language

Scheme vs. Python is an excellent read, but I would be more impressed if he took points 3 and 4 out back and shot them in the head. "[Y]ou should be able to learn a programming language (after the first time) over a weekend" is perfectly true (for some reasonable value of "weekend"), for a Computer Science program. "The best language for a course is not necessarily the best language for writing real-world code" is an excellent point as well. "You can learn to program in any language [but] the big ideas in [SICP]...express themselves best in Scheme" is (arguably, I admit) also valid.

But points 3 and 4 are, first of all, the same "Everyone should use Lisp" argument that hasn't actually convinced anyone in the 50-year history of Lisp. They weaken the actual point I think he's trying to make, or at least that I wish he was trying to make.

What, exactly does "the lifespan of a programming language is closer to the lifespan of a dog than to that of a person" mean? What is the lifespan of a programming language? I don't know of any programming languages that have achieved some kind of critical mass that can be meaningfully said to have "died".

Furthermore, fundamentally, what is "Lisp"? LISP 1.5, a la McCarthy? Is anyone still using that? Common Lisp? Good luck with recursion there; recursion without tail call elimination is not an especially good idea. Scheme != Lisp, any more than C, C++, Java, et al., are the same as ALGOL. There are ideas that unite all of these languages, but the fundamental one, that programs are data and that data is a program, is not one of "Lisp’s ideas [demanded by 'real users'] in the programming languages they do use."

Finally, what the heck is up with "[u]sers of strongly typed languages demanded, and got, Lisp's heterogeneous lists." I'm not seeing it.

active directory applied formal logic ashurbanipal authentication books c c++ comics conference continuations coq data structure digital humanities Dijkstra eclipse virgo electronics emacs goodreads haskell http java job Knuth ldap link linux lisp math naming nimrod notation OpenAM osgi parsing pony programming language protocols python quote R random REST ruby rust SAML scala scheme shell software development system administration theory tip toy problems unix vmware yeti
Member of The Internet Defense League
Site proudly generated by Hakyll.