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."
first post
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.
I'd recommend the SICP lectures ats ussman-lectures/
http://swiss.csail.mit.edu/classes/6.001/abelson-
for an introduction of what Lisp can do. And if you're a programmer and havn't read the SICP book yet - please do, it teaches you a thing or 10 applicable to all programming languages.
(Yes - so SICP is about Scheme, a much simpler dialect of Lisp than Common Lisp of the topic here.. still..)
Don't get me wrong, I love the essence of Lisp and wish I could use it every day.
But compared to a language like Ruby or Python, Lisp is an anachronism. No standardization. No standard Unicode, threads. No XML or RSS libs, no web server, no web framework, no GUI tools, just a bunch of incompatible implementations.
I'm waiting patiently for a smart person (who is not Paul Graham) to create a "unix lisp" which comes with all this stuff "in the box". Wouldn't that kick serious ass? Imagine taking a Ruby program and translating it directly into Lisp, and then refactoring it using macros and all that cool stuff.
I *REALLY* want to see this. I want to see the "One Modern Lisp" emerge. Anybody??
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.
FWIW, it looks like the shootout shows O'Caml besting CMUCL on speed, memory, and lines of code.
I always preferred the original! The Slime with worms was pretty disgusting!
Pearls before swine. Telling the slashbots about the Lisp world is a mistake :-(
I never would have recognized this line as quicksort. You should have posted
:-)
guessme =: id ` (($: o selLEF),first,($: o selGTF)) choose notEmpty
In my experience well-readable languages like C# or Java together with tools like VisualStudio.NET or Eclipse are a better choice because code maintenance (afterwards) is much easier in big projects. In small projects languages don't matter.
Obviously your experience isn't too much :-). Modern functional and dynamic languages produce more concise and readable code than the usual run of the mill Java/C#.
Of course, if you don't learn them first, you can't obviously read them (which certainly seems to be the case with you since your code is not Haskell)
Interesting, using filter instead of list comprehensions. Is it any faster than the original?
I'd like to see more software tutorials in this format. There's something more exciting here than rehashing language wars, guys!