I’ve actually been working with Lisp in various forms since 2000 or so, when I started working at the Kestrel Institute. They built this amazing high-level formal language for building and refining specifications software specifications. As your spec became more and more concrete, eventually parts of it could be turned into executable code, which in this particular system’s case meant Common Lisp. (Since then, I believe they’ve developed C and Java code emitters, as well, but many of the tools used to implement the language were themselves built in CL, so it always had a major place in their world.)
Not too long after that first exposure, I started following some of the writings of Paul Graham. I think his language Arc first caught my attention some time in 2002, when it was presented in a series of essays about his ideal next-generation Lisp. I agreed with a lot of his points — terseness is good, collections should act like functions, web applications are key to any language in this era — but after about two years, pretty much wrote the whole thing off as vapour.
Lo and behold, I hear via Twitter from my friend Ben that Arc had, in fact, been released. I read the tutorial, which despite being fairly obtuse for anyone who doesn’t have prior Lisp experience, gave me enough of a roadmap to start tinkering. One Linux-compatibility patch later, I was up and running with a minimal Arc environment and web application server.
(Quick impressions after the fold.)
My first impressions were mixed. I like the basic set of forms, and the terseness is a much-appreciated change from the verbose identifiers of Common Lisp and Scheme. Bundling a web application framework (complete with simple authentication and persistence tools) is a stroke of genius, though it is nearly crippled by the absolute lack of anything resembling documentation.
On the negative side, I have to say that the total lack of a reasonable standard library (and similar lack of documentation for the handful of functions that do exist) strikes me as frankly disappointing. Yes, I know this is supposed to be a “preview” release. On the other hand, Paul claims that he’s been using Arc as a primary development environment for some time now.
To that, I can only say that his needs for development tools must be very different from mine. Without basic string-manipulation tools like regular expressions (even in a Lisp-ish form using S-expressions instead of Perl syntax) and tools for XML and JSON processing, I can’t see how anyone could claim to build full-featured web applications with this system. I suspect that any production system using Arc in its present state would spend a lot of time forking helper scripts to handle any I/O that couldn’t be done via S-exps.
(Strangely enough, that was exactly what Kestrel’s Lisp code did in almost all cases other than basic parsing. When we needed to communicate with the outside world, it was via S-expressions on the filesystem or passed over TCP sockets, and it was up to the program on the other end to translate into whatever other formats we needed. That model kept us pretty well tied to XEmacs as a front-end for quite a few years longer than was really seemly…)







Recent Comments