20080512

New year, new leaf...

While I'm not about to stop ranting (and raving for that matter) I am going to turn over a new leaf and start posting things that I'm doing that may be of interest to an audience greater than one.

This first is Lisp. Unlike many lemmings rushing to the new to them drumbeat of near the oldest language in computer-dom, I got hooked many years ago, even before 16bit computers and IBM. Before Microsoft even!! Long ago and in an S-exp far away, I worked for a small company who had recently moved from selling smoke detectors to selling these new-fangled micro computers. When I wasn't writing the inventory portion of a general ledger package (you know, the one that wasn't boiler plate) I was investigating a product put out by a company in Hawaii, called Soft Warehouse. The product was Mu-Lisp which came with another product called Reduce. While I bought it to acquire Reduce, I was caught up by Mu-Lisp. Here was a small, easy to know, reasonably fast computer language at a time when there weren't all that many for 8-bit machines. In addition to it's virtues listed thus far, the best of all was that it was fun to program in. Who knew? I've always programmed because I like to--- well to be truthful, because I have to. I'm addicted to creativity and programming has one of the shortest needles around. When I wasn't investigating symbolic algebra with Reduce, I was writing a rational number package for Mu-Lisp(so if you just finished your package for CL, ha ha--- I beat you by 30 years!) Ah those were the days™.

At the moment in order to catch up after an absence of 5 years or so, I'm doing a comparitive exploration of 3 Lisps. Scheme, CLISP and newLISP. Not to save time, but only because I know the problem space well; I'm porting my Perl code that deals with the care and feeding of PGN files. PGN stands for Portable Game Notation. This is a standard widely used in the chess world to write chess scores for games played. Without going into detail(later perhaps) the interesting thing about this task is that in order to parse chess games, you have to write the code to actually play the game. This makes it an ideal source for exploration. Each time I do this in either another language or dialect I learn something new about the problem. So far I've done it in C, C++, Basic, Ruby, Python, Perl, newLisp, CLISP and Scheme. If you think you know the best way to do something, try doing it from a different angle. You will find new ideas each time, both in the comparison and in the new ways made available by a different language.

My plan for now is to post comparitive code over the next 'n' rants, not to prove a point, but just to demonstrate what it takes to do the same thing in these 3 dialects. Should be fun...

ℑ♥λ