Perhaps his priors were a bit off (seeing Lisp as the holy grail of all programming languages), but I think it is still fair to ask why Lisp has failed commercially? This has been discussed before, however (Lisp "wars" in the 80s, AI winter, etc.)
I find the way he ends his post interesting, where he argues that Lips has to evolve and improve. The article is from 2002 and in the mean time, a lot has actually happened in the Lisp world. New dialects like arc and clojure have created a renewed interest in Lisps. It would be interesting to know what the author thinks of these developments, and whether they could revive his personal faith.
(1) assumes that if a technology is good, it will see steady adoption over time. This is not true. See "Why didn't the Romans have hot air ballons" http://news.ycombinator.com/item?id=2264998
About (2) I want to phrase my criticism carefully. To be clear, I'm not saying that Ron is a generally egotistical person, any more than your typical programmer, or than myself. What I am saying is that (2) is an egotistical line of reasoning. It's akin to seeing someone take a better picture with a cheap camera than you take with your expensive one, and losing faith in expensive cameras. Or like listening to someone make a song sound better on an upright piano than you make it sound on a grand piano. The Python programmers who knocked him off his high horse at Google are not proof that Python is better.
To be fair, at the time that reasoning was supported by a fair amount of data. To that point I had built a fairly successful career by doing (by my perception) very little work relative to my peers, and I ascribed that success to the leverage I got from using Lisp. I may have been wrong, but it was a defensible position given the available data at the time.
I am very encouraged by the developments of the last 9 years. Clojure in particular is a Good Thing (notwithstanding my on-going allergy to Java), and even the Common Lisp landscape to day is much improved over what it was in 2002. Clozure Common Lisp in particular is wicked cool, and I'm using it for some hacking projects on the side. But when it comes time to do something industrial strength it would still be a very tough call for me even today.
I would love to do a Lisp-based startup, and a CL based startup in particular. If anyone out there shares this interest please let me know.
"Erann Gat" and "Ron Garret" are the same person; you find him on c.l.l. regularly since 2004.
His last point, that lisp can and should be improved, is one that he makes periodically. There's a barrier to some improvements to Common Lisp caused by the fact that the standard has been long closed and doesn't look like it will be reopened, but there have been improvement in areas that are outside of the standard.
For example both Ron's extended post and the previous hn discussion of this post note the pain of finding and installing lisp libraries. Quicklisp beta was recently released which relieves a significant amount of that pain.
[1]http://www.flownet.com/gat/jpl-lisp.html
Edit: I noticed this in the previous posting of this thread:
Ron> For the record, I did not submit this article, and specifically declined a request to do so. It's not that I don't stand by what I wrote (I do) but it was written for a specific audience at a specific time and I don't think it deserves the attention that it's getting now.
...
akkartik> I noticed. http://rondam.blogspot.com/2008/02/what-are-programming-lang... Thanks.
TLDR TLDR Libraries make a big difference!
Programming languages live and die by their libraries, i.e. vocabulary. The differences in grammar are in my opinion rather small, when we talk about how expressive a clever programmer can be. Can a person be even more expressive in Lisp? Perhaps but it's not essential. The library support on the other hand is essential. You want to stand on the shoulders of giants for the next step. In all modern languages you can write elaborate, expressive libraries (read DSLs) for your pet problems.
I think my TLDR summarizes the original author's post but if someone disagrees, then we can have a fruitful discussion :)
Disclaimer I use Java and Racket daily.
Rather, I think this is more evidence of the old "Good programmers will be productive in any language." The advantage that an expressive programming language like Lisp gives you is that it frees you to think about the problem domain and not worry too much about the details of the machine. However, if you're skilled enough that you've pushed those details into unconscious muscle memory, they don't matter anyway. And a language like C++ gives you the option of dropping down to the bare metal if the need arises.
There are a fair number of Lispisms in early Google code - MapReduce is the obvious one, and there're others that I'm not at liberty to discuss. However, they're Lispisms implemented in C++, where the author took the concept and transplanted them into a language that could give the efficiency needed. This is not a bad strategy - when you understand the concept fully, you're free to tweak it and adapt it exactly as necessary for your problem.
Perhaps not coincidentally, many early Googlers were also programming language & compiler guys before Google. Urs Hoezle (employee #9 and Google's first VP) had previously done StrongTalk (statically-typed SmallTalk), Self (the prototypical prototype-based language and an early inspiration for JavaScript), and the VM that later became Java HotSpot. Jeff Dean got his Ph.D on the Cecil/Vortex compiler, one of the first optimized implementations of CLOS-like multimethods. Rob Pike worked on Plan9 at Bell Labs and invented the Limbo programming language as part of it.
One of the most complicated decisions in developing any new programming language today must surely be where to draw the line separating standard library facilities from those to be provided externally. Provide too little, and you get a zillion incompatible external implementations popping up (C++ and strings; JavaScript and DOM manipulations). On the other hand, go too far, and you get your entire community relying on mediocre facilities, or worse, multiple competing facilities in your own standard (Java and GUIs; D in general). Likewise, if you have a common repository for additional libraries, you can be too restrictive on contributions and wind up with many basics still not covered (C++ and Boost) or you can be too open and wind up with a whole load of substandard or incomplete junk (Perl and CPAN).
I should point that the existence of specific libraries can be seen as a library creation with zero effort. So heavy-library-weight Java can be seen as a very productive language, but only when you use already created libs.
The difference between languages shows when you're on your own, when there's no library or tool under your hand. When you cannot find a giant to stand on his shoulders.
tl;dr it's possible to be a Blub programmer in Lisp.
As a thought, I have sometimes wondered, why is it difficult for me to do something in Racket? It is not because a library is missing (though it could happen), but because it does not limit me. So it does not guide my thinking as much as let's say a strict language like Java.
When I don't have to think about classes with single inheritance and single-dispatch methods, I start to think about class systems, generic methods, multiple dispatch, may ditch classes altogether, go to a great unified graph of data or something crazier. I end up thinking how I should be modeling something and not doing the modeling itself. It does go overboard sometimes :)
Does anybody else face this problem?
In other news, STFU and hack. Enough with Lisp politics posts. It's just a language.
The author of the original post made an angel investment in a Common Lisp-based startup after they went through YC.
My creation, the world's best photo sharing site, primarily uses Kawa Scheme: http://ourdoings.com/
PG's take on this subject: it's about beating the averages: http://www.paulgraham.com/avg.html
It was again the problem that people where all trained in C/C++.
Now that's a powerful language. :)
The beginning of the article was all Lisp demolishing C and Fortran. Then he saw that Python could stand up to it. Most of the flexibility, nicer syntax and better libraries.
Lisp has stood still for the past 25 years. Is it any surprise the rest of the world caught up?
At the end when I read the comment:
> I think that if Lisp does not evolve it will die, and I > don't want to see that happen. I still think Lisp is > great. I also think it can be, and should be, improved.
I wonder what kind of improvements does the author have in his mind! If somebody knows please kindly enlighten me.
No, just a case of Stockholm Syndrome. http://groups.google.com/group/comp.lang.lisp/msg/d11c7e5619...
"I wonder what kind of improvements does the author have in his mind! If somebody knows please kindly enlighten me."
As Erik Naggum said: Erann Gat does not want to enhance Common Lisp, he [just] wants to feel better.
I encourage you to keep reading Naggum's line of thought: http://groups.google.com/group/comp.lang.lisp/msg/9edc8f7ee2...