Smalltalk is famous for its amazing “live coding and debugging” IDE/runtime environment, which is primarily responsible for Smalltalk’s incredible productivity. However, Smalltalk is not unique in having live coding. Traditional IDEs like Visual Studio and Eclipse have attempted to emulate similar capability with varying degrees of success. None can match Smalltalk’s elegance and fluidity in this regard.
It was brought to my attention that Common Lisp also has this capability, so I decided to take a look at it…
Getting started with Common Lisp is not nearly as easy as getting started with Smalltalk. The entire procedure is unbelievably arcane. I chose the popular SBCL (Steel Bank Common Lisp) implementation for macOS (the recommended version 1.1.6). Installing it was no sweat, but getting the recommended “IDE” up and running was a bit of an ordeal.
First, you install Emacs for macOS, my chosen development platform. Then comes the frustrations with installing SLIME (Superior Lisp Interaction Mode for Emacs). The documentation really sucks because I encountered this issue. And after more hair-pulling, I found I had to add this to .emacs:
'((sbcl ("/usr/local/bin/sbcl") :coding-system utf-8-unix)))
Once I got SLIME working, I realized why I hated Emacs when I first used it nearly 30 years ago: I Don’t Speak Klingon. While you can do live coding with Common Lisp and SLIME, it is decidedly less pleasant than doing it in Smalltalk. Smalltalk’s graphical and easy-to-use IDE is infinitely better for beginners, and far easier for experienced programmers resulting in much higher productivity (more than 2X higher!).
Common Lisp itself is a more complex language than Smalltalk, too. I like Scheme, but Common Lisp is a whole other beast. Thus, I’d always recommend Smalltalk over Common Lisp.
UPDATE: There’s an easier way to setup Common Lisp and SLIME.