7 ms·
I only worked with Clojure professionally for a couple of months, but the experience was less than stellar. Most of it probably had to do with the codebase bein
by klibertp 10y ago
I only worked with Clojure professionally for a couple of months, but the experience was less than stellar. Most of it probably had to do with the codebase being written by people without any experience, but a couple of problems could be traced back to the language itself.
I'm preparing to write a lengthy post comparing Clojure and Racket, the other Lisp I have been using for personal projects for a couple of years now. My opinion is that Racket is a better language overall, although it may be less practical in terms of writing production code and it certainly lacks some of the nice features Clojure brings. On the other hand, many of these nice features are available as libraries (not only in Racket - in most Lisps, including Elisp and Common Lisp).
For the last two years, I used StumpWM as my window manager and so I learned some Common Lisp. Again, as a language, I think Common Lisp is still better than Clojure, although it's definitely stranger.
I use Emacs as my default "computing environment", so I naturally learned Elisp, too. This is the only Lisp I used which I'd consider inferior to Clojure, but even then it works quite well for its use-case.
All in all, from the perspective of Lisp family of languages, Clojure doesn't seem to be exceptional in any aspect. It does have nice features, and I bet it feels much better compared to Java, but it also has some downsides to it which are irritating when coming from Racket or Common Lisp.
- phrygian 10y agoI'd like to read your post when you publish it.
- klibertp 10y agoSend me an email (address in my profile), I'll ping you once it's ready.
- detaro 10y agoAny chance of talking you into adding a feed (RSS, Atom, or h-feed markup on the existing html pages) to your blog?
- klibertp 10y agoDefinitely possible - I'll see what I can do over the weekend.
- klibertp 10y agoOk, so I managed to add RSS-like thing to my blog. The format works with my RSS reader (some simple Chrome extension), but let me know if it doesn't work elsewhere. I even have a post about it: https://klibert.pl/posts/rewriting_the_blog_again.html https://klibert.pl/posts/rewriting_the_blog_again.html ;)
- detaro 10y agoYes, works! (article content in the feed would be nice, but as long as headlines are there and the urls are correct it's ok in my book ;)
- mebassett 10y agoI've "shipped" a few racket projects in "production" now, but have never used clojure - only read about it, including posts like the above. I've had more than a few people tell me about how amazing clojure is as a language but never from people with experience in other lips. I'd love to read about your experience.
- venantius 10y agoThis experience is extremely common. I have lost track of the number of people who have formed a negative opinion of Clojure because they were forced to pick up the pieces of a half-baked project written by someone who wasn't familiar with Clojure or its idioms. It should go without saying that this should not actually reflect poorly on Clojure as a language.
- cle 10y ago> this should not actually reflect poorly on Clojure as a language. Why not? If a language's goal is to be practical (as is Clojure's), then it should take practical concerns into consideration. This is something that the Java community definitely gets right.
- sova 10y ago>Why not? Because someone who has never heard of map/reduce/filter/partial will need to do some studying to leverage the spine of the language in order to make living, breathing code-organisms.
- jug 10y agoI have a feeling this issue can be made more abstract and cover more languages, more paradigms than just that of Clojure. The real problem here does not seem to be Clojure, but finding developers as well as faith in new (or small) languages to build that solid, big project that has stood the test of time before you abandon it for something you have an easier time finding developers for, or faith in.
- agumonkey 10y agoI'm surprised by my preference for old, cryptic, stranger languages. car cdr are better symbolic representation in my mind than first and rest are in clojure. Especially when trying to think recursively.. There's a mystique in languages.
- goatlover 10y agoCar and cdr were register names. First and last are logical. Reminds me of Alan Kay complaining how Smalltalk and Lisp eat their children.
- agumonkey 10y agoI know.
- lispm 10y agoThe typical recommendation is to use CAR and CDR when working with conses and using FIRST and REST when working with proper lists.
- gkya 10y agoThe nice thing with CAR and CDR is that you can have combinations like CADR, which is (CAR (CDR A-LIST)). Many structures are rarely linear (say a s-exp repr of a JSON object), and the C*R family of macroes are really useful.
- edoloughlin 10y agoStrange how this is the top comment but it contains no substantive facts.
- klibertp 10y agoYeah, I'm surprised myself... FWIW I wrote it that way on purpose: I don't have the time right now to cover the specifics, and mentioning some things without proper explanation - in the context of PL advocacy - would almost surely lead to a flame war.
- edoloughlin 10y agoNo judgement on your comment. It was a perfectly fine comment. I was just confused as to how other comments with objective examples were not higher up.