Linked by Alexandru Lazar on Mon 5th Jan 2009 19:13 UTC
General Development In the age of dynamic languages and closures, most of you have probably heard of a mighty dragon called Lisp (which stands for LISt Processing), whose fans look almost with despise at other languages rediscovering it. Invented half a century ago, Lisp went on to become a de facto standard in the world of AI research, and has stood behind a handful of very neat inventions in the 1980s. Nevertheless, the long AI winter and the drift of technology towards other paradigms have almost lead to forgetting Lisp alltogether; IT has only recently started to rediscover parts of what made Lisp so cool back then.
Thread beginning with comment 342437
To view parent comment, click here.
To read all comments associated with this story, please click here.
kawazu
Member since:
2005-12-11

A handful of places where Lisp is used can be found here: http://bc.tech.coop/blog/041027.html . Some of the links are dead (the blog post is almost five years old now), but it's there all right.


Thanks for the pointer, I'll surely have a look and browse through these. Actually, I am generally enthusiastic about solving problems using tools that fit them best. I would love to, say, use a functional language to implement the computational core of our business application, or something like Prolog in situations in which business rules are to be implemented / evaluated. Maybe in many cases this would even eliminate the need to have custom DSLs because some language in existence might address the problem same as well.

But: In the end, to me so far it seems that, in terms of overall support and tooling, there are Java and .NET and no real other languages completely on par with both platforms in terms of feature completeness, tooling, adoption and "ecosystem". So as long as it's basically about choosing either one of them, throwing in another language to me mainly seems about adding complexity: I need an expert capable of working with this "additional language". I eventually will have to deal with a broken tool chain, being in need of another IDE, different debugging / profiling tools, different deployment mechanisms and so forth in order to get code implemented in this language handled. Plus, in worst case I end up with making a "standalone" application a "pseudo-distributed" one as I am suddenly in need of enabling communication between code / subsystems implemented in different languages, making use of different runtime environments, ... . Maybe, in Java, things like JSR-233 are likely to ease this a little on the long run, but so far I am really really sceptical about that...

Cheers,
K.

Reply Parent Score: 1

alexandru_lz Member since:
2007-02-11

I agree; at its current state, Lisp does not make a good replacement for Java and .NET, not in the real world anyway. Most of those that have used Lisp for complex applications -- including some of the companies listed on the page I've posted earlier -- have complained about the lack of proper libraries. Emacs and SLIME make good enough development tools to be used, and now there are also good alternatives, like the two Eclipse plugins I can't name right now (one was called Cusp I think, I don't remember the other one). Most LISP implementations also have an excellent FFI and tools that can automatically generate bindings based on header files, but that really doesn't make a good replacement for well-written and, most importantly, well-documented actual libraries. In fact, most LISP users are a bit uncomfortable with automatically-generated FFI bindings because, when they are automatically generated, they don't make very Lispish code (and you probably don't want to write C with extra parenthesis).

Granted, there are enough libraries to cover most major areas right now, but there's a great deal of inertia. A few years ago when I first used Common LISP, the only reasonable options for GUI that I had were a toolkit called Garnet (big, complex and non-free) and Xlib bindings.

As for the syntax, I actually find it useful. Keeping track of parenthesis is hard if your text editor cannot do that automatically, but most editors do now. It also helps if it can indent your code properly. I never had problems with parenthesis. There are other problems in Lisp as a language, some of them nicely evaded by newLisp though.

It's hard to say whether these are better or worse times for Lisp. It does get a lot more attention, and (unlike some years ago) there is some proper documentation available, like Practical Common Lisp, but simply being is the spotlight is hardly enough. Unless someone manages to make up a decent, active community that actively contributes code and ideas, like that behind Perl, Ruby or Python, Lisp is really doomed to be just the language that was cool back in the 1980s (which, for large values of 1980s, really was half a decade ago :-D)

Reply Parent Score: 1

spiderman Member since:
2008-10-23

The IDE and tool chain part is the easy part, really. If you have some clean code in lisp that translates into a mess in java, then you should use lisp, because managing an IDE and installing a tool chain for lisp is nothing when compared to debugging messy code: THAT is the hard part, and the bigger the code, the harder it gets. For small programs, it's ok to use a random language, but when your programs have more than 100 000 lines of code, you better choose the right language, no matter how hard it is to install an IDE. When you have more than 1 million lines of code, you spend less time learning a new language and reading clean code than reading bad code in the language you know best. When the code gets really big, even writting a new language from scratch is easier than using a less than perfect language for your project.

Edited 2009-01-06 14:01 UTC

Reply Parent Score: 1