I didn't mean to create a blog.
I read a critique of Lisp in another blog, and felt moved to respond. But the space for the comments seemed so cramped. It seemed like a bright idea to create my own blog and defend my favorite programming language at length. (As if I don't have a million better things to do.)
The critique was by Steve Yegge. He said several things, but let me mention two: that Lisp's recent increase in popularity is due to Paul Graham; and that there are too many Lisps to choose from.
The first seems absurd to me, but I don't know how to evaluate it. I thought Lisp was making a modest (very modest) comeback because Java had made garbage collection respectable; or because of the not unrelated fact that computers have gotten so fast that some of Lisp's inefficiencies (and Java's, and Python's) can be overlooked. Enough intro-CS courses expose students to Scheme that the idea of Lisp keeps rippling through impressionable young minds.
John McCarthy once said that Lisp seems to be a lucky discovery of a local maximum in the space of programming languages. Plenty of people are happy finding the top of that particular hill. Others have slightly different objective functions.
I've never met Paul Graham or heard him speak. I gather he's exciting to listen to. If he's helped keep fuel in Lisp's tank, that's great. But I think comp.lang.lisp has been a greater source of inspiration for people coming into the Lisp community, as have ALU, Cliki, and other such.
Another point Mr. Yegge made was that there are too many Lisps to choose from, making life difficult for the beginner (as compared to the beginning Python programmer). I've noticed that there are too many GNU/Linux versions out there. Sometimes that's just the way it is.
However, in the case of Lisp there's a deeper point to be made. It's in the nature of Lisp that it grows in many directions simultaneously outside of central control. I have myself posted a macro package called YTools
that transforms Lisp into a streamlined power demon or into an unreadable mess. (People differ on this issue.) I have another called Nisp that adds strong static typing to Lisp. I find I can't get along without these tools. Other people have other tools that they make available, some of which have caught on with a wider community although most have not.
The situation is not different with other programming languages, except that in the case of Lisp tool packages make syntactic extensions to the core language. If this whole idea gives you the willies, stay away from Lisp. If it sounds intriguing, you might still want to stay away, because Lisp can be addictive. I never program in any other language if I can help it. (My job involves teaching intro programming, which requires me to write simple Java programs, which I find fun. I've occasionally had to write some C or C++ code to run on a robot. I once had to hack Latex2HTML to fix some bugs, which convinced me that programming in Perl was something I should try to avoid if possible.)
There is a portability problem with Lisp, although in my experience it's not quite what one might expect. 90% of the bugs I find when porting from one CL to another are cases where the original implementation was too forgiving of departures from the language standard. A program that's worked fine for years can be ported to a different implementation where you find out it's buggy. I don't know what to say about this except that (a) I've learned that keeping a suite of tests around for any piece of software is a good idea; and (b) YTools and Nisp at this point have been ported and tested on Allegro, CMU Lisp, CLISP, and Open Macintosh CL. Getting them cleaned up was an exercise in anality, but they certainly are superstable as a result of the exercise.