by logari on 7/29/19, 12:03 PM with 3 comments
If you know other languages that you actively use in production, how does clojure stack up/compare against those languages?
by slifin on 7/29/19, 12:49 PM
Clojure is the only language I know that has a library that does full-stack graphs, from server to client, always a graph until execution time (Fulcro)
Clojure is the only language I know that has a datalog based query language against an immutable time travelling database that allows you to write one query against your database and retrieve nested sets (Datomic)
There's a lot of breakthrough ideas in Clojure that don't spread beyond Clojure, but they flow into Clojure from other languages because Clojure is a parasitic language
Clojure could lower its barriers to entry with more "cool" landing pages, prettier documentation, the kinds of things that attract "new hip" developers
I myself gave up with it initially until I discovered Parinfer
by iLemming on 8/4/19, 11:37 PM
Other reasons:
- Spec - people dismiss Clojure because it is dynamically typed, without even checking out Spec. You can do things with Spec that most static type systems simply can't do. Also property based, generative testing derived from specs is so cool.
- Clojurescript. It is probably the most "production" ready alt-js language. I've used Coffescript, Typescript, Livescript, GorillaScript, IcedCoffescript, GHCJS, Babel, Traceur, looked into Purescript, Elm and ReasonML. Clojurescript today is truly the only practical choice.
- Stability. I don't know any other language ecosystem, where you can grab any old library, update a bunch of dependencies and still have a high chance for everything to work.
- Consistency. Clojure's standard library is pretty nice and predictable. Nothing can really compare to it, even Python's famous "batteries". Javascript doesn't even have standard library, instead you have to choose from lodash, immutablejs, folktale, rambda, crocks, sanctuary, fantasyland, etc. etc. Sometimes people keep them all in the same codebase. Because of that consistency in clojure.core functions, you can actually share code between front-end and back-end.
- JVM. People dismiss Clojure, because it is hosted on JVM, but they overlook the fact that JVM is very mature, extremely well-done piece of technology. Try deploying, maintaining and scaling nodejs clusters. It's not fun.
- Syntax. Do you know how big is the precedence table in Javascript? It's like over 25 items in it. Clojure doesn't have a precedence table. No need for it. Do you know how many things can be falsy in Javascript? Six. In Clojure - only two. Javascript has 64 reserved words. Clojure has none. This all makes things so much simpler.