ThoughtStorms Wiki

Context : ClojureLanguage

It's terrible at error reporting : ClojureErrorReporting

Quora Answer : Why isn't there more hype around Clojure and ClojureScript?

Aug 23, 2018

Me? I'm trying to hype it the whole time.

I run a meetup of enthusiastic Clojurians. And am happy to teach beginners and give talks for free.

I gave an introduction to Transducers last night.

(Bloody Hell! Transducers are a great and super-powerful idea. And probably only two or three other usable languages - I'm guessing Haskell, maybe OCAML - have anything equivalent.)

No question, Clojure is the nicest, best designed language I've ever met. and one of the most powerful and easy languages you can use "in anger" at the moment.

BUT ...

yes, it's Lisp. And some people find that weird and confusing. And basically think "why the hell should I make the effort when there are all these other cool languages coming along that look much more like my beloved Python / Ruby / C#"

Tooling is mixed story.

On the one hand there are some really wonderful tools. ParEdit is awesome. Once you get into it, you don't want anything else. And it's why you realize that Lisp's syntaxlessness is better than any syntactic sugar could be.

Devcards and Figwheel are sweet! Props to Bruce Hauman.

Leiningen is pretty smooth too. It "just works" most of the time. At least, I don't really push it, so most of what I need, there's already a lein template and typing one line gets my project up and ready to develop.

BUT ...

none of this stuff is particularly beginner-friendly.

ParEdit is in Emacs. If you're already an Emacs-head then you know how powerful and easy it is. But if you're not, that's a big hurdle to get over before programming Clojure becomes "nice".

Programming Clojure without ParEdit or equivalent support probably means a hell of mismatched parentheses. Lisp's syntax is a liability when there's no editor support at all for bracket balancing and other kinds of refactorings.

Lein is for people who are comfortable with the Unix command-line. I'm sure you can use it, and do Clojure on Windows ... but last time I looked it wasn't nearly as convenient.

Clojure debugging still sucks! Big time.

It's a bit better for ClojureScript programmers in Figwheel, re-frame etc. There are some very nice facilities available there.

But for a n00b coming to Clojure, the first thing you're going to do is make the usual kinds of basic syntactic or semantic mistakes we all make when we come to a new language. And be thrown into three pages of obscure Java error reporting that makes no visible distinction between the Clojure level of your code and the Java level of the underlying VM. If you haven't set up something like Cider in Emacs or the right repl, then the whole edit / compile / debug cycle is actually pretty slow and nasty.

Clojure development can be made nice. But I haven't seen it come nice out of any box. And certainly not a box accessible to people who are just starting with Clojure and don't yet have a map in their heads about what's going on.

Clojure still lacks the equivalent of a good IDE which is a) minimal enough not to be heavy like Eclipse / IntelliJ etc , but b) does ParEdit out of the box, c) has a built-in repl and allows you to "live-code" out of the box.

Finally, because Clojure is all about making the underlying platform visible and available, Clojure does inherit some of the bureaucratic fussiness about namespaces etc. from Java. Clojure is still, in one sense, an "enterprise" language. For writing big systems or interfacing with legacy ones. Not throw-away scripts. Or even doing the gluing between data and machine learning that Python has found its niche with.

tl;dr : Clojure is a fantastic super-powerful language. But the tooling and work-environment are basically aimed at professionals. There's no reason that the language itself isn't accessible to beginners. But the whole experience isn't optimized for them. That makes it very different from something like, say, Racket, which is very much aimed at beginners and learners.

Backlinks (1 items)