50 karma · joined June 12, 2015
Clojure (on the JVM) is a lisp-y way to talk to the JVM and the rest of its ecosystem. Because it uses s-expressions, it allows for abstractions that are not possible otherwise. I have used Clojure myself in the past. It was fun.
However, there are still many things that are not polished in Clojure that are well-established in Common Lisp. The debugger of Common Lisp is one of the best out there. Its object system is also top class. Backtraces in Common Lisp allow you to get as much information as you can get from your program. Metaprogramming in Common Lisp is also out there in the top. The inverse, however, is not true. You need to have a PhD in JVM in order to read Clojure backtraces. You can easily create a program then dump it into a single executable with Common Lisp, not so much with Clojure. You want fast startup? Not with Clojure.
If you haven’t spent a significant amount of time with the different kind of lisps, it’s hard to make objective comparisons and judgement—everything that Clojure has would look cool and fancy.
I know some people who share the same sentiments that I have, who won’t reply to this thread. However, I’m a fool to even write this response.
La parolantojn de aliaj lingvoj, preciple la angla-parolantojn mi ne plu kuraĝigas por Esperanton lerni. Estas malŝparo de energio. Anstataŭe, la lingvon mi uzas sen tiu celo.
Bedaŭrinde, mi ne certas se bonan diskuton pri tiu temo ni povas havi ĉi tie. Se estas parolantoj ĉi tie, mi anticipas ke la nivelo malaltas. Espereble, pli fortan diskuton mi povas havi aŭ vidi.
Kompreneble, mi povas konsenti ke fortas Esperanto. Min mem mi farigis kavio. Mi volis scii, se fakte utilas tiu lingvo. Post preskaŭ kvar monatoj, mi konsciis, ke mi pravis. Jes, fakte funkcias Esperanto. Jes, eĉ la plej bizarajn ideojn mi povas esprimi Esperante. Jes, la lingvon mi subtenos en miaj restantaj jaroj.
If we’re going to talk about CL, here are some of the features that still make it unique:
- live update of a running program, including (re)definitions of classes, condition handlers, etc.
- object system which has multimethods, multiclasses, multidispatch.
- it has a debugger and stepper which has complete access to the stack, with unwind protection
- it has a very strong, unhygienic macro system.
The average programmer does not need a lot of these things because: - the tasks do not demand those features
- the programmer doesn’t know them
- the programmer doesn’t want to or can’t invest time in themI highly recommend it. :-)