8 ms·
Clojure's not dying, but it's also not thriving[1]. I think it will continue on as a solid niche language for the foreseeable future, but it's highly unlikely
by virtualwhys 9y ago
Clojure's not dying, but it's also not thriving[1].
I think it will continue on as a solid niche language for the foreseeable future, but it's highly unlikely that the language will grow by leaps and bounds barring some must-have innovation in the Clojure language and/or ecosystem that gets the tech world to take it more seriously.
There are so many options these days that it's tough to stand out from the crowd. Clojurescript, while interesting, is a dime-a-dozen with Elm, Purescript, Scala.js, Typescript, etc. all on offer, and with static types to boot. Also, Lisp itself is a tough sell, mainstream adoption isn't in the cards without a major paradigm shift.
[1] https://trends.google.com/trends/explore?q=%2Fm%2F0_lcrx4,%2Fm%2F091hdj,%2Fm%2F03yb8hb https://trends.google.com/trends/explore?q=%2Fm%2F0_lcrx4,%2...
- swannodette 9y agoI don't really have anything to say about your other points, but the only comparable compile-to-JS tech in your list to ClojureScript is Scala.js. The other options assume you don't see significant value in using the same programming idioms across client and server.
- dragonwriter 9y agoWhile not on the list above, there are certainly others like Opal (Ruby in js)
- nurettin 9y agoI've used Opal for client-side validation of a server-side game's rules. (player makes a move on the client, game rules are played out, just the move is sent to server and server plays the same move again using the same game class) That said, it wasn't a breeze to work with. The compiled object's properties were hard to access. I actually had to serialize it to json
- deleted 9y ago[deleted]
- virtualwhys 9y agoThe point is that most server languages these days compile to javascript. OCaml has Bucklescript, Haskell has GHCJS, Kotlin and Rust compile to JS, etc. Clojurescript and Scala.js are probably the most mature, but getting developers to make the switch when their server language is not Clojure or Scala is an uphill battle. Case in point: I find Bucklescript to be absolutely amazing (generated binaries on par with size of hand written JS) but Scala.js is a better fit since I've been writing Scala for 6 years.
- swannodette 9y agoThat's exactly what I'm saying. You don't choose ClojureScript or Scala.js haphazardly, you're already using Clojure or Scala. Thus it doesn't make sense to lump them into choices that are primarily client-centric like Elm or PureScript.
- amelius 9y agoAlso, WASM is just around the corner, which will probably make this a non issue.
- jbeja 9y agoThere is no value indeed. Why would you the same languages for a domain it doesn't fit?
- lilactown 9y agoAs someone who chose ClojureScript over many of the other compile-to-JS languages without using Clojure on the server, I disagree. Especially if ClojureScript could become more attractive than (or at least have a real solid standing amongst) Elm/PureScript/etc., I could see that being a big boon to Clojure development as well.
- spiralganglion 9y agoWith CLJS on Node booting up as fast as it does, I can envision a world where CLJS is vastly more popular than CLJ, since it's able to deliver a class of experience prohibited by the slow JVM startup. All the other common criticisms are shared by both CLJ and CLJS, so there's a chance that, eventually, CLJ only has the startup time as a knock against it, and CLJS has no such shortcomings. (Ignoring, of course, "Lisp is weird".. don't get me started.) That all said, I think all 'piles-to-JS language bets are off in the face of WASM.
- dragandj 9y agoThere are also things that clj has and cljs doesn't have and this is the top-class virtual machine. lots of us really appreciate JVM, and are not impressed at all by node, and especially its ecosystem.
- spiralganglion 9y agoThat just depends on your background. For a bunch of us folks who come from a non-JVM background, we could say the same about Java. Really, Java and JS are the two biggest language communities in the world, with phenomenal feats of engineering in their runtimes, and a whole host of things to complain about. Since CLJ and CLJS are tied in this regard, I still think the startup time is the only differentiable factor in my proposed hypothetical future.
- ledgerdev 9y agoSo nice to hear someone else say this, and I feel the same about CLJS. And yeah WASM is looking pretty promising (threads/gc/efficiency), and a CLJ like language that targets it directly would be so interesting for the very long term future.
- ufmace 9y agoI'm a Rubyist and don't know much Clojure, but that sounds pretty reasonable. I'm not sure if Ruby would have taken off if it wasn't for Rails. AFAIK, Rails pushed forward a lot of new ideas in web development and really brought Ruby into the mainstream. Going by that comparison, I would think it'd be hard for Clojure to really catch on without a revolutionary framework that you need it to work with, which may be tough to pull off considering that it's all on the JVM.
- mirekrusin 9y agoRails was definitely responsible for Ruby going mainstream, without it, it would slide below Python. More than that: I think that combination of TextMate and Rails brought a huge number of web devs from Windows to MacOS as well. I remember around maybe 2005/6 people were switching from Intel based Windows to, at that time, PowerPC based Macs (transition to Intel was about to happen) just to use TextMate and Rails - image how huge change it was for developers - and they did it and liked it. Good times.
- juliend2 9y agoI was one of them. I was doing some web design/frontend at that time (2005-2006), and the whole Ruby on Rails movement seemed so different, easy to learn, and yet quite productive. And you could develop on a Mac (!!!. Windows XP was my OS at that time). All the rails screencasts I saw featured TextMate, on a Mac. And so the first ActionScript gig I did was to pay for my shiny new Mac Mini. Looking back to it, it seems like a stupid cargo cult effect, but Rails is the main reason I switched to the Mac since then.
- faitswulff 9y agoDitto, thanks to my first job, and I don't regret it, either. Despite recent software hitches, Mac OS has been far and away a superior experience for development than when I was trying to run RailsInstaller on my Windows machine.
- pmontra 9y ago
- moxious 9y agoIt's not really clear to me why, but lisps keep trying and keep dying. Best guess is that in the end, syntax really does matter and lisp just doesn't have enough of it. Whether it's scheme or clojure or arc, every once in a while a new lisp comes along, and they never make it. This through decades and generations of programmers.
- hobofan 9y agoMy (half-serious) take on this is that LISPs are too easy. A lot of little things that are hard in other languages are easier in LISP, which results in you writing the code yourself instead of pulling in a library some else wrote. This greatly reduces both the need and offering of a package manager which usually plays an important role in establishing a ecosystem and community in other languages. In all seriousness, I think that package managers play a big role in the success of modern languages, espcially if the package managers are there from the beginning. As far as I'm aware Clojure was the only attempt at a LISP where a package manager was included from the beginning.
- deleted 9y ago[deleted]
- seanmcdirmid 9y agoLisp used to be the language for AI, could Clojure possibly steal the machine learning niche back from Python?
- ofek 9y agoDefinitely never.
- iak8god 9y agoExplain?
- fnord123 9y agoThere is basically no foreseeable way for the state-change model of language adoption to see a palpable uptick in Clojure. Python is easier to learn. Python is more useful for data munging/cleaning (lower startup time, loads of input libraries). Python has a repl and eval so code-as-data/data-as-code is not an advantage for Clojure as it is over C-alikes. Python FFI is almost free to call into C so end-to-end performance is better than Clojure. Python has the better libraries for ANN (TensorFlow, Theano) and ML (sklearn). Of course, you can apply "arguably" to every statement in the previous paragraph but the evidence appears to bear it out.
- iak8god 9y agoI currently use Python much more than any other language and regularly advocate for its use as a learning language both for formal education and for self-teaching. That said, I don't think most of the below supports your assertion that "Clojure [could definitely never] steal the machine learning niche back from Python" > Python is easier to learn. I have not seen a learnability comparison between Python and Clojure as first languages. Python is definitely easier to learn as a second language if you're already a trained programmer coming from the C family. > Python is more useful for data munging/cleaning (lower startup time, loads of input libraries). Startup time is indisputable, but also barely matters for interactive programming. In Lisps and in Python, I usually just have a repl going for days at a time. The availability of libraries is not a "never" thing -- it's a "we'll see" thing. > Python has a repl and eval so code-as-data/data-as-code is not an advantage for Clojure as it is over C-alikes. You're conflating two different things that people like about Lisps here. Homoiconicity is a separate benefit from having a repl. And though I use it daily, I think Python's repl kind of blows. > Python FFI is almost free to call into C so end-to-end performance is better than Clojure. Python has the better libraries for ANN (TensorFlow, Theano) and ML (sklearn). Clojure is free to call into Java. And I'm sure there's a route to C if that small performance boost really makes a difference for what you're doing. Again, availability of libraries is an obstacle, but not a "definitely never" obstacle.