|
Does Lisp have a role to play anymore? After all it's one of the oldest computer languages, dating back to the late 1950's. Has it been superceded by "modern" languages like Java, C++, and Python? Since the beginning, Lisp has been associated with artificial intelligence research since it can be used to program at a very abstract level. When AI failed to produce much in the way of tangible results, it was labelled a failure and, to a degree, Lisp was pulled down with it. But that was more than a decade ago, and now Lisp has had time to shake itself free from AI and stand alone on its own merits. Lisp has begun to experience a sort of revival as a regular programming language rather than as an AI research relic. A number of articles have been published recently that advocate the language features of Lisp (closures, macros, optional and keyword parameters, variable capture, etc). See Lisp as an Alternative to Java by Erann Gat, and Beating the Averages by Paul Graham. (Actually, all the articles by Paul Graham are worth a read.) Development time for Lisp applications is extremely short relative to other languages. It has interpretive, interactive development environments, and yet it can still produce compiled executables that easily outperform Java and approach C/C++ speeds. Given that most software projects have extremely aggressive development schedules, it seems that a language like Lisp would be well-suited for them. Why is it that Lisp is not used more often? Part of the problem is that while Lisp is extremely powerful as a language, it is lacking in other areas. Contrast with Java, for example: Java, as a language, is relatively weak. It lacks many of the more abstract features like closures and macros, and offers only a subset of the OO features in C++. What Java has going for it, though, are things like specifications that have industry acceptance (take J2EE for example) and a well-funded company standing behind it to champion its cause with advertising, conferences, technical support, etc. (Note that, interestingly enough, this can also be seen as a weakness .) Java has a library that includes a cross-platform GUI and threads, which has contributed to its success. It also includes a set of tools like jar and javadoc that provide a consistent way to document APIs and deploy apps. What JACOL is aiming to do is provide a simple way to bridge these two worlds; Java and Lisp can both be used in apps for their respective strengths. Java can be used for the overall application framework and make use of standard APIs and specs, and Lisp can be used for business logic, application configuration, user interaction, scripting, reporting, etc. The more Lisp that can be worked into an app, the shorter the development time will be. |