Advice no. 1 is to switch OS if you're a windows user? That's bad advice. LispBox works great, and the hurdle of changing OS isn't going to help you learn Common Lisp.
Lisps have got to be the easiest family of languages to get started with. Learn the syntax of a function call, and you'll understand most of the code you're seeing. Understanding it in depth is a bigger undertaking, of course.
Yep, I wrote 10k lines of lisp code on Windows and it builds on linux (a different implementation) unchanged. yesterday i built my app with Clozure Common Lisp, for the first time, and it ran from the first try. Two OSes, three implementations, tens of dependencies .. flawless.
Suggesting to change your OS when you're on Windows is indeed bad advice. Clozure Common Lisp is a fine CL implementation for Windows and works well enough with Emacs and Slime.
Emacs shouldn't be too much of a problem with version 23 and some sane Windows-oriented keybindings and CUA mode enabled. Perhaps someone (maybe me when I've got the time) should just put a good Emacs configuration online for people wanting to play with CCL, Emacs & Slime.
Then again, Lispbox might be good enough as well. I've never checked it out.
I don't have a dog in this fight since I use Windows, OS X and Linux all with some regularity; but I have personally found that most documentation out there seemed to assume a *nix. Of course doing the mental mapping is trivial, but it is an additional factor to hold in your head.
Honestly, I feel like the bigger hurdle is emacs, which isn't necessary, but almost every article about lisp makes it sound like it is.
The mental mapping is less trivial if they only know windows. Not insurmountable but it is a bit of a curve. Though switching to linux just to learn a computer language is a bit drastic.
If you're completely new to programming (or rusty), I'd recommend "A Gentle Introduction to Symbolic Computation" before PCL or ACL. http://www.cs.cmu.edu/~dst/LispBook/
It's a really great, free resource for beginners that will help you get ready for the other books.
I think that going from Scheme to CL is much easier than the converse; Scheme's syntax is more straightforward (e.g. there's no #' for funcall), and there are fewer conceptual edge cases. If you use PLT Scheme, too, you get Lisp-n (not Lisp-1 nor Lisp-2) with the module system.
Scheme is a conceptual superset of Common Lisp (cf. continuations), although CL has more built-in practical functionality (CL is typically faster (exceptions include Stalin, Bigloo), and has possibly better-implemented libraries).
I have gone through "Practical Common Lisp", went through pains of integrating CL into vim, did my share of googling for libraries and found CL to be impractical for production use (for my projects). Yet I keep seeing the argument in favor of CL because it's got more libraries and "built-in practical functionality".
Can you please elaborate? I haven't played with Scheme yet, but http://docs.plt-scheme.org looks more impressive than anything I've seen for CL so far: lots of stuff in one place and guaranteed to work.
I, too, am basing the libraries claim on others' opinions. I quit CL because I found the system too complex to fully grok, and what 21st-century technologies I needed were not standardized (see: concurrency). I would've been stuck either a) only able to use one implementation, like SBCL, or b) trying to roll my own half-assed implementation of a notoriously-huge language.
There is a very nice chunk of CL that is good at what it does, is fast as hell, and nice to code in. But there is so much cruft attached!
"" Here it helps that a Lisp-2 seperates variables and functions by default. Variables are usually not important parts of an application's ontology. If they are, the convention in Common Lisp is to use proper naming schemes, like asterisks for special variables. Effectively, this creates a new namespace."
Mmm, asterisks. This, to me, is why the whole Lisp-1/2 debate is moot. The
solution is simply Lisp-N, where you can define namespaces, modules, etc.
and control how they're used. See PLT Scheme etc."
I could be misinterpreting, but I don't think this is an accurate characterization of what a lisp-2 does. Function and value namespaces are separate in CL because functions and values are of different types; also there's the struct, class, etc namespaces.
But still in Scheme the aesthetic is to put values of different types in the same namespace -- unless the values don't actually exist at runtime, which is the case with syntactic R6RS records, for example. But you'll still see a conflict at compile time if you attempt to use a name as a record type, then reference it as a free variable -- iirc, anyway.
Right now I'd recommend anybody to just go with Clojure. Other then that, it's a pretty common-sense article. The Unix choice is controversial but truth is, most powerful lisps are not windows-compatible and definitely not windows friendly. Between emacs and vi I'd suggest the one more familiar, or a third one if that's the case. Lisp has a steep enough learning curve not to need a new environment to learn alongside.
I love Clojure, but SBCL is seriously ass-kickingly good software as well. It's a matter of taste, I suppose.
Go with Clojure if you:
Want / need to interop with Java
Want to use Clojure's cool STM
Want to be specifically functional
Be one of the cool kids.
Go with SBCL / Common Lisp if you:
Want to use cool stuff like Cells & Hunchentoot
Want to make your way through PAIP, PCL, On Lisp
(In other words, lots of documentation for CL!)
Want a multi-paradigm language (CLOS is awesome)
Be one of the cool kids.
I agree with you, but I thought I would add that Clojure has the dataflow library in clojure.contrib that does some of the same things as Cells. It doesn't have Mr. Tilton, though. ;)
You raise a good point: Clojure is being actively developed, while the core of CL is stable. If you care about language velocity / activity in either direction, there is a difference between the two.
I can't say I agree with his platform of choice - Lisp In A Box on Windows has been excellent choice so far for me for learning Lisp. No problems at all.
Also consider trying new version of newLisp (called newLisp-GS). A very nice version of Lisp with a built in GUI IDE. I just discovered it (again) the other day and was surprised by the vast documentation and ease of use. It's a great way to learn Lisp. Highly recommended.
Those were written in 2004 and 2005! I know newLISP might not be thee lisp for everyone. All I'm saying is it's free, it's available on Windows, Mac, and Linux (and more), It's got a decent graphical IDE and it's Lisp. Give it a try before digging up 5-year old articles; no?
If you're going to play with a dynamically-scoped lisp you might as well use emacs lisp. It comes with a GUI text editor and is handy for customizing emacs.
Lisps have got to be the easiest family of languages to get started with. Learn the syntax of a function call, and you'll understand most of the code you're seeing. Understanding it in depth is a bigger undertaking, of course.