From: Edi Weitz
Subject: Re: Difference between free and commercial implementations of CL
Date: 
Message-ID: <87llvuqv91.fsf@bird.agharta.de>
Jan Rychter <ยทยทยท@rychter.com> writes:

> I'm interested in opinions from users who have chosen a commercial
> implementation of CL instead of using a free one [1]. I'm
> particularly interested in people using UNIX systems, where there
> are at least three excellent free implementations: CMUCL, CLISP and
> SBCL. If you use Allegro CL or LispWorks, why?
> 
> The reason I'm asking is that I'm a little puzzled: on one hand,
> CMUCL seems to fullfill most of my needs as far as CL programming is
> concerned. On the other hand, I hear people saying that Allegro CL
> is the only reasonable option. If it is so, I'd like to know why.
> 
> As an example, I've found CMUCL a little faster on my programs than
> the evaluation version of Allegro CL. But Allegro seems to have a
> better inspector facility, which helps in debugging. Also, it comes
> with lots of well-organized documentation. Then there is LW, which
> comes with a GUI, but since I use XEmacs, it isn't overly useful to
> me.
> 
> Disclaimer: I'm not trolling. I genuinely want to know. If you think
> this is a troll, just don't respond. I don't want this to turn into
> a flamewar, I just want to gather opinions.
> 
> So, if you chose Allegro or LispWorks over CMUCL/CLISP/SBCL, why?

I have LW pro licenses for Windows and Linux. I wouldn't say that I've
chosen LW "over" CMUCL, though. I use both (and I'm keeping an eye on
SCL and SBCL because of native threads), and I've used both for
commercial work.

For development I use mostly Emacs/ILISP for CMUCL _and_ LW, mainly
because I don't have to do a mental switch too often. But there are
situations where the LW IDE can offer things which ILISP simply can't
do, so I'd be careful with statements like "it isn't overly useful".

Here are some of my reasons to use a commercial CL implementation, in
no particular order, although the "free" ones are admittedly very very
good. (Please note that each of these points will apply to one or more
of the "free" Lisps, too. It's the combination of all of these which
can make a difference. I should also add that some of these aren't
perfect in LW IMHO, but then again nothing is perfect...)

1. Unicode support integrated into the language.

2. Working and documented FFI including callbacks.

3. Multi-threading, also supported by the IDE.

4. CAPI, which is a great GUI toolkit. Also CLIM, should I ever need
   it.

5. Useful extensions to the standard like sockets.

6. Cross-platform, i.e. it really is "write once, run everywhere" for
   the platforms which are supported (which'll include Mac OS X
   soon). Especially all of the above points work uniformly across all
   platforms.

7. Support is there if I need it (and pay for it) and as soon as I
   need it.

8. I can add (very good) RDBMS support (fully supported and
   cross-platform) if I need it.

9. Delivery as a "stand-alone" executable if I need it.

You might also want to look at what Franz has to offer in addition to
the stuff I've mentioned here - Java integration, SSL socket streams,
XML-RPC and Lisp RPC, ODBMS, ...

Besides that, I'm happy to have a couple of commercial vendors
around. From my experience, this'll increase the chance of CL to be
accepted for "serious" work.

HTH,
Edi.