Thursday, February 09, 2006

 

The road to PLT Scheme

Since leaving University back in 1998 I'd not had any professional reasons to get heavily involed in Lisp. My career had taken me in very different direction (C/C++, Visual Basic).

However my interest in GNU/Linux grew during that same period and with it a more general interest in computer science. From these things and exposure to the downright stupidity that is prevelant in large amounts of the commercial software development world I developed a conviction that there must be a better way.

Following that convinction (and a strong belief in the importance of software Freedom) I found Ruby and started using it for a few things. Ruby is a great language, and I used it as much as I could. Eventually I managed to land a job writing Python code with Cmed. That kept me happy for a while, learning what python can do (which is a lot without much effort). Still however I find that python makes you do donkey work that you shouldn't have to. I can't have been alone in that view because by the time I arrived at Cmed there was already an in-house XML language used to generate vast swaves of python code via XSLT.

XSLT works, but it's akward and it doesn't sit well with python. The quoting issues in generating python from XML are less than pleasant to deal with.

I knew there must be a better way. What was needed was a language that could template it's own syntax. I couldn't think of such a language, until one day I started reading Paul Graham's site. From Paul's postings about Common Lisp and Arc I started to read around the subject a little and came across Practical Common Lisp by Peter Seibel. This book opened my eyes to what was possible with a language that I'd always written off as an archaic AI tool (an attitude they taught me at Uni!).

I've now been playing with Common Lisp and Scheme for about a year. In that time my thoughts on the subject have developed along the following lines:


The fustration then has been that I want to work in Scheme (Common Lisp carries too much cruft and legacy for my likiing) but I can't find a simple, stable implementation with a decent library and bindings for real-world things.

I've tried to work with Bigloo, it seems great, it reads well, but it's never worked reliably for me, and I can't get Biglook working at all. I've been working with Chicken for a while now - it's nice and straight forward and the eggs system is excellent. But chicken lacks a decent GUI toolkit. I've tried qthack (segfaults), sx (libsx doesn't compile), bb (OK, but over-simplified) and I'll not sink so low as to use tk.

This was all rather depressing, until I saw Falling off the wagon with DrScheme on planet-lisp.

DrScheme is the IDE environment for PLT Scheme. I'd played with DrScheme last year some time and decided I didn't like it. The introductory documentation is heavily orientated towards teaching Scheme using a particular text (How to Design Programs) that I don't get on with. What I'd overlooked is that the IDE is written in a very mature GUI library MrED and that it can do wonderful things.

So I've just started a new project and I'm using PLT scheme and MrEd. Most of the coding with still be done in GNU/Emacs with Quack mode, but from time to time I'll be firing up DrScheme to debug code, profile and generally benefit from the wealth of sensible, professional tools this environment provides. We'll see if this is finally the Scheme implementation I've been looking for.

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?