Hacker News new | past | comments | ask | show | jobs | submit login

As a language it is a work of wonder and it focused and refines thinking about programming. Learning it will make you a better programmer in whatever language or paradigm you more commonly use.

As a tool for building things it varies. I only know about the web, and on the web it's probably best as a secondary language to do heavy lifting as a service rather that the backbone of a SaaS, where Django or Rails will get you where you want to be faster. Trying to do fairly common web stuff in Clojure is a lot more work and happens at a much lower level of abstraction, even if you use curated selections of libraries like Luminus. The focus on libraries over frameworks is enticing for some engineers who want to spend a long time building reliable and totalized systems, but for quickly building out features it leaves a lot to be desired. The ecosystem also assumes you are going to make an SPA in ClojureScript. (That said, Fulcro is fascinating if you are committed to the SPA way of doing things; the way it manages data flow seems unique, at least to me.)




IMO, the ClojureScript SPA ecosystem is a stronger competitor in its domain than Clojure on the backend.

Re-frame in particular is a gem. It's as though someone tried the React/Redux stack, thought long and hard about actions and selectors, and realized that with one or two more pieces, everything falls into a beautiful, purely functional harmony.


I have the exact opposite opinion!

Clojure on the backend is awesome because you can use mature, stable, pure Clojure libraries for almost everything and it works together beautifully.

ClojureScript on the other hand suffers from constantly having to interop with JS libs and tools, or trying to wrap them, with many wrappers being outdated or having a bus factor of 1.

I feel like the advantages of CLJS have eroded over the past few years:

- TypeScript has fully taken over, generalizing the advantages of static typing

- JS libraries have adopted functional patterns, narrowing the comparative advantage of CLJS

- Tools like create-react-app have emerged to simplify project configuration, while CLJS is still figuring things out: https://clojurescript.org/news/2020-04-24-bundle-target


Which JS libraries do you think have best adopted functional patterns?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: