My road to Lisp
It's been a long time coming.
|~1985||BASIC||Grade 5, just some loops and print statements|
|~1987||LOGO||Grade 6 or 7, Turtle graphics|
|~1990||Pascal||Grades 11 & 12, first formal programming education|
|Sept 1994||C||Comp. Sci. 100, Pointers and free() are my friends. K&R2e becomes my favorite programming book.|
Read a book on C++ and was repulsed by ugly syntax. I gave it an honest try.
|~2000||Java||Read a book on Java and was repulsed by the required OOP. "main" is in a class?!?!?|
|May 2005||PHP||Weak typing is neat. Started wanting a framework for web applications...|
|Nov 2005||Ruby||Thanks to Rails, I literally forgot, in under a week, all the PHP I had learned in six months.|
In ernest this time with the rhino book.
|Feb 2006||Java (again)||
Read another book on Java and started to like really like the ideas of OOP.
|Mid 2006||Stumbled on Paul Graham's page about Arc. Lisp? 1960? Just functional programming? Who wants that?|
|Nov 2006||Reading books about writing compilers|
|Feb 14, 2007||Perl||
Read the camel book. Could a language be any uglier?
|Feb 16, 2007 9:28 PST||Steve Yegg's entertaining language comparison Maybe I really do need to find out about this Lisp stuff. Thanks to Timothy Bennett for the link after my complaining about Perl.|
|Feb 16, 2007||Lisp (finally!)||Stumbled on Paul Graham's site again and recognized the nice Arc graphic. After reading The Roots of Lisp once I had a huge smile on my face. After reading it twice I had to pick my jaw off the ground when I realized what functional programming could do.|
|July 2008||Scheme||Structure and Interpretation of Computer Programs finally enters my programming life, changes it permanently, and replaces K&R2e as my favorite programming book.|
Studying Math and Physics in university I had one of those great HP 48G calculators with reverse polish notation. It is still my calculator. I'd type something like
2 3 + to compute a sum. Of course, in class we used prefix functional notation all the time like
s(2, 3) where
s is a sum function. I came to think infix operators like
2 + 3 as a kludge that didn't make much sense with more than two arguments and so why not always use function notation for uniformity? When I found out that in Lisp I'd always write
(+ 2 3) that put the huge smile on my face.
When I read Graham's Roots article more carefully the second time and saw that he was building a domain language for the problem at hand is when my jaw hit the ground. It was the
I seem to judge a language by its thickness. C is thin: the K&R book is only 272 pages and so far remains my favorite programming reference book. The OOP languages are thick: books on C++, Java, Ruby always seem to be over 800 pages. It's a good sign to me that the books about Lisp are thin.
The only other time I've been excited about a programming language is when I "got" C pointers. After just a few hours reading about Lisp my excitement about Lisp is much greater. I feel like I have found home.
Have something to write? Comment on this article.