Frankly, I love it. After the "zen" of lisp clicked for me, Clojure gave me an OS/2-style "Better Java Than Java". Suddenly I was able to compose standard JVM library stuff in a more-natural and easy way than I could in vanilla Java, I was able to easily define relatively-well-optimized persistent data structures, and I could quickly provide new semantics to the language as I saw fit. Also, the Clojure REPL provides an amazing level of increased productivity.
Do I miss the Hindley-Milner type system from my last job? A bit, but surprisingly it doesn't bother me as much as I thought with Clojure.
I don't know if Clojure was just a fad, but I think that it'll always have a loyal fanbase, like mosts Lisps.
And for anything else there's macros.
I've been making a living using Clojure for a few years now as a solo dev and I don't feel the language is lacking in anything I would care much about. I started with reagent not knowing anything about react or having any Clojure experience and was immediately productive. I was able to augment part of a webapp I had in production in no time due instant feedback loops from the REPL and figwheel. The language is being iterated on but it has already been in such a state in that I'm not keeping up with what's new because I'm able to solve any problem I need to already.
I'm extremely happy with it. I have a lot of interests other than programming and I feel that Clojure allows me to deliver complex projects on time without driving me insane or having to keep up with new trends.
It's very expressive, functional, and allows you to tap into the Java ecosystem if you need to.
Might not be as hyped today as it was some years ago, but the language itself is still a joy to use.
Edit: SWE at exoscale.com here. We're hiring, also for full remote positions!
Your cheapest plan offers 512MB of RAM for 5 Euros a month. There's well over 5 competitors who can get you quadruple that amount of RAM and maybe even double the storage for half that price per month. This is due to renting out space at datacenters, no? I'm no hosting expert.
Thanks for looking into the service. We're certainly not the cheapest in terms of pricing but I would also warn against using RAM prices as the sole way to gauge a service.
To drive low prices a lot of VPS providers tend to have a very liberal way of playing with overcommit, which we don't do. The same goes for CPU.
Our instances should be considered to higher-end families such as the C3 and here you'll see we're playing in the same field in terms of prices.
Many of our clients choose us for performance (IOPS, memory guarantees, etc...), and our geographic and legal situation (no connection to 5 eyes countries, strong privacy laws).
I used Clojure for a long time, professionally. Not much any more. Main issue is that the language is not very readable (a pain point mentioned in these slides) and very hard to find people to work in it. Also more than any other language Clojure is very sensitive to typos in your code. A misspelled keyword results in nil accidentally flowing through your app. It was frustrating to spend time on scaffolding everywhere to catch these things.
Some dynamic languages, worked around this issue in the 90's. Perl for example, if you use 'use strict; use warnings' will catch most of these misadventures.
Having said that, only the most novice programmers make these kind of mistakes. Like the absolute beginners, in the first day or two of exposure to programming.
As a rule almost any shop these days write unit test cases, so that should flush out these kind of bugs.
EDIT: Why the downvotes? People seriously work with programmers whose biggest incompetence at work is typos? Or you think writing unit test cases is bad?
Then you are having far bigger problems related to project management, hiring and overall direction in which you are running your team/company.
Clojure as a tool doesn't aim to fix these kind of problems. And it can be argued no tool will fix these problems.
Those are the kind of things that the computer is best suited to. It's better if the programmer's brain is left to other, more challenging tasks.
By the way indenting code happens to be the most basic of code review checks.
Vim, Emacs, Atom, Sublime Text, Visual Studio, Eclipse, IntelliJ, NetBeans can all auto-indent code for you. Combined with linters they can also automate stylistic checks and coding convention.
I don't know anyone who indents code themselves. The editor/IDE does it for them.
Indenting code is certainly not a code review check. No sane workplace should waste a senior developer's precious time commenting about indentation problems during code reviews. It is a tooling check that is part of CI/CD.
It's useful for your tools to help you catch basic mistakes like that instead of just saying you should work with programmers who are competent enough to never write typos.
Sure every once in a while its possible for any one to drop in a spelling mistake, but those are rare situations in code. Mostly because code is often not a dead piece of documentation, which is read and auto corrected in the human brain. Code works on a computer with well defined interfaces and protocols.
Think of it this way, would you hire a programmer who often makes typos, to write shell scripts that have 'rm -rf'?
If you wouldn't, how often do you trust these people to execute DROP DATABASE <typo_database_name_which_happens_to_be_real>?
There is a big difference between programmers who can put in typos in a sentence in a code comment, and the kind of ones we are talking about.
Edit: Removed comment about Om, since I must be misremembering something. Om uses React and has since the first commit.
is this in public? cursory search did not return any hits.
Om uses React, it didn't predate it or anything. Many of the things Om tried are more relevant to things like Redux, not React proper, so I'm not sure what your comment is referring to.
And as a counterpoint, React just introduced the State and Effect Hooks, but those are both things that Om and reagent (the most-used Cljs React lib) have been able to do for years.
Apparently I was remembering Pedestal. See my other comment.
> Many of the things Om tried are more relevant to things like Redux
> And as a counterpoint, React just introduced the State and Effect Hooks, but those are both things that Om and reagent (the most-used Cljs React lib) have been able to do for years.
These are great evidence for my point, that Clojure has worked as a testing ground for features which more mainstream languages and frameworks then adopted.
E.g., I used to do a lot of PHP, and my last PHP project was in Laravel, which is heavily influenced by Rails, and PHP 7. Many people touted "Modern PHP is just as good as Python/Ruby/Js!" but missed the point that they'd been using tools with inferior capabilities for years.
---
EDIT: Oh! Just figured it out: Pedastal. Yep, originally made by Relevance Inc.
Here's the link of its discontinuation which mentioned React as a big motivator: https://groups.google.com/d/msg/pedestal-users/jODwmJUIUcg/6...
> "But unlike in Pedestal App, you don't have to worry about how fine-grained changes to your App model map to the UI."
That's the part I was remembering.
> "So there is clearly conceptual overlap between Pedestal and ReactJS. Further, David Nolen's work on Om has shown that ReactJS and ClojureScript work very well together."
That's probably why I got this mixed up with Om. This all happened about 4 years ago so I guess my memory isn't as fresh.
My team has been working with Clojure for the past 8 years, and we're extremely happy with it.
"Welcome to the largest survey ever of Java developers ... The survey was conducted by publishing its availability to the Java community at large (via social media primarily), to Java User Groups around the world, including the Virtual JUG, and to subscribers of Java Magazine, the Java bimonthly publication from Oracle Corp."
So the sample is heavily biased and doesn't include the population of JVM users who have never touched Java.
It's been a great choice for us and even the skeptics have become converts over time. I think it's a joy to work with and allows us to reason about our problems and solve them better than many alternatives.
Yes, I know you can find it on some archiving site, but it's non-intuitive. Wish they'd move to Discord or Matrix or... pretty much anything else.
Reminds me of the classic Erann Gatt post: https://news.ycombinator.com/item?id=2308370
(I loved to play with Elisp, Clojure, Lua, Factor, Ion, Ioke and hope dynamic languages become fashionable again someday...)
And it's not even because Clojure is bad for teams, it's because teams often form because there are nontechnical stakeholders, and suddenly an individual contributor's code-writing productivity is a much smaller factor when compared to the communication practices and other parts of the development process outside of writing code.
Python, Javascript and Ruby are very dynamic.
At Motiva, we've dabbled in other languages like Haskell, Scala, Rust, Go, etc. but Clojure has been what sticks for us on the backend team https://github.com/Motiva-AI. We are a fully distributed remote team and we are hiring. Drop me an email.
https://snyk.io/blog/jvm-ecosystem-report-2018
ClojureScript also seems to gain traction. Quite impressive when you consider that Clojure is a language/ecosystem not driven/backed by one of the larger tech companies.
ClojureScript never caught on for the front-end work. There are some substantial services for which Elixir was chosen instead of Clojure.
We’re actively hiring Clojure devs or we can teach those who don’t know it yet.
We’re very happy with it.
So inevitably, someone will ask "Is lib foo still being used? The last commit was over 8 months ago" and then people have to chime in, "yes, it's still in heavy use".
It's also kind of pointless to "update the copyright year" for individual works tied to your name, since the copyright lasts x years after your death. If anonymous/pseudonymous, then it's like 95 years after initial publication date, and you can't just extend that arbitrarily by updating the base year and nothing else every year..
Compare https://www.indeed.com/jobs?q=PLC+engineer and https://www.indeed.com/jobs?q=bash+programmer
Same logic applies to clojure. I think that's the point he's making. Everyone and their 12 year old nephew rockstar developer has questions about java. I also find that clojure questions nowadays are mainly asked in the clojurians slack organization. Immediate feedback is more attractive than waiting around hoping for an answer in stackoverflow.
With any chat interface, it feels like your question may be lost if it's not immediately answered and it's often hard to follow discussions with multiple people chatting. With SO I will spend time to try and formulate a clear question. In general with slack or any other chat I may feel out the room first as it will be a waste of my time writing a detailed question if no one is around to answer.
Perhaps some sort of SO integration into Slack would be the best of both worlds?
Most people looking for help on the internet are searching:
"How do I do X in shell?"
No of people looking for help with the word 'Bash' are likely to be lower.
That's one reason why TIOBE is sometimes way off the real trends.
https://www.tiobe.com/tiobe-index/programming-languages-defi...
This is false.
[1] https://www.cloudfoundry.org/wp-content/uploads/Developer-La...
Apache Groovy fluctuates on TIOBE a lot. Six months ago it was at the same 50-ish position as Clojure, which is its usual ranking. It's shot up only in the past 6 months, which has also happened a lot in the past and is always followed by a sudden fall -- perhaps someone's gaming the search engine rankings. On Redmonk, Groovy and Clojure have ranked equal-ish for a long time. In the CloudFoundry report, Groovy is at the same very low rank as Others which would include Clojure if present.
So Groovy and Clojure are at the same ranking in all rankings I've looked at.
Judging from their backend job postings they seem to use Clojure and Go. .