I am so sorry that I have not posted in a while. I have been so busy trying to finish up many projects at work before the long holiday. It has not been such a nice holiday for me, though. First, my boy Ethan has been sick with a viral infection, and the remainder of my family has been sick with colds.
So, I had a lot of time here and there. I decided to finally read Peter Seibel’s Practical Common Lisp. This book is also available online, but I recommend buying the hardcover (I think it’s worth it).
The book has 32 chapters of the basics of LISP and provides current and relevent examples. Hey, this is exactly what I expect from a book if it’s going to have the word practical in it’s title! The learning chapters was a great reminder of what I missed during the standardization process. The last time I really used LISP, the language was about to be standardized (circa 1992?). By that time, I was using two different LISPs. The first one, which I really do not remember the name of it, I was using in high school on one the few MacIntosh computers. I do not think it was MCL, because of the timeframe. If anyone has any ideas, I am willing to listen. Anyway, the second LISP was AutoLISP, which was the primary extension language of the popular CAD tool AutoCAD. I use to create a lot of useful functions with that LISP when I was working as a fire suppression engineer in the mid-90’s. So, when I started to get back into the LISP game, I was so flabbergasted that there were many standardized functions and concepts that were very new to me. All of them were addressed in this book.
For example, I read on the web that Common Lisp incorporates object-orientation via the Common Lisp Object System (CLOS). When I started to learn about it, I just kept on feeling that it was just going to be similar to the other statically-typed languages like C++ or Java. However, when I read the book, it gave me some great insight on how to really use classes. Not to just model real-life objects with physical properties and operation, but to do it dynamically via the use of macros. Chapter 24, entitled Practical: Parsing Binary Files is a great example of how Peter demostrates this. It really blew my mind!
But, I digress. I downloaded the source code from the book’s web site. However, I could not use the source code right away. I had a trouble using the code using CLISP, which I downloaded a couple months ago to hack around. I could not get the packages to load properly, so I searched around for a useful LISP system. Luckily, I was using Gentoo Linux and it uses a port of the Debian’s Common-Lisp-Controller (CLC) framework. I also decided to try another LISP implementation, Steel Bank Common Lisp (SBCL), because CLISP does not compile into native code. Once I got the CLC and SBCL installed, I was able to load the book’s packages right away. Awesome!
So, I spent my offline time reading the book and my online time hacking some LISP. I am still trying to (re)think like LISP, rather than trying to apply concepts from C++ or Java back to LISP. I just do not think it will work like that. Hopefully, I can start creating some neat new applications with LISP in the near future.