So I have been getting my hands dirty with FUSE and it’s C API lately. Since I have only been using Python for almost all of my major projects, the experience has given me a newfound appreciation of a type system and how much it can help programmers understand large, complex code bases and APIs, especially ones that have little to no documentations.
But I still love all the benefits that dynamic languages bring, primarily the ease and speed of which they enable one to get a program up and running, so I spent my evening searching for a dynamic language with a type system. That’s when I accidentally ran into this little gem of a comment on Hacker News, which mentioned that Common Lisp also has a type system. A gradual/optional typing, to be precise, among other intriguing features.
So I have decided to take the plunge and learn Common Lisp. Specifically, from the Practical Common Lisp book, which many people recommend as one of the best introduction text on the language.
I have gone over the book once, and, well, I’ve to say that they are correct, as the book really is great. It has a very clear and concise prose and does a great job of explaining even the more complex and esoteric parts of the language (this is the first book that made me grok generic functions and the power of Lisp Macros).
All in all, the book is great, and the experience with Common Lisp has been a great one. The language really is as powerful as many Lispers said. Hell, how many language let you change the grammar of the language itself! (Using the ridiculously power Common Lisp Macro, of course.) I have heard that Lisp has no syntax, but to actually understand what that means really blows my mind.
Also, the Common Lisp type system exceed my expectation. Not only does it provide type checking, it can also act as a way to optimize your code (à la Cython) if you use the compiler that supports such feature (namely SBCL). And not to mention the other features of the language. The CLOS, the Meta Object Protocol (MOP), etc. Heck, it seems that the only reasons Common Lisp isn’t more popular are because of its unique syntax, the lack of libraries, especially compare to newer languages like Python or Ruby, and the lack of de facto standard compiler (Common Lisp has many different compilers, each with its own unique set of features that may or may not be compatible with one another).
Anyhow, I look forward to use Common Lisp in my future projects and getting to know the language ins-and-outs better.