Learning Lisp, or Back from the Shadows Again
Late last night, my life changed in three hours. A kid called in to Leo Laporte and asked what language he would recommend to a young person to get them started in programming. To my delight, he recommended Lisp. He said something to the effect of: “Don’t use C or C++, use a real man’s programming language, use Lisp.” This inspired me to get back into this wonderful language. It also dovetails nicely into something else about which I wanted to rant: why I don’t want to go back to college.
I first became exposed to Lisp while taking an artificial intelligence course for two semesters. I learned it strictly in that context, only using it to solve silly academic problems, never really grasping its potential. For me, a structured learning environment seems stifling. They didn’t even mention Emacs once. This seems highly illogical, given they practically wrote the entire thing in Lisp. Of course, it does use a specialized dialect, so perhaps that explains it, but nevertheless. It probably wouldn’t have mattered, since at the time I could only access their Linux system over a non-error-correcting modem over a noisy phone line – just awful!
It seems interesting to me that learning Lisp in such a setting and in such a context prevented me from continuing to use it. For one thing, it had a negative association. I love programming, but college just makes thing seem dry and uninteresting. This ties into the other reason, the context under which I learned it. I don’t want to spend the rest of my days trying to write a function to draw a weighted graph or something, I want to rock out and do something cool that I will actually use in my day-to-day life. Why else would I want to program? Of course, “they” will tell you in their snobby way that “You have to learn that life is hard, and that you can’t always do what you want.” I reply by saying that I became blind at birth, and figured that out at about age four. Don’t patronize me!
For these reasons, I sadly relegated Lisp to the back of my mind, assigning it to the dusty corner reserved for purely boring academic matters. Once I escaped without a degree, I continued on a fairly ordinary course for a weirdo Discordian programmer. I picked up Perl, and learned a bunch of other cool things, but I always felt something missing. C gives me a headache, Java remains rather inaccessible to the blind, Python seems like a waste of time (I don’t want to spend all my time counting stupid white space), and so on. I mainly concentrated on learning Linux, since it had since become quite accessible, thanks to Speakup. I love FORTH, but sadly it doesn’t get much use. I craved something powerful and trippy. Yet, I never considered Lisp – after all, I wanted to actually do real stuff.
Now that I think about it, perhaps the universe had begun gently nudging me in this direction for some time. Goddess works in mysterious ways. First, I got into Firesign Theatre. One of their albums, We’re All Bozos on this Bus, has a computer-generated character called Dr. Memory. The fact they wrote this in the early seventies fascinated me – obviously they had access to one of the early AI labs, and this turned out true.
Next, I got into Emacs, which I linked to above. I’ve really come to enjoy it, though I still need to tweak it more. I could spend a long time doing that, and I still have a lot to learn, but feel very impressed with it. Unlike most editors that you may know, the Emacs executable file actually contains a Lisp interpreter for a specific dialect, and most of the editor actually resides in Emacs Lisp source code. This seemed really cool, since it allows infinite customization – how many editors do you know that have an adventure game, an Eliza program, and Mayan calendar routines?
These three features have a special place in my heart. I’ve always loved text adventures and text games, growing up using the first computer usable by the blind, an Apple II/E. One day at around age seven, I ran a version of Eliza, written in Apple BASIC. Eliza acts like a psychotherapist, dissecting the user’s input, parsing it, and sometimes outputting it in a modified form, often with humorous and sometimes even insightful results. It inspired Dr. Memory referenced above, and as it would turn out, it would inspire me as well. I had just ran the program, leaving it in memory. I didn’t really know any commands, so my little kid curiosity just said to start typing in things. I typed in “LIST” figuring it would list something, and in this case it listed the source code to Eliza. It clicked in my head that this told the computer what to do, and I knew right then that I had to learn how to do this too.
So this brings us back full circle to the present. After hearing the recommendation to learn Lisp, I quickly found Practical Common Lisp. It’s opening letter to the reader joyfully allayed my concerns, and convinced me that I should give Lisp a second chance. I now learn it on my own time, for my own reasons, in my own way, at my own pace, with my own pleasant associations. I value the time I spent learning it in college, but I do far better learning things on my own, and I know I will enjoy it even more. I love Lisp!