It seems that Lisp has gained a bit of traction lately, perhaps in part due to Practical Common Lisp being nominated for a Jolt Award. As well, reddit.com, being initially written in Lisp, has garnered it some attention, and Paul Graham, with his essays on it, is perhaps more responsible than anyone for Lisp’s (small) resurgence.
It has also gotten to me again too. I’m a sucker for a good language. I myself cannot attest to the productivity gains due to the language, but I do find something alluring in its simplicity. Still, I’ve decided to at least experiment in tying my engine to the Lisp language, and even putting some of the lower level features in Lisp first. I’ve already done some prototyping in it, and it proves versatile and fast enough for now.
I’m particuarly intrigued by GOAL, the Lisp dialect used by Naughty Dog. True, they no longer use it, but I would love to get a look at how it worked. Scott Shumaker, a lead programmer at Naughty Dog, gave a brief overview in this message. I find it interesting that, according to him, the code generated wasn’t that optimized. Perhaps GOAL made assembly that much easier to write, negating the need for the optimizing? Sounds like it to me from reading his commentary.
This does remind me of a project I was rather proud of at Singletrac. When writing the PSX renderer we used in some of the later games, I wrote a little sexp parser that had primitives that equated to one instruction each. I would then run it and it would spit out the corresponding assembly. I still had to debug it in assembler, but it was much easier to write initially due to that representation. And man, was that renderer fast. Clocked against some of the higher profile titles of the day, it would easily match the most high performant renderers. But alas, it went into a game that sold at most 30,000 units.
So, from personal experience, I can say that some form of Lisp has helped me, though to be honest, I would hardly state that my sexp parser was a true lisp dialect any more than I would say that XML is a lisp dialect.
Oh well, here’s hoping that using Lisp will turn me into a super productive programmer and I can get this game/book project done that much sooner!