Ask HN: Is Clojure Dead?
86 points| thisiswrongggg | 3 years ago | reply
Are they just in later stages of hype cycle or are they dying out the same way perl did?
For better or worse most of news/fuzz these days seem to be about Rust (not that this translates to actual job postings though).
PS: Asking because I want to delve into a functional language but I cannot bring myself to do this seriously if it doesn't translate into market value.
[+] [-] eggsyntax|3 years ago|reply
So -- it's a niche for sure, but a very successful niche, and one that many people are very happy in. There aren't a ton of jobs out there relative to, say, Python, but there are also fewer people competing for those jobs, so it works out fine for individuals. It can be tricky to find your first Clojure job, but I think that's true in most languages.
I plan to stick with it for the foreseeable future, because there's no other language that I like nearly as much, or can be nearly as productive in.
[+] [-] nextos|3 years ago|reply
[+] [-] moomin|3 years ago|reply
Yes there commercial jobs out there, yes there are big names that use it, but it’s an increasingly insular community, it’s ceased growing, a lot of people have moved on, and it never really found a niche.
Established programming languages never “die” in the sense of dropping to zero, but to the extent that the question is meaningful, Clojure’s dead.
[+] [-] sgt|3 years ago|reply
[+] [-] johannboehme|3 years ago|reply
[+] [-] dragandj|3 years ago|reply
I believe you that you haven't see much about Clojure over past 2 years of so. But the cause might be that you simply haven't looked at Clojure in the past 2 years of so. OTOH, I've seen plenty of Clojure in the same 2 years. Perhaps most of news/fuzz is about Rust, but I haven't seen much of that, since I'm not following the news sources that talk about that.
In the end, it depends what you want to do. If you want a great programming language with vast ecosystem and decent number of job opportunities, Clojure is still the thing. If you wish to participate in the most mainstream thing, I believe the Python/Java/Javascript is the answer. But then you're competing with 30 million of other job seekers there.
Perhaps Clojure can't rival the Cardashians or Lady Gagas of this world in the amount of news (for better or worse).
[+] [-] bsder|3 years ago|reply
The main issue is that there are other JVM languages nowadays that don't suck--that wasn't the case back in 2009. So, if you wanted the Java ecosystem but didn't want Java, your choices were quite limited. You had Scala (just ... no) and Groovy (oh, hell, no) and ... Clojure.
Since then, Java, itself, has gotten a lot better, and there have become a plethora of JVM languages since. In addition, a lot of languages now have "package managers" like lein. They have also adopted "default const-ness". So, a lot of the issue is that things that were unique to Clojure are no longer that unique in this generation of new languages. Finally, the JVM ecosystem doesn't have the same enterprise pull that it did 10 years ago ... enterprise installations back then only had the JVM, while now you can generally count on a version of Python also being installed.
Computer language adoption is slow in spite of what everybody thinks. Pick a language that you can use as a tool for the future, and don't worry too much as long as it isn't actively un-popular. You'll have to learn a new computer language about once every 15 years anyway.
[+] [-] johannboehme|3 years ago|reply
Clojure may not have the biggest audience but like others said, it generally focuses more on stability, so using libraries that haven't been updated a while is more of a plus-point and don't mean they are outdated.
Personally speaking, Clojure really brought back the joy of programming and i would never willingly go back to developing in a language without a REPL. The tight feedback loop you have while molding a running program in your editor and the constant dopamine drip feed it causes are just too addictive.
[+] [-] sshine|3 years ago|reply
Languages that reach the maturity Clojure has never die, they become undying.
There are active Perl groups in some countries. Perl is so undying. Clojure less so, but...
It's a spectrum where Clojure neither has massive adoption (1.51% in SO's 2022 survey [0]) or rapid community growth (compared to hyped or massively adopted technologies).
Clojure is listed as the top paying language in StackOverflow's 2022 survey.
Clojure is an acquired taste. And it isn't a bad one, either!
[0]: https://survey.stackoverflow.co/2022/
[+] [-] eggsyntax|3 years ago|reply
Seconded; it's pretty jaw-dropping!
> The tight feedback loop you have while molding a running program in your editor and the constant dopamine drip feed it causes are just too addictive.
Well-said -- I've been needing to write some Python recently, and it's only redoubled my preference for Clojure; the Python shell is a poor substitute at best for the Clojure REPL :(
[+] [-] hcarvalhoalves|3 years ago|reply
[0] https://survey.stackoverflow.co/2022/#technology-most-loved-...
[1] https://survey.stackoverflow.co/2022/#technology-top-paying-...
[+] [-] slifin|3 years ago|reply
https://www.hyperfiddle.net/
https://pathom3.wsscode.com/
https://github.com/HealthSamurai/matcho
Just got my second job in Clojure nearly getting on for double my before Clojure salary
[+] [-] jstx1|3 years ago|reply
2. These languages were never very popular to begin with.
"I was seeing more HN posts about it in the past" doesn't equate to "the language was popular before and now it's dead.
[+] [-] thisiswrongggg|3 years ago|reply
[+] [-] ilrwbwrkhv|3 years ago|reply
Compared to that Steel Bank Common Lisp is rock solid and just works. Even the libraries and documentation are fewer but better.
I did learn a lot from watching Rich Hickey's talks so there's that.
[+] [-] kovrik|3 years ago|reply
Maybe it's just me but I find (SB)CL tooling to be very obscure: ASDF, QuickLisp, Roswell etc. My main issue with it is that it's all written in CL itself and doesn't provide handy CLI tools to execute common tasks (compile app, build package, run tests, deploy etc.). Not to mention that documentation is horrendous.
Basically, I want it to have something like Maven/Gradle/Leiningen to manage dependencies, run tasks and so on. Am I missing something?
[+] [-] johannboehme|3 years ago|reply
[+] [-] hedgehog0|3 years ago|reply
[+] [-] aynyc|3 years ago|reply
[+] [-] rippeltippel|3 years ago|reply
Having writing Clojure daily for nearly 4 years, my experience fully confirms that survey.
I also noticed the apparent silence around Clojure and its community, which looks like a paradox to me [2]. The Clojure community is actually active and very supportive (the Clojurians channel on Slack incredibly helpful) but it's also very much low profile.
Rich Hickey created Clojure as an independent developer and without extra funding. He's a great speaker, but likely didn't benefit from all the marketing channels available to more popular languages designed in more corporate enviroments, such as Rust and Go.
Being a LISP dialect, Clojure is also quite niche (not the first language you'd learn at school/uni) and definitely not academic, but extremely pragmatical.
Learning Clojure was quite mind bending at first, and I often wondered by my more experienced colleagues kept saying how expressive it is. I now see their point, and get paid quite well for having spent time learning it.
[1] https://survey.stackoverflow.co/2022/
[2] https://piero.github.io/stories/2022/06/23/the-clojure-parad...
[+] [-] zmibes|3 years ago|reply
Clojure will not die for now, for the same reason that it remains nieche - it's a lisp. Arguably the only viable full stack web dev lisp. And lispers gonna lisp. If that speaks to you on a philosophical/aesthetic level then go for it, you will be in good company.
If you want to try to time the hype market then truly best of luck. However, I think choosing to invest in a language that works for you and your way of thinking will be a less fragile strategy.
I'll keep Clojuring for a while at least, because it's a pleasure. Because it lets me reason where other languages would have me memorise. I find memorising syntax tedious. It's not a silver bullet of course - some things just make more sense for to do in a c/rust type procedural language.
[+] [-] pwinnski|3 years ago|reply
Except, just for kicks I add Golang, and it turns out that all of the above are marginal compared to Go[1].
HN posts are very different from general interest, but yeah, I'd go with "Clojure has sadly missed on its shot to become a popular general-purpose language" rather than "Clojure is dead," but your instincts seem right.
0. https://trends.google.com/trends/explore?date=all&geo=US&q=%...
1. https://trends.google.com/trends/explore?date=all&geo=US&q=%...
[+] [-] seancorfield|3 years ago|reply
Clojure is designed to solve hard problems, for people who want something objectively "better" than mainstream tools. That's why it tends to attract more senior developers -- people who've felt the pain of other languages and want something better -- although we also see a steady stream of new developers who are interested in better tools even before they've felt that pain.
Of course it's niche -- it's a Lisp! It's alien. It's "too different" for many companies or many developers to even consider it. And that's fine. The space is big enough for niche languages to thrive and for developers to build careers on them, if they wish to do so.
[+] [-] yogthos|3 years ago|reply
Clojure simply doesn't have the hype around it because it's a mature and conservative language that's not chasing fads. This is a good thing because it's one of the most stable ecosystems I've had the pleasure to work with.
If you're looking for a hip new language then Clojure is probably not for you, but if you're looking to actually get work done using one of the best languages around then look no further.
[+] [-] fm2606|3 years ago|reply
I do have a vague (unrealistic??) idea of maybe getting a PT job using Clojure after studying for a year or so. PT because my FT job has amazing benefits and career potential. We will see. As of right now I am just enjoying learning Clojure and Lisp-style language.
[+] [-] eggsyntax|3 years ago|reply
I'm not having any luck finding it -- if you find yourself more eager (heh) I'd love to get a link.
[+] [-] the-alchemist|3 years ago|reply
[+] [-] miguendes|3 years ago|reply
[+] [-] xmlblog|3 years ago|reply
[+] [-] bjourne|3 years ago|reply
[+] [-] capableweb|3 years ago|reply
For local development, you usually just compile+eval one function at a time as you change them, and those happens under 1ms, not enough to even notice (unless you develop with a remote REPL, but then network is to blame)
For server usage, you usually compile once in CI and put the resulting binary/JAR on the server. A few seconds for startup matters less in those cases.
The drama of slow Clojure startup is wildly overblown, because basically for no other use case than writing CLIs, does the startup time matter so much it becomes a problem.
[+] [-] yogthos|3 years ago|reply
https://babashka.org/
[+] [-] didibus|3 years ago|reply
It only has slow start time, but since you work at an always connected REPL, it's pretty much instantanuous throughout your entire work day. Start it in the morning (takes a few seconds at most), and then it's instant feedback until you clock out.
And for slow start time for deployment use cases that need fast start time, like CLIs, scripts, serverless, you can either use babashka, Clojurescript, or compile Clojure to native using GraalVM.
[+] [-] hk1337|3 years ago|reply
[+] [-] jbn|3 years ago|reply
When I think of how the java streams API is used, it generates lots of garbage (i.e. lots of intermediary allocs), doesn't always make things clearer.. i'm genuinely curious (and in fact i like the streams API, it's just often misused by collecting at the wrong step..).
[+] [-] anotherhue|3 years ago|reply
[+] [-] Jeaye|3 years ago|reply
Even more, Clojure lives on through its various dialects: ClojureScript (JS), Clojure CLR, Clojerl (Erlang), Fennel (Lua), jank (LLVM C++), Ferret (LLVM C++), Babashka, Squint, and so on.
Definitely worth learning, as it will expand your mind; Rich Hickey's talks are some of the most influential I've ever seen.
[+] [-] pyb|3 years ago|reply
You cannot compare Clojure and Rust in any way as they're completely different design philosophies.
[+] [-] jhbadger|3 years ago|reply
[+] [-] tsm|3 years ago|reply
Do you just mean that things are improving less quickly than they are for, e.g., Typescript?
[+] [-] dudul|3 years ago|reply
That's actually why it is interesting to compare them. Comparing things that are the same would quickly become very boring.