February 24, 2003
New World Record

Paul Graham, replying to a message on ll1-discuss that mentioned Yahoo translating his lisp code to C++:

I should mention that they actually have just done this. A rewritten version (C++ and Perl) just launched in Jan. However,

(a) The reason they rewrote it was entirely that the current engineers didn't understand Lisp and were too afraid to learn it.

(b) The resulting program is a new world's record case of Greenspun's Tenth Rule. The Yahoo Store Editor called compile at runtime on s-expressions made on the fly. To translate this into C++ they literally had to write a Lisp interpreter.

(c) Even then, they had to drop some features (involving advanced uses of closures).


Another message from Graham:

I believe the pointy-headed bosses were the driving force in the port. When I worked at Yahoo, management were nervous about the software being written in Lisp because they thought it would be hard to find programmers who knew it. Not so much that they couldn't find any, I think, but that because it was a comparatively rare skill, management would have less leverage over the hackers. When skills are not a commodity, employees aren't hot-swappable.

A friend of mine (who's probably on this list, actually) went to interview there in about 2000. He said they told him they didn't need Lisp hackers, because they were going to port the Store Editor to C++. Why? Because they didn't think they'd be able to find Lisp hackers.

BTW, I should add that most Y Store users still probably use the Lisp version at this point. They're doing a gradual rollout, and you have to explicitly choose to "upgrade" to the new version. The feature they had to take out because of closures is actually a fairly important one, so I suspect many users never will upgrade.

Posted by jjwiseman at February 24, 2003 10:27 PM

There goes one of the few reasonable replies to the statement "Lisp? Nice language. but no one actually uses it for anything." Having worked for two companies that switched from lisp to C++ (in one case) and Java (in the other case), the "no one uses it" statement is getting more true all the time.

Posted by: Andrew Hyatt on February 26, 2003 10:23 AM

The Lambda blog has a discussion about this:


Posted by: Sergey Goldgaber on March 2, 2003 02:32 PM

In earlier times Lisp was often used for prototyping complex applications. The software was then reimplemented and put into production. This was nothing unusual. Then Lisp systems appeared on the market that made it possible to deploy Lisp software in the field (deployment Lisp machines with special OS versions (MINIMA) or delivery software ("Firewall"), then efficient Lisp compilers on stock hardware with delivery options). Next were large development/deployment systems (example: KEE) that enabled cross platform development on top of Lisp. You could develop on a Lisp machine and deploy on something like a Unix box.

So, reimplementing Lisp-written software is/was not unusual. Especially when the Lisp-software was a prototype or a proof of concept.

Sometimes these reimplementation projects failed. Either the Lisp software was written very badly, or it was written very very very clever or it just grew to big to be reimplemented in finite time.

What makes us worry a bit is that currently less percent of the *initial* software development seems to take place in Lisp.

Today it seems that reimplementing Lisp-written software is not *that* necessary, since newer computers/processors seem to be okay for running Lisp and some Lisp systems are quite capable for deployment.

People should be more aware that Lisp is a good language for initial software development and that delivery options have expanded.

If Yahoo Store is reimplemented in something else - who cares? Paul Graham made his money already. ;-) He is a smart guy and doing the next Lisp project.

Posted by: Rainer Joswig on March 3, 2003 02:48 PM
Post a comment

Email Address:


Unless you answer this question, your comment will be classified as spam and will not be posted.
(I'll give you a hint: the answer is “lisp”.)


Remember info?