6 ms·
I'll offer a different take: Clojure is settled. It found its niche: a small/medium group of experienced professionals who like its practicality and power. Ther
by nepeckman 8y ago
I'll offer a different take: Clojure is settled. It found its niche: a small/medium group of experienced professionals who like its practicality and power. There's a comment somewhere else in this section that Clojure devs are more experienced on average than JVM devs. I'd like to add another stat from the State of JS survey[0] that went out a while back. Developers who used ClojureScript had the highest salaries and most years of experience when compared to other compile-to-js languages.
This narrative makes intuitive sense to me. Clojure is not the most beginner friendly language. It goes harder on functional programming concepts than the popular scripting languages, which is a bit of a learning curve. The cultural tendency to prefer smaller scoped libraries to broader frameworks means puts more cognitive load on the developer, who has to decide which libraries to use and how to wire them up. But this is a positive attribute for a more experienced developer, who might have strong opinions on how an application should be structured.
[0] https://2018.stateofjs.com/ https://2018.stateofjs.com/
- pr0tonic 8y agoClojure is not the most beginner friendly language. I really disagree here. My first job out of college was at a Clojure shop and it has been the easiest language I've ever learned. There is a small hurdle of switching to lisp syntax when all you've ever used is C style languages, but that's about it. I also find frameworks more effort to learn than pulling in a small library that does the one thing I need.
- nepeckman 8y agoI can really only speak from my personal experience here. I learned Clojure on my own time in college, and it took some time for me to understand how to deal with things like immutability, laziness, and pure functions. After I did finally 'get' it, I was unable to convince any of my classmates that the initial effort was worth it. I love the language and its opinions, but JavaScript (another language I learned on my own time) was probably 10x easier.
- jimbokun 8y ago"I learned Clojure on my own time in college, and it took some time for me to understand how to deal with things like immutability, laziness, and pure functions." I suspect much of that time was spent "unlearning" habits from procedural languages. I know Carnegie Mellon now teaches functional programming as the introductory course, and only introduces advanced topics like "mutability" later. I think that sequence makes it easier for beginners to reason about what their program is going to do and experience less frustration.
- hombre_fatal 8y agoOne thing that makes Clojure hard for beginners is the tooling. For example, consider how a beginner can write Ruby and Python in notepad.exe while a lisp would be insufferable (and a common, awful first experience for that reason). Also, some of its best features, like cider/nrepl and Paredit, are hidden behind yet more tooling and keyboard shortcuts. It's certainly a filter.
- dragandj 8y agoIs there one single beginner that starts their programming journey with notepad.exe? I've never seen a single one, and I see hundreds of them each year.
- puredanger 8y agoI did!
- WillPostForFood 8y agoNotepad++? Textmate? Look at the first paragraph of the first chapter of Chris Pine’s Learn to Program. Now that you've gotten everything setup, let's write a program! Open up your favorite text editor and type in the following: puts 1+2 Save your program (yes, that's a program!) as calc.rb (the .rb is what we usually put at the end of programs written in Ruby). Now run your program by typing ruby calc.rb into your command line. It should have put a 3 on your screen. See, programming isn't so hard, now is it?
- goatlover 8y agoWhy not just start at the REPL or with a Notebook? Having an interactive environment seems like it would be easier to learn the language. Then they can move to a code editor when they're ready for writing more complex programs. It's this sort of thing that probably drives the likes of Alan Kay crazy when even learning a language isn't interactive by default.
- WillPostForFood 8y ago
- garamond97 8y ago> Clojure is settled. It found its niche: a small/medium group of experienced professionals who like its practicality and power. Agreed. I'll add though that the problems with Clojure are soft ones. Here's my summation: * it's business- and Java-friendly. Enterprise-focused. * it's quite beautiful, though steeped in Java-isms * its license is GPL-incompatible * it's not a community-focused language and project; it's Cognitect's [edit: Rich's] project which they're graciously sharing with us. That last one (IMO, the last two items) is a problem. For example: * docstrings. Real improvements from the community? * Lein? The clear winner, and yet for the longest time there was no mention of it in the getting-started guide on clojure.org, and then Boot was created. And then clj. NIH? * It took ages until they began accepting PR's for their docs. * I don't know the status of improving error messages. They've been complained about for years. Clojure is Cognitect's [edit: Rich's] industrial-strength enterprise-ready Java-replacement and they sell consulting services for that. That's what Clojure is for and it's very good at that. It's also a seductively beautiful language, but if you're expecting a community-driven project with grassroots adoption and support, you're going to be disappointed.
- puredanger 8y agoJust a clarification, Clojure copyrights etc are owned by Rich Hickey, not Cognitect. Cognitect pays for all of the core development team salary, infrastructure, etc. docstrings - we apply many docstring fixes in every release. NIH - are we literally never supposed to try to make anything new? Doesn't this non-argument apply to literally the creation of every language, library, and tool? This is silly. clj has different (quite clear) goals than Lein or Boot and both doesn't do things they do (like builds) and does things they do not (like git deps). We have been accepting PRs for docs on the site for 3 years. Who cares how long it took before we started doing that if we're doing it now? Wouldn't it be more productive to praise for what you like than crap on how someone used to do something you didn't like? Isn't it a good thing that Clojure is such as productive tool that it can support a consulting company that can afford to pay decent salaries so the core team can continue working full time on Clojure making it even better? This is a good thing. I suppose we can also ignore the hundreds of tickets, patches, and contributors to the language, many of whom have nothing to do with Cognitect or their consulting, as that's more convenient for this line of reasoning. Do you think Clojure would be in a better place today if it did not have this support from a company willing to champion it? How often has that been a successful strategy for languages?