A Video Tutorial of SLIME
An anonymous reader writes "Ok, maybe I exaggerated a bit with the subject; however, you can check
it out for yourself and decide. Marco
Baringer has published a video (.mov available for
the bittorent impaired) showing off the Common Lisp IDE SLIME. It's a long
movie (almost an hour) and provides an in-depth description of many of
SLIMES's features which just aren't available (or even possible) in 'modern' IDEs/languages."
Can anyone point out any strong advantages Lisp has over more modern functional languages? I've been learning Haskell, and really enjoying it, and wouldn't mind another FP language...I was thinking O'Caml, for performance reasons.
On the subject of those wacky FP languages, here's something I ran across last night, quicksort in 'J';
'$' is the self reference operator, making this an anonymous recursive function. Pretty cool.
"A language that doesn't affect the way you think about programming, is not worth knowing" - Alan Perlis
CL is much "closer to the metal" than Haskell or even OCAML and it's designed to compile to efficient code. As a result it's not particularly "functional" (nowhere near as much as Scheme, for example). CMUCL compiled lisp should approximately match native-compiled OCAML in speed, and CL has an advantage in being a multiple-sourced standard.
Main advantages of CL
- Scalable ratio of easy:fast. Prototype lazily and tune iteratively.
- Macros facilitate "little languages" for task areas, making core algorithms terse and readable.
- Running apps can be hot-debugged, tested and recompiled in situ.
- Exception mechanism provides something I've seen nowhere else, namely the ability to catch an exception, repair the problem, and reverse the thow to resume where the code left off.
Main serious problems with CL
- Too many fiddly features makes writing a compiler hard
- Lack of a good standalone-binary compiler.
- Weakly standardized library mechanism makes cross-implementation libraries unnecessarily hard and hence rare. (NB: "common lisp controller" is a fix for this and standard in Debian.)
- No fixed standard for foreign function interface (or requirement that one even exist).
- No sockets or threading in the standard library.
Marco is the author of Uncommon Web, a continuation based lisp framework for web applications.
Last week he did a video for that, torrent here that was well received. It's still in the early stages, but combined with Lisp-on-Lines (in development) it's hopefully going to attract some mindshare.
Bill Clementson also discusses lisp webserver options in his (slighty dated - Oct-2004) blog entry
I started working with UCW/Slime/mod_lisp a couple of weeks ago, and I'm pleased to see better getting started videos, ala Ruby on Rails.
This is a very common wish, but there's a fallacy in the first sentence. The implied comparison is between language implementations (Ruby, Python) and a language specification (Common Lisp, Scheme) or a metalanguage idealisation (Lisp). There are plenty of implementations of Lisp and Scheme which have available for them all of the elements on the wishlist: but they are not standard across all implementations of a specification, or all instantiations of the metalanguage.
There is indeed a need for better distribution integration for the various Free lisps out there (of which there are many) for the newcomers not to feel so intimidated by the need to assemble their systems themselves: but the inherently misleading comparison between specification and implementation should not frame the discussion, because those who need the bits and pieces can assemble them.
Maybe you want Dr Scheme?
FWIW, it looks like the shootout shows O'Caml besting CMUCL on speed, memory, and lines of code.
Maybe you want Dr Scheme?
First, Dr Scheme is obviously a Scheme IDE, not a Common Lisp IDE. The differences between Scheme and Common Lisp are not so trivial that someone looking for a good CL IDE will be just as satisfied with a good Scheme IDE.
Second, while Dr. Scheme is in many ways superb, it's maddeningly simple in others. It has an unforgiveably awful multiple document interface. I don't want a new toplevel window for every file I'm editing! And why can't I transparently use the same REPL with multiple buffers? For all the fancy features in Slime, the biggest productivity gain for me is the ease of managing multiple buffers in Emacs, and C-c-c to compile a file and load it into the currently running REPL. Without these simple features, the other (excellent) features of Dr. Scheme are more or less irrelavent.
Having said all this, Slime could really use the brilliant debugger and code-stepper in Dr. Scheme. Unfortunately, the underlying Emacs environment would probably make it difficult to do such a good job.
Freedom is not increased by mere diminuation of government. Anarchy is freedom for the strong and slavery for the weak.
> But compared to a language like Ruby or Python, Lisp is an anachronism. No standardization. No standard Unicode, threads.
It's interesting you mention Ruby, as it also lacks unicode.
clisp has good unicode support, and its CLOS implementation has gotten quite mature these days. No idea on how speed is doing, but it's always run dizzyingly tight little circles around python.
Ruby would have a hard time turning into lisp, given the lack of continuations. Scheme might do all right.
I am no longer wasting my time with slashdot
> Except that Ruby does have continuations, and Common Lisp doesn't...
And scheme does. What's the "except" about? I thought it would be obvious which one I was saying had them. I guess "turning into lisp" is kind of backward. I meant "translated into lisp".
I don't find CL all that minimal, unfortunately. The fact that it can be bootstrapped is uninteresting to me. In fact, having to deal with the hyperspec as a reference makes me imagine it to be an elephantine design-by-committee abomination (contrast to R5RS). I know this isn't quite true of the language, but the documentation and the CUMBERSOMELY-LONG-IDENTIFIERS just don't give an overall impression of "lean".
I am no longer wasting my time with slashdot
Show me the standards for Ruby or Python.
Oh yeah, those bad libraries with descriptive function-names! Too many of them.. Or is it not enough? Wow, I'm just too confuzzled for all this thinking.
Try Corewar @ www.koth.org - rec.games.corewar
Ruby would have a hard time turning into lisp, given the lack of continuations.
Ruby has continuations. It's Python that lacks them.
I'd like to see more software tutorials in this format. There's something more exciting here than rehashing language wars, guys!