Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I recently discovered the Lisp family of programming languages, and it's definitely one of the more diverse and widespread families in the programming language world. I like Elisp because that most wonderful tool Emacs is an Elisp interpreter.

But I was looking for one more Lisp dialect to learn and thought Clojure would be the obvious choice nowadays - until I discovered the well hidden gem PicoLisp. That must be the most intelligent programming environment I have ever seen, like taking the best ideas from Lisp and Smalltalk and adding performance and practicability - and the beauty of parsimony. There is even an Emacs-mode for it. PicoLisp must be the productivity world champion when it comes to building business applications with database and web-client - and that's a very common task. It seems that throwing more and more hardware cores at your PicoLisp application makes it faster and faster, and the database is very performant anyway.

However, reactions to PicoLisp in in general mailing-lists etc. are almost hostile (envy?), and there is absolutely no hype and very little publicity (ie not one book published).

Are there real justified reasons for this (except the vast amount of java-libs accessible by Clojure, I know that one)? Or is the mainstream it getting wrong again (see C vs Lisp, Java vs Smalltalk, Windows vs Linux) and will come to the conclusion 10 years later that the JVM was good as in between solution, but a really fast Lisp interpreter on multicore machines is much better and allows much cleaner concepts?

PS 1: Please note: I'm not interested in Scheme or any Common Lisp dialect, although they might be fine languages. It's just PicoLisp vs Clojure.

PS 2: another thing I like about PicoLisp is its similarity to Elisp in certain aspects (both are descendants from MacLisp?) - it's easier to learn two similar languages. There is so much "dynamic binding bashing" on the web, but two of the most appealing Lisp applications use it.

share|improve this question
2  
I have a bad feeling that this thread will be shut down... because of envy. ;-) – fogus Mar 22 '11 at 17:19
3  
"... the most wonderful tool Emacs ...", oh, you meant Vim, didn't you ;-) – Anto Mar 22 '11 at 18:24
2  
@Anto, Emacs does Lisp quite a lot better than vim. – user1249 Mar 22 '11 at 19:41
9  
That's a lot of holy wars packed into one innocent little question, Mr Thorsten! I admire your efficiency. :-) – Owen S. Mar 22 '11 at 21:19
2  
because picolisp started out as something shared and clojure rides the java marketing train? – user21028 Mar 24 '11 at 8:38
show 2 more comments

migrated from stackoverflow.com Mar 22 '11 at 17:37

7 Answers

PicoLisp looks like a fine piece of engineering, but some design choices are unpopular: default dynamic binding, database integrated but not standard, coroutines but no threads (and no support for multi-core processors?); PicoLisp addresses a number of "solved" problems, looks stodgy, and has no fan base

Clojure has some trendy an innovative stuff: transactional memory, multithreaded, some type inference, etc.; Clojure addresses "unsolved" problems, looks shiny and new, and has a big fan base

share|improve this answer
5  
It's worth noting that PicoLisp was never intended to serve the same audience as Clojure; clearly there are some tradeoffs involved. – Robert Harvey Mar 22 '11 at 17:35
2  
Indeed. Try embedding closure inside another program or in an embedded device, in about 100kbytes. – Prof. Falken Jan 22 '12 at 14:45
1  
Good luck trying that with PicoLisp as well though. I was all "yeah yeah" when he spoke about minimalism and simplicity until I saw that they embedded a web server in it. – XQYZ May 21 '12 at 15:22
1  
I tried and I did. It's not like you have to include all of BOOST to use C++ in an embedded device either. – Prof. Falken Jun 10 '12 at 23:42

I hadn't heard of PicoLisp before now, although I'm familiar with Common Lisp and Scheme. So I can only tell you why Clojure is interesting and worth at least investigating to someone who knows other Lisps.

Although its concurrency semantics and functional programming support is what Clojure is often highlighted for, I think it's an exceptionally well designed language apart from that. Things like the sequence abstraction and pervasive destructuring just make it a nice language to use. Even if it wasn't hosted on the JVM, I would be interested in exploring it. That being said, access to Java and the JVM seems like it could be a brilliant coup simply because it can piggy-back on Java and the JVM's success. I can't speak for the concurrency stuff because I haven't used it enough.

I'd recommend you watch Rich Hickey's presentation for Lisp programmers:

http://clojure.blip.tv/file/1313398/

Since you know some Lisp, it's perfect for you. I think you'll come away with at least an appreciation for Clojure the language, even if it doesn't satisfy your question of why it's actually popular.

share|improve this answer

Clojure also embraces the JVM, which is a well established and honed platform and well as access to the it's extensive Java libraries.

share|improve this answer
+1 - this is by far the most important reason if you actually want to "get stuff done" – mikera Mar 20 '12 at 2:08

I'm about as big a fan of Emacs as they come, but I would be very wary of a lisp that claims similarity to elisp as one of its strengths. Many of the design tradeoffs elisp makes only made sense in light of the limited systems of the 1980s, and elisp is widely regarded by elisp programmers as the worst of the "mainstream" lisps.

share|improve this answer

Are there real justified reasons for this (except the vast amount of java-libs accessible by Clojure, I know that one)?

I think you're underestimating the power of being able to use existing Java libraries. There is lot of Java code out there. Most "enterprise" applications have either Java or .Net APIs. The ability to use and extend these libraries in a functional manner is a massive advantage that Clojure has over other Lisp variants.

Yes, if you're working on a "from-scratch" application, it might make sense to use Pico-Lisp over Clojure. However, if you're working on top of a legacy Java API, it makes a lot more sense to use Clojure. Given that the majority of programming in industry is work on top of existing APIs, it makes sense that Clojure would win out over Pico-Lisp solely for its compatibility with existing programming languages and existing libraries.

share|improve this answer
1  
+1 for this - I looked at other Lisps before and liked many of them, but without access to a comprehensive library ecosystem they never made sense as "pragmatic" real world development environments. – mikera Oct 10 '11 at 8:23

I use Picolisp for little personal applications so here is my answer:

1) a lot of very important parts such as the entire web application framework is not documented. There is a tutorial but it skips a lot of things and what it presents differs markedly for the recommended sample application.

2) The application framework makes very strong assumptions about the look and feel of the application. You must do things Just so or the gui commponents just won't function / won't get populated properly.

3) Has its own database system. Wearing my professional developer hat I would not risk this on a real project. If I recommend an obscure data format that nothing can read and it fails then my job is potentially on the line.

4) As above in terms of security of using the picolisp web server verses an industry standard Web server.

5) Doesn't run natively on Windows.

share|improve this answer

The Java libs thing IS the crux, or rather the lack of libs in PicoLisp. Nobody wants to reinvent the wheel twice, it's a catch 22. No libs no adoption, no adoption no libs.

This is my reason for using both of them atm, not just PicoLisp. If it hadn't been for the libs thing I wouldn't have bothered with Clojure.

share|improve this answer
2  
Right, Henrik, nobody wants to reinvent the wheel. The intention of PicoLisp is to avoid writing extensive libraries, and rather use existing libs implemented in other languages. For that, accessing external programs and libs is made especially easy and transparent. – user45066 Jan 13 '12 at 9:19

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.