October 30, 2011

Common Lisp is the best language to learn programming

Now that Conrad Barski's Land of Lisp (see my review on Slashdot) has come out, I definitely think Common Lisp is the best language for kids (or anyone else) to start learning computer programming.

Between Land of Lisp, David Touretzky's Common Lisp: A Gentle Introduction to Symbolic Computation (really great book for people new to programming, available for free) and The Little LISPer (3rd edition, editions four and up use Scheme) you have three really great resources to get started.

Lisp's syntax is a great advantage because it is so simple to learn and has so few special cases. The interactive, iterative development style and real late-binding means you can build programs in parts and add to them as you go. The presence of real metaprogramming means you always have the ability to look at any part of your program and its state to find out what it's doing/what's wrong. The HyperSpec and Common Lisp The Language are two of the best programming language reference manuals ever written.

The best parts about Common Lisp are that it's a language that's hard to outgrow and that it makes difficult things easy. One of the chapters in Land of Lisp explains HTTP and HTML and has you build a basic web server. That chapter is only 15 pages! There's tons of ideas in the language, and because you're not restricted to a particular programming paradigm, you're always discovering better ways of doing things and developing a personal style.


Robert Seaton said...

Land of Lisp sounds pretty cool. I've been thinking about trying my hand at building a web server and I guess this would also give me an excuse to learn Common Lisp as well.

On the other hand, I have enough unfinished projects to work on as it is. I really don't need another one.

มะขาม said...

oh great articles and blog I have just found indeed. I am interested in LISP too but a beginner.

I added your blog to my friend of blog already.

itoctopus said...

I'm not sure whether or not lisp is the best language to learn programming but I'm confident that it's the most elegant programming language out there.

I remember I took two lisp courses back at school and I loved them.

Unfortunately, the job prospects of lisp professionals are very slim.

Anonymous said...

In the late 90s I was looking around, searching for a good programming language. I used to lurk in Usenet news groups. It came to my attention how learned and intelligent the crowd at comp.lang.lisp was. Not only were they knowledgeable about other programming languages, but they were able to demonstrate how Common Lisp stood its ground when pitted against other languages.

I have stuck with CL (and other smart languages, e.g.,Scheme and SML). I did dabble in C++, Java, Python, etc. but I recognized how cumbersome or inferior they were. I had neither the patience, the time, the blind naive faith (I lost it reading lisp books), or the tolerance for pain.

As I am not exactly a programmer, but someone who needs to program for my medical research, I wasn't fond of the unnecessary complexities of C++, or the bad design of Java, Python, or Ruby. My carreer is hard enough as it is, and as there's no one to help, I must do everything by myself. In such conditions, Common Lisp is ideal. I can be productive. If I need examples, well let me tell you that code from way back just...runs! I can only say that about very few languages,namely, Common Lisp, C and Forth. You better pray your investment in Python will work 3 or 5 years from now...This isn't for me...I'm not in the business of creating a difficulty in order to sell you the fix. And I'm not in a business where I can just use broken software because I can hire cheap labor ("code monkeys") . The Beans, JSONS, Dotnets, Ants of the world.

But you gotta admit it though...shitty software makes the software wheel go 'round, because it's not like the engineering industries, the medical, aerospace, or military. That's because it's full of suckers - users and investors - and some people make money with easy stuff. Cheers for them, what do I care? The world still needs good products. If you want to make easy money with broken software look no further than Redmond as your guiding star.

The other languages I thought were worth the ride were Perl, whose flexibility I recognized immediately, and is really an all around practical/powerful toolbox, and C, the systems programming lingua franca (but these days, I put my chips on D). You need C, like it or not; life will teach you that. Sometimes, you want lisp to work with C (via FFI).

Time proved that the Lispniks and the nerdy academics of Scheme, SML, OCaml, Haskell, and Erlang were right. Their ideas spread like wildfire and modern languages have yet to catch up. Erlang is in Twitter, ML is a Microsoft product, and Common Lisp has been making inroads (I used to keep track of products made with it, but I lost count - I will say it's in a lot of stuff were you need performance, such as finance or signal data processing). Even in the blogosphere. Or has mutated to infect the JVM (Clojure and ABCL). People seem to accept Clojure very easily, in particular the new dudes of these web programming days we live in (more power to them!) Holy shmoly, Perl has a MOP and CLOS-like features! Web sites use continuations! C# has Lambda! Lambda-de-doo-da-day! Oh, my! Things are a'changin', indeed!

In the "early" days, hardware sucked and was very expensive. That made those using those languages either part of a small elite or a bunch of dreamers, Quixotesque revolutionaries, shouting at windmills, a laughable bunch. Today, fast machines are for everyone.

I can only speak for myself, but Lisp turned out to be an excellent investment.

All the best,

PS: I almost forgot! Land of Lisp is a fantastic book! You are introduced to advanced concepts as if they were child's play. It reminds me that Stallman once said the secretaries of his MIT department started reading lisp manuals do to their routines! They didn't know it was "programming" or that they weren't meant for them, ha ha! LOL. For children ages 10 to 100.

House On Sale said...
This comment has been removed by a blog administrator.