5 ms·
Why Clojure will win
- dustingetz 13y agomichaelochurch's closing sentence: "Unlike the typical enterprise Java stack, it’s optimized for lifelong learners. That, above all, is why it will win." Here's a speculative reason why it may not win: Java, Ruby, PHP, Python all won because intermediate level programmers could, all of a sudden, successfully build 2000-era sized apps. These languages are not doing so hot for 2013-era sized apps. It now takes extreme skills to successfully ship 2013-sized apps which is why a small portion of the programmers are making most of the money. The next language to win will be the one that lets an intermediate team ship apps again. Java let your average C++ programmer build much bigger apps without crashing. In 2000, Java forced you to program right by 2000 standards; the programmer needn't have figured it out himself. A language that lets a strong architect say, "NO! you CANNOT do I/O in the view, that goes in the controller!", that lets an architect shape what good code should look like and have the language enforce it, can lead a team of intermediate programmers to success. Clojure is like a musical instrument - a brilliant artist can do amazing things, but a mediocre artist will produce mediocre output. Clojure works great if you have 5 brilliant architects collaborating - Datomic, core.async, ClojureScript, all these are outputs of brilliant minds collaborating; the company behind these products has a reputation for only hiring the best of the best. But I think a business can make more money by putting 5 brilliant architects on 5 separate projects and giving them a bunch of intermediate programmers. The intermediate programmers learn; the architect multiplies; the pointy haired boss gets rich, everybody wins.
- sultezdukes 13y agoI never did see his definition of "win", but Clojure does have a great community and I consider that one of its greatest strengths. That said, I can never see Clojure "winning" as in how Java "won". For all of Clojure's strengths, it's at best an intermediate step up from Ruby, Python, Perl... It's not that next order of magnitude leap of productivity that is necessary to "win". The research just isn't going in that direction. The research is going into type systems and static guarantees. And I think the real productivity boosters of the future will be in very smart tooling - a conversation with your IDE I would say. Maybe Clojure could have different views (different surface syntaxes). Maybe it could be the basis of something like intentional programming. But straight Clojure with Emacs isn't going to be "winning" in the big way.
- qammm 13y agoI like Clojure but I currently don't see any enterprise adoption of it. I see some startups and some students and hobbyists using it. Interestingly Scala seems to get some traction in enterprises here in Germany. I think enterprises love a lot of language features, complexity, security. Maybe Scala with its everything and the kitchen sink feature set, static type system, Java-like syntax and last but not least OOP appeals more to the "manager-friendly conservatism" as the blog author says.
- happy_dino 13y agoWhile I can't speak of traction in enterprises in Germany, I wonder what the notion of "Scala with its everything and the kitchen sink feature set" is about. This seems to be a popular meme, right until someone asks for details – crickets chirp.
- qammm 13y agoWell, with "Scala with its everything and the kitchen sink feature set" I mean that Scala incorporates almost all language features one can think of for a statically compiled programming language (I don't think it makes sense to distinguish if a certain feature is provided by the language itself or a library as in Scala that distinction is fuzzy): - type inference - classes - interfaces (sort of: traits) - methods - variables (var) - immutable values (val) - higher order functions - singletons - functional programming: map, flatMap, reduce/fold, ... - actors - coroutines (I think there was a compiler plugin for that) - implicits - powerful type parameters - Futures - it even has a turing complete type system That is good and bad. Good: you can probably find good use for every feature Scala has. Bad: On a sufficiently big project with one or more extra clever developers most probably every feature will be used and that will make it extra hard to understand for normal software developers that have to maintain it for long years after the original extra smart developer already left the company. See it a bit like that: On a hard to understand scale with 1 being easy to understand und 10 being extremely hard to understand Java projects can go from 1 to 6 and Scala projects can go from 1 to 10. Personally I like simple languages more. And I don't need a compiler to catch errors that a unit test would also catch.
- happy_dino 13y ago> but it will win in the next 15 years in a major way, > because it is already one of the most interesting the most interesting ... what? Anyway, I think they have already won in a major way: The managed to build a community which is supportive and friendly. This is a huge deal when you have a look at the poisonous behaviours of individuals and the wide-spread arrogance typical in most Lisp communities. Before I learned about Clojure, I certainly wouldn't have believed it if someone told me that there was a Lisp-like language without the pretentious assholes. > An enterprise Scala project, for example, is typically > going to present the frustrations that come with > components that live outside the language. Learning Scala > isn’t that bad, but Maven and Spring and Hibernate? Ouch. > In Clojure, most of the typically “external” needs are > provided with idiomatic libraries that can be reasoned > about within the language. That doesn't make much sense. One can do exactly the same in Scala. The big improvement on Clojure is that it is completely pain-free and seamless to keep the old components around and migrate gradually to better solutions (or just keep the legacy parts which work – why bother changing it?). > while every static language worth its salt has an > interactive mode (“REPL”) it doesn’t have the same > first-class-citizen feel Maybe this has changed, but the last time I used Clojure's REPL, it was completely unusable, with basic things like auto-completion, history and navigation being completely non-functional. I think the opinion voiced in the article is interesting, but past experience tells us that the chances of a Lisp to get even slightly popular is low to non-existing.