Programming Culture
I decided to learn Common Lisp.
After feeling like I’d somewhat gotten stuck in my programming development, I decided I needed to do something well outside my comfort zone in order to get off the plateau. So after a quick look around, I decided Lisp was probably a good target.
Then I decided not to learn Common Lisp.
Here’s why:
I’ve learnt a fair few languages in my days… some have been incredibly useful but scorned by others like Visual Basic, some are popular and have a great following like C++ or Perl. Some are small but surrounded by friendly enthousiasts, like Lua. Some are just generally strange but well documented, like tcl. All of these are different experiences to learn, because not only do the languages differ but their communities differ.
It’s a lot like learning to speak a new language and at the same time discovering the exciting culture that comes with it.
But some programming languages seem to have a more or less arrogant culture surrounding them. They tend to be small languages that claim to be revolutionary yet no one uses them. They’re small and they’ve been small for a long time. Lisp falls into this category. One article I read strongly asserted that after decades, the time for Lisp was just about to come. Soon, Lisp would be the mainstream choice. Pity the article was 20 years old, and the use of Lisp has hardly increased since.
It’s weird that this is the case, if the languages themselves are so revolutionary as their followers claim. I’ve seen it with both Lisp and Smalltalk, and after going through it a second time, I think can explain why: Their programming culture has confused teaching with preaching.
And learning new stuff is really important when it comes to programming… which means teaching is equally important.
Let’s back up a bit… I learned Lua. If you try it, your first move will probably be a google search and you’ll find books online and help pages that in a friendly tone go “here’s lua, have a try, plunge in”. But when you try to learn Smalltalk, the same method will get you pages on why Smalltalk’s design is great. Starting to browse forums about Smalltalk, most of the discussions I ended up reading were about how God Alan Kay certainly didn’t mean for object oriented programming to look like C++ (“lol, what a thought”).
The same thing happened to me when I tried to learn Lisp. Finding several books online was not a problem, Google kindly sent me to a site on learning lisp, and following the advice on that site I started reading through a book online, and in parallel started reading a couple of sample chapters of another book. The sample chapters gave me nothing — some code examples, some interesting stuff, but mainly the focus was on why Lisp is so much better than all the other languages.
When I was halfway into chapter two of the book, it had still not finished motivating why Lisp was such a wonderful language, that the absence of a syntax really is the only way to extend a language and build bottom-up rather than just top-down and how you worked in a completely new way with Lisp and that all other languages were nothing but shallow copies and could your language really do this? And at that point I gave up.
The only feeling I get from this furious defense of the language is a feeling of uncertainty. Why do you need to tell me it’s so superior when all I want is to be shown how it works? Surely actually showing me would be the best way to convince me, especially once I’ve already taken the interest and initiative to go looking for a place to learn?
I have no doubt that Lisp is a good language. I’m still interested in functional programming languages. But I’d rather take on one where the culture and community is open-minded and busy doing kick-ass things with their language rather than telling others how kick-ass it is (or worse, how everything else is crap).
Oh well, F# looks interesting. In the meantime, I learnt a different language and did some really cool stuff.
6 Comments
Other Links to this Post
RSS feed for comments on this post. TrackBack URI

By Protector one, Tuesday, March 17, 2009 @ 11:11
So did you learn F#? What cool stuff did you do?
By slicedlime, Wednesday, March 18, 2009 @ 11:51
Ah, no… I think it looks interesting, but haven’t looked into it yet. I learnt another language and did other stuff instead — specificly web programming.
By Peter Jaric, Wednesday, March 18, 2009 @ 16:46
The Language-That-Should-Not-Be-Named, the Forbidden-One, the Name-That-Should-Not-Be-Spoken.
By Protector one, Monday, March 23, 2009 @ 11:54
So, probably COBOL.
By Curran, Sunday, March 29, 2009 @ 17:43
I had a very similar experience with learning Lisp – it’s alien, and apparently great and wonderful, but how do you actually USE it? …then in fact nobody does use it, because there is so much cruft…
Eventually I came upon Clojure, which is a modern day Lisp that compiles to Java bytecode. Then I changed my mind and continued to learn Lisp, and so far I am really pumped about it. There are indeed so many really cool aspects of the language that make you think differently about software, but like you said – you just need to START CODING and see for yourself.
I posted a tutorial here for learning Clojure:
http://lifeofaprogrammergeek.blogspot.com/2009/03/learning-clojure-and-emacs.html
By Anonymous, Saturday, April 18, 2009 @ 13:25
I totally relate to your feeling, had exactly the same story i must say.
And i was just gonna post something along the lines of what Curran said. Clojure is a great way to lisp if you plan to learn today. Also because it forces you on a functionnal style (immutable vars) where in CL or Scheme that is left to your concern, it’s really easier, paradoxally.
The problem is , there is not much ressources about learning clojure yet since it’s so young, but a few books and tutorials are in the writings
The big problem of Lisps before Clojure, has been good library bindings