Saturday, August 23, 2008

Lisp or Smalltalk?

I have been thinking about doing all my side projects in Lisp -- due in no small measure to taking the time to finally read Practical Common Lisp cover to cover -- and have been playing around with the various Lisp environments and libraries. Impressions:
  1. Programming in Lisp makes one feel good (I know, this is about as touchy-feely as you can get). The constant effort to abstract things away, looking for ways to automate repetitive code fragments, and so on brings with it a real sense of progress (at least from a programming perspective).

  2. Though Lisp shares the concept of an image with Smalltalk, this is not as readily apparent and IMHO as powerful as Smalltalk; for example, I need to load packages through startup files each time I start the environment.

  3. The Lisp environments are not as friendly as the Smalltalk IDEs where everything hangs together, so to speak.

  4. Library support also seems more cohesive in Smalltalk. asdf-install does provide a way to pull packages easily, but there is no way to see what packages are currently installed in the image, what *are* the 'right' packages to install, etc. Not to mention the need to load packages every time using the startup file.

  5. File-based development seems like a regressive step after programming in Smalltalk. For one thing, I don't know if there is an easier way to load the code from all my files than calling load every time I start the environment.

  6. I have a small homegrown wiki application running in VisualWorks which I wanted to see if I could redo in Lisp. After googling a bit and searching the Common Lisp web sites, two frameworks seemed worth pursuing: WebActions (modelled on Struts) and Weblocks (a Seaside-like continuations-based framework). Weblocks seems the more promising, no doubt owing to the advantages of using continuations.
From a programming perspective, I guess it does not really matter whether I choose Lisp or Smalltalk (unless I run into a situation where the use of macros is the only way to get something done), but Smalltalk does score from a convenience perspective. I think I'll stick with ST.