usable in any place a human can be used

20091014

falling in love

I'm home from work today, sick. Being sick is no fun, I think it is just a cold, hopefully back to work tomorrow. The only good thing about being sick is that it gives me time to spend with my new love. I fell in love yesterday. She is brilliant, straight forward, strong, and has sexy sexy curves. As I slept last night, my dreams were filled by her. I'm so taken by her beauty, her power, and again, the curves. By this point we should all know that I'm talking about the sweetest flower, lisp.



I have always intended to learn lisp better. It's one of those languages, where, if you are a language wonk like me, just seems to keep coming up. It's one of those beautiful, almost mythological pieces of technology that no one uses, but it just seems to come back up. I wrote yesterday in the future: javavscript that javascript is lisp dressed in C's clothing (and in actuality I stole that quote from Douglas Crockford). Lisp is one of those magical languages that was developed in 1956 and seems to have had within it every important language feature that we take for granted today. Just like with Xerox PARC seems to have, in 1975, created every single GUI feature that is now common place, lisp is that for programming languages.


A lot of people will say that lisp is dead, that it isn't worth learning, that no one uses it, and there is no money or projects in it. I won't try to dispute these statements, Peter Seibel does a better job than I can. What I want to argue is that lisp is worth learning, dead or alive.


So here it is, plain and simple


Lisp is the Latin of Programming

Learning Latin may not help you in your day to day conversation, but understanding declension, Latin grammar, and Latin vocabulary, can help you better understand your own language, or any language with roots in Latin. The same holds true for lisp, so many languages and language features have their roots in lisp. Macros, recursion, lambdas, the list goes on and on, learning the roots of these concepts in lisp, illuminates your understanding in other languages.



I have always wanted to learn lisp, but I could never find a source of learning that wasn't either obtusely academic, or painfully slow. I wanted a book that was written for programmers, I don't need you to explain the concept of a variable to me, I also don't want to have to write out a formal S-expression proof. I hold high hopes for Land of Lisp: Learn to Program in Lisp, One Game at a Time! but sadly it is not out yet. I came across a fantastic free book online called Practical Common Lisp and within an hour of reading through it have a fully functional CD database with a DSL that models SQL written completely in lisp, in just about 50 lines of code.


It is the Practical part of this book that is so great. You learn as you go, you build programs up that actually do things, and because of REPL you build incrementally, seeing your environment get more and more feature rich. I find myself unable to stop, for the first time in a while its a book that I treat like a video game, I just need to beat this next boss and then I can save and go eat dinner, ok maybe just one more level, whoa how did it get so late? It is a book that I lose myself in, fantastically well written, great examples, and a true feeling of discovery.


So pick up lisp, especially pick up Practical Common Lisp and give it a try. I know that I will be spending the rest of my day reading through it, and eating some chicken noodle soup.

1 comment:

  1. So wait, you learned lisp in a day...while you were sick?

    ReplyDelete