Tuesday, March 30, 2010

A Portable LISP Interpreter?

The very first programming language I touched was GW-BASIC, then COBOL, then QBASIC, then FORTRAN, then LISP and PASCAL and C++ and Java, and on to newer things like Visual Basic, ASP, PHP and Javascript, XSLT and so on.  In that chronological order, actually.  But of all those, the one that grabs my attention when I hear its name spoken is LISP.  I spent almost 15 years focusing my programming time on AutoLISP, Visual LISP and dabbling quite a lot with Franz, XLISP and CLOS, but kept going back to Visual LISP (or “VLISP”) because of it’s strong association with graphical environments (AutoCAD).  The combination that Vital LISP brought to the table from the work of Basis Software, later acquired by Autodesk, opened up a whole new world for joining the flexibility and power of AutoLISP with the COM fabric exposed by Windows.

I always loved the way AutoCAD and the VLISP engine provided the substrate for running scripts within AutoCAD much like how Java apps run on the JRE or how PowerShell runs on .NET CLR.  But actually, it dawned on me that a more ideal solution is what you get with KiXtart.  The engine is self-contained and extremely lean and responsive.  Robust and Streamlined, would be two words I would use to describe it. 

Unlike WSH or PowerShell, you don’t have to install anything in order to start executing KiXtart scripts.  You just need access to the Kix32.exe runtime and it just “goes”.  The runtime can be across the network and you can even invoke a local script using a UNC path to the runtime.  It’s ridiculously easy to sit a computer “A”, and run a script sitting on computer “B” using the Kix32.exe on computer “C”, and it works fine.  Ruud van Velsen indeed deserves accolades for not only making this work so well, but for maintaining the vision and direction that keeps it alive today.  Indeed, the KiXtart community is as strong as ever and the online presence is simply amazing.

Why couldn’t there by a similar approach to a LISP runtime?  Is there such a thing?  Every LISP runtime I’ve seen requires labor to set up and there’s the added issues of which dialect is used (XLISP, Franz, Common, NewLISP, etc.).  A stripped-down core library would be fantastic.  Something like AutoLISP but without the AutoCAD-specific functions.  Replace those with added file system, registry, environment, process and WMI interfaces, and the rest tied to COM or even .NET, and, well, geez.  I’d be happy.  I wish I had time to build such a beast.  If anyone has a project going on this, I’d be more than happy to help you test it out and provide feedback.  I’m sure this is a tall order though. 

Just a thought.  Ok, I’m going to bed now.

No comments:

Post a Comment