Friday, December 7, 2007

Choosing the right lisp implementation

There were ups and there were downs in my road with lisp, but today was one of the days that I wouldn't turn on my computer only if I knew what would happen. Everything started great in the morning. I implemented the functionality of the textarea type for the weblocks framework in a record time. But as soon as I tested with Firefox, as Opera is my primary browser , I found that my new text type is rendered as text input field instead of textarea. After unsuccessful debugging I decided to see how will other browsers behave, like IE & Safari and that ment booting windows.
I started my Lispworks Personal and got myself into nasty problems with some classes that worked great on sbcl & linux but failed miserably with lispworks & windows, so I downloaded the starter pack and reinstalled some libraries, something that solved some of the problems and introduced a new ones. After a while I got nervous and depresses so I bothered Slava,the author of weblocks in a chat with my problems, like how the other people are wasting his precious time while I was doing the completely same thing, and out of my frustrations proposing that he should proclaim sbcl standard and dump support for all other implementations until weblocks goes production ready. A proposal that he rightfully denied.

So the question with my problem boils to one thing. What lisp implementation should you use for your development? For a starter it doesn't really matter, just grab one that didn't stopped being developed in 1993 and start your lisping. The real question goes to those who achieved certain jedi-apprentice level, and want to use lisp for real problems. Leaving financial and religious beliefs aside, I found one simple advice that goes like this. Use the same implementation that authors/mainteneers of the library you need happens to use.
I see you starting to disagree with me saying that many of the lisp libraries use only the ANSI part of lisp, which would make them portable across all complying implementation, or maybe the library you like is well supported across many OS & lisp
Well I haven't been that lucky myself. The libraries I liked happened to work best with sbcl/linux . The authors of those weren't one of those yobos you probably encountered dwelling in c.l.l that are pro sbcl/linux and against everything else.
Absolutely not, those were nice people trying to help but I was always only one using it with ACL & LW under windows, well except one guy, what was his name? Oh the one that hang around with them couple of years ago.
I hear the voice that library could be patched to work with your beloved implementation. Of course it can. But someone have to do it . The question is who?
Well how about the authors and community? They will try to help and they understand the system. But they will be shooting blindfolded because they don't see the problems. Everything works smooth on their systems, it's you the one having problems. Last time something like that happened was with Allegro IDE under linux. I was having problems with the latest Ubuntu 7.10 while Ken Cheetham was debugging it from some far older version where everything worked great. Franz is great company, just look at their sexy products called AllegroCache & AllegroGraph, and Ken did a great job developing a patch, thank you Ken. But in the vacuum until he gain understanding that the problem was not in the setup, missing library or something like that, I felt again like failing to explain to nice folks from Elephant that I'm unable to compile FiveAm under Lispworks and do their tests.

So let's see the famous fix it yourself solution. If you're someone like Edi Weitz, taking my hat down, than you could certainly fix it while you're drinking your first morning coffee and reading Süddeutsche Zeitung at the same time . Damn if you're like Edi you could make one from scratch, portable across any lisp / OS combination and with superior speed and documentation while those bozos who made the original crap, advance from version 2.0 to 2.00001 . But if you are like me, you'll need much longer to understand it to make a good solution. And every day spent patching libraries is one day less working on your application.

happy lisping
Slobodan Blazeski

Daniel Weinreb did an extensive survey of the all of the ten currently supported implementations. Youd can find details at Common Lisp Implementations: A Survey


  1. "After a while I got nervous and depresses so I bothered Slava,the author of weblocks in a chat with my problems, like how the other people are wasting his precious time"

    Slava is a smart guy, I think he knows how to organize his time.

    If no one uses your software, but its really awesome, does it make a sound? The answer is no! Slava is doing a great job helping people out (namely me!) and one day I should be able to help others.

    Good advice though :-)

  2. "If no one uses your software, but its really awesome, does it make a sound? The answer is no!"

    You are already helping Sohail, with spreading the word with your blog and group postings. Paul Graham once wrote that it's harder to get from zero to twenty users, than it is from twenty to a thousand. Weblocks is on a good way but it needs time, and I'm not famous for my patience.

  3. It's unfortunate that the library you needed to use isn't portable from one Common Lisp implementation to the next. There are a bunch of portability libraries that make it easier to write Common Lisp that goes beyond the language standard and still be portable, but it's not always easy to find them. I have some hopes of making this easier in the future, but it's too early to say at this point. Thanks for linking to my survey!

  4. "Thanks for linking to my survey! "

    You've done a great job Daniel, it was a honour to link it.


Note: Only a member of this blog may post a comment.