Posted by jjwiseman at February 20, 2002 12:22 PM
In 1988 I went to work at JPL, and again I found myself running rings around other programmers by using Lisp. I did things (like write compilers for little mini-languages) that people using C (there was no C++ at the time) wouldn't even contemplate attempting.
At JPL I encountered an interesting phenomenon. I would have proposals rejected on the grounds that what I was proposing was too hard and couldn't be done, when in fact I knew that what I was proposing was actually quite easy (if one used Lisp). It got so bad that I would actually develop prototypes as part of the proposal writing process just so that I could say, "Not only is this not hard, it has already been done." (It actually got even worse than that, but putting the details on the record would not be healthy for my career.)
I also encountered an astonishing prejudice against Lisp and towards C. Between 1988 and 1991 I worked on the research program that led to the Mars Pathfinder rover. We built three prototype rovers during that time, and I either wrote the code or supervised the person who did on all of them. All three of them were programmed not in Lisp, but in little mini-languages whose compilers were written in Lisp. (The rovers themselves only had 8 bit processors with a few hundred or a few thousand bytes of memory so we couldn't run Lisp directly.)
But when it came time to write the code for Sojourner they wrote it in C. As far as I know the possibility of using the work we had done on the prototypes was never even considered. All I know is that I was never approached about it.
A similar thing happened many years later on a project called Remote Agent (RA), which was a flight experiment to demonstrate an autonomous control system for a spacecraft. (http://ic.arc.nasa.gov/ic/projects/remote-agent/) At the beginning of the project we had a lot of prototype code written in Lisp, so it seemed natural to me to just fly Lisp aborad the spacecraft. The resistance to this idea was tremendous and unrelenting. Fortunately, we resisted successfully. I say fortunately, because at one point an attempt was made to port part of the code (the planner) to C++. Afer a year that effort had to be abandoned. On the basis of that experience I think it's safe to say that if we hadn't used Lisp the Remote Agent would not have happend.
Nonetheless, it was not an unconditional victory. RA was part of the first New Millennium mission, which was the flagship for Dan Goldin's new "better, faster, cheaper" initiative. As a result we were given a budget and schedule that everyone knew up front was impossibly tight. When the inevitable schedule and budget slips hit the fan, Lisp became the scapegoat. The software integration engineer was asked at a very prominent review board hearing (attended by over 100 people) what was the most significant factor causing the schedule slips. His reply: Lisp. As a result, RA was down-graded from the mainline flight software to a two-day flight experiment.
That was pretty much the end of Lisp at JPL. On my next project I tried again to sell it, but the political damage done by the Remote Agent experience was insurmountable. Finally, out of frustration, I quit JPL and went to work for Google.