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.
(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
(c) Even then, they had to drop some features (involving
advanced uses of closures).
Another message from Graham:
Posted by jjwiseman at February 24, 2003 10:27 PM
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.
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.
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.