3 ms·
We're detractors because we care... I like Clojure, I've used it for a number of projects. I've given money to rhickey. I think it is very promising. It has
by ohyes 16y ago
We're detractors because we care...
I like Clojure, I've used it for a number of projects.
I've given money to rhickey. I think it is very promising.
It has a lot of good ideas and it is very refreshing to see people tackling current issues in a dialect of lisp. It is also nice to see a lisp with market traction.
That said, there are a lot of things that are 'unproven' about it.
It isn't clear that shared state immutability and transactions are 'the way' to tackle concurrency.
It isn't clear that Clojure's macros are really better than Common Lisp's macros.
It isn't clear that we really want to be tied to the JVM/NET architecture.
(Or that the concessions made to do so are reasonable... stack traces, tco).
I think I could go on if I wanted to.
A large number of features implemented in Clojure are still research topics...
It grates me when proponents of Clojure tout it as 'a modern dialect of lisp,' implicitly asserting that other lisps are in some way decrepit, aging relics from the 80s.
The truth is that Clojure is modern compared to almost ANY programming language, calling it 'a modern dialect of lisp,' while potentially true, is doing a disservice to Clojure, as well as to other lisps which are under active development.
- jacquesm 16y agoWhy is naming something 'what it is' doing it potentially a disservice? What arguments are there to say that clojure is not a modern dialect of lisp? The JVM came about pretty recently (on the LISP timescale), software transactional memory has been around for a while but afaik no mainstream lisp-like language implements it, and so on. That all says 'modern' and 'new' to me. I'm not versed enough in Lisp or clojure to make any statements about the macro issues. What bugs me about clojure is on a completely different level, all those 'x done 'in clojure'' articles that really do nothing to advance the state of the art, as though doing something 'in clojure' somehow makes it worth writing about. And then there's the 'one man show' feeling that is still very pervasive.
- lispm 16y agoTransactional memory has been provided by several of the CLOS object databases. There have been logical language extensions to Lisp which see their data as in a database with transactions (Ap5 would be an example). The JVM does not bring that much new to the Lisp world. What is new in the JVM nowadays is the concurrent GC and the JIT. Lisp runtimes prefer precompiled code. What the JVM lacks for example is easy code loading (think class loading in the JVM), instruction set optimized for Lisp and dumped images. Clojure combines STM, concurrency etc. in a clever way and with the focus on pure FP. It's not that elements of that did not exist before, but the combination in Clojure seems to be novel.
- ohyes 16y agoIt is the tight coupling of the terms that is doing the disservice. It is a modern language. -> T. It is a lisp. -> T. However, I only hear, 'It is a modern dialect of lisp,' when I am being told why I should switch from Scheme or CL to Clojure. This is a non-argument (there is no spec for what a 'modern' language includes). It also has the implication that whatever I am using is in some way non-modern. (Which is an odd attribution for something which is actively developed and I do my daily coding in). Is Java modern? How about Python? Scala? Ruby? It seems like a weird non-category. When I boot up sbcl, it isn't like i'm programming in lisp 1.5. New would be cool, or saying it has modern features, also good. Gonna make a new spec for Common Lisp, Common Lisp the Ancient Language.