10 ms·
Clojure for me is the perfect modern LISP, too bad it seems it's dying (happy to stand corrected there)
by eafkuor 8y ago
Clojure for me is the perfect modern LISP, too bad it seems it's dying (happy to stand corrected there)
- edem 8y agoYou seem right. Every metric I can check says it is going downhill. Too bad, I used to go to the Clojure meetups in my area, I even had a talk about Clojure + Emacs.
- joncampbelldev 8y agoCan you list some of these metrics?
- cutler 8y agoSee my comment above re the Indeed.com API.
- xixixao 8y agoMany reasons. S-expressions would be the least of my worries. Java is dying, not on the whole, but certainly in mindset of people who are picking new languages. It’s integration with OSs, which Clojure depends on, is arcane by today standards. Second, it’s tightly controlled by one person, and they happen to hate types. Similar to CoffeeScript, couple years after the language inception people figure out that they miss types. Adding them back in is super tough. And third, abstractions have costs. There is no wide-spread popular LISP, and people should really ask themselves why. We have lots of code generation, and depend on it more and more. But it’s “simple” (or “primitive”). It’s usually one step. You can read the input, and you can read the output. I’m starting to get a sense that macros are like currying. Elegant, beautiful, powerful. But net negative if your concern is to get lots of people to create software together.
- realusername 8y ago> Java is dying, not on the whole, but certainly in mindset of people who are picking new languages Even as a whole it's slowing down heavily now, even Android is switching to Kotlin. The language is already not that trendy but Oracle's aggressive lawsuits is making it even worse.
- knightofmars 8y agoNope. https://www.tiobe.com/tiobe-index/ https://www.tiobe.com/tiobe-index/
- realusername 8y agoI did not say that it's still not used heavily, just that it's slowing down. And C is the second on that list so I'm not sure I would believe this ranking, I have not seen much C jobs for a while now.
- knightofmars 8y ago"I have not seen much C jobs for a while now." Because your anecdotal evidence is more accurate than what this list (which describes its methodology) is showing you?
- realusername 8y agoYeah it is, because their methodology is shitty: https://www.tiobe.com/tiobe-index/programming-languages-definition/ https://www.tiobe.com/tiobe-index/programming-languages-defi..., they just use the google popularity of "[name] programing", it's not a mesure of anything. C jobs are very rare, and it's certainly not 14% of the programming jobs. Putting Java and C on the exact same level is a good sign something is wrong with what they are doing.
- Tomte 8y agoC jobs are certainly much more than 14%. Believe it or not. Most software developers don‘t hang out in internet forums, commit to GitHub or write blog posts about JavaScript frameworks. They just do their day job and go home to their family.
- pjmlp 8y agoYeah, dying on SV startups maybe, that end up rewriting on Java if they ever manage to go big.
- pka 8y agoRe macros, I had a similar thought this morning. Except for code instrumentation and boilerplate generation I've actually never found macros to be useful. ADT DSLs + free monads or similar abstractions give you everything you need, in a more principled way.
- nordsieck 8y ago> Every metric I can check says it is going downhill. I've seen a fair number of metrics that show it's losing market share on a proportional basis, but holding steady on an absolute basis. Have you seen anything to contradict this?
- edem 8y agoWhat do you mean by absolute metric?
- nordsieck 8y agoA metric based on raw participation numbers rather than one that is inherently relative to other languages. E.g. the number of commits on Github vs percent of total commits on Github.
- wool_gather 8y agoShouldn't the proportion be your concern (assuming you actually have a horse in the race)? Steady absolute numbers basically indicates that nobody new is choosing it, which is just the first step to a decline of those absolute numbers.
- geokon 8y agoHaving just learned Clojure, I'm kinda sad to say that I agree... It kinda seems like there are a lot of unmaintained libraries and relatively few things being worked on (mostly in the web-tech space which I don't really know anything about)
- fnordsensei 8y agoI've come across my share of unmaintained libraries in Clojure, but for anyone reading, lack of activity doesn't necessarily mean that a library is unmaintained. In JS in particular, activity is often used as a proxy for the "maintainedness" of a library. I think this is because JS is (currently) a moving target. Clojure is one of those languages where, occasionally, problems get solved and don't require any significant further development.
- BWStearns 8y agoWas about to say the same thing. It took a little while to get used to the idea that seeing `Last updated 2 years ago` didn't mean the library was dead. If I ask in the slack channel about a library I'll very often get a message back in a matter of minutes from the author confirming that it still works.
- StreamBright 8y agoI am not sure about dying. Any time I need to use Clojure I have all the libraries I need and if I don't it takes me very little time to write a small wrapper around the Java library that provides the functionality. Saying Clojure is dying is the same as saying Java is dying. There are unmaintained libraries, no doubt of that, yet, it does not mean that the entire language is dying. Java8 was a great improvement for Clojure and I expect more coming down in the pipe for later Java releases.
- cutler 8y agoA language cannot survive if it doesn't compete for adoption in the software industry, ie. paid jobs, and with so many languages competing for adoption Clojure's lacklustre marketing has cemented it's place in the history of also-rans. That doesn't mean Clojure isn't a great language. In fact I'd say it's the best language we have today.
- yogthos 8y agoLanguage viability isn't a zero sum game. What you ultimately care about is that the language is actively developed, and that there is a viable ecosystem around it. Clojure has both those things, with plenty of companies using it to do real world work.
- typon 8y agoThere should be a Clojure based on C or Rust or a Clojure without garbage collection. High performance backend just can't be done in Clojure.
- yogthos 8y agoTake a look at Carp https://github.com/carp-lang/Carp https://github.com/carp-lang/Carp
- typon 8y agoThat's really an interesting project, thanks for sharing! Now about all the other Clojure features...immutable, persistent collections by default, built-in async library, spec, standardized way of handling state and concurrency, and many more...
- yogthos 8y agoClojure has been around for a decade, so it'll be a long while before Carp starts matching its features and ecosystem.
- cutler 8y agoAs far as jobs are concerned I'm not sure Clojure was ever alive. Search the Indeed.com API for title:Clojure and Location:London and you'll find 10 Clojure jobs. Extend that to Location:United Kingdom and you'll find the same 10 Clojure jobs, ie. nothing outside London. For other countries it's: France:0, Germany:7, Netherlands:3, Spain:1, Italy:0, Japan:0, China:0, United States:22, Canada:2 . Elixir seems to have suffered a similar fate. In fact the only functional language which has any real adoption is Scala but even here the numbers are patchy and well below the figures for Ruby which some say is in decline. I think the best we're ever going to see is mainstream languages like Kotlin, Swift, Ruby and Python which mix functional features with OOP. In fact Scala really falls into this category so it seems OOP is here to stay.
- udfalkso 8y agoAnecdotally I've seen quite a few job postings recently mentioning Elixir. That it can be seen, along with Phoenix, as a more performant, easier to maintain successor to Ruby/Rails gives it some legs imo.
- cutler 8y agoBeyond the superficial syntax similarities and the fact that Jose Valim was a major Rails contributor I really don't get this Elixir = Ruby++ thing. The languages are poles apart, based on opposing paradigms (FP vs OOP) and data structures (immutable maps/lists vs mutable objects).
- udfalkso 8y agoIt's more about Phoenix than Elixir alone. The language is approachable enough, although clearly different, and the frameworks are similar enough (router, controllers, templates, gem -> hex, etc.) that a rails dev can become productive in this environment relatively quickly. And, the effort to do so comes with a number of serious benefits.
- kamaal 8y agoThe whole point of lisp is competing with 500 programmers blub programmers with 5 lisp programmers. I wouldn't measure Clojure's success with those kind of numbers. The number of applications running Clojure code would come close to a real metric. The whole point of Java and Python is to provide VPs with massive departments to bloat their egos with head counts. Clojure or Lisp don't aim for such goals.
- dorfsmay 8y agoFor me personally I gave up on Clojure because of the JVM. Had there been a Clojure, supported by its main author and community compiling to native, it'd probably be my main language today.
- fnordsensei 8y agoEarly experiments with Graal seems to tell a promising story with regards to compiling to native. Whenever Graal is mentioned, a host of reservations towards Oracle usually appears though.
- dorfsmay 8y agoMy concerns about the JVM aren't so much CPU, but memory usage and ease of distribution. Those two factors have, IMO, helped take golang where it is today. Today you cannot run your Clojure apps on a small 250 MB VM, and distributing it means getting the right version of the JVM, the right libraries etc... I don't know how Graal will handle those two issues, it'll be interesting to watch.
- fnordsensei 8y agoI found this pretty interesting: https://medium.com/criciumadev/serverless-native-java-functions-using-graalvm-and-fn-project-c9b10a4a4859 https://medium.com/criciumadev/serverless-native-java-functi... Single data point, but nevertheless. Cold Execution Times: Java Function -> 660 ms Native Java Function -> 460 ms Go Function -> 470 ms Hot execution times: Java Function -> 30 ms Native Java Function -> 30 ms Go Function -> 30 ms Container Memory usage of Hot Function: Java Function -> 17.8 MiB Native Java Function -> 0.9 MiB Go Function -> 1.2 MiB Container Image Size: Java Function -> 266 MB Native Java Function -> 13.6 MB Go Function -> 15.1 MB
- dorfsmay 8y agoWhat are "Native Java Functions"?
- yogthos 8y agoClojure is past its hype phase, but it's certainly not dying. The yearly surveys consistently show more and more people using it professionally. It's used by large companies like Apple, Boeing, and Walmart for important large scale projects, and both the ecosystem and the community continue to grow at a steady pace. I've been working with Clojure for over 8 years now, and I've seen the community grow tremendously over that time. My view is that Clojure has enough critical mass now that it's not going anywhere. There is a large community that's very active and enthusiastic about the language. There are many companies building their businesses around Clojure, and it's only going to continue to get better. I don't think Clojure is ever going to become a mainstream language like JavaScript or Python, but that's very different from saying that it's dying.
- kbuchanan 8y agoClojure, like so many of the functional languages, struggles to attract beginners. I mean for rilz beginners. I don't mean it's unsuited to them. My company has a developer with one year of Javascript programming experience productively working in Clojure. But, I think often about how hostile FP's vocabulary is to non-experts. (Personally, the baggage I brought from OO made FP incomprehensible for quite some time). Clojure documentation, and most tutorials aimed at it, for example, take for granted newcomers' comprehension. If we could measure the average number of languages a programmer brings to the table when he learns Clojure, I'd be willing to bet it's more than two. Ruby and Python on the other hand are languages where beginners thrive! Not only are many of the language concepts self-evident, the communities are often driven by recently graduated beginners spawning beginner-level documentation, beginner-level sympatico, etc.
- workinfunk 8y agoI and a few others in my workplace are Clojure beginners. It's really not hard to pick up once you suck it up and stop bitching about parentheses. I don't think the language owners are terribly concerned about picking up beginners though, for all it seems they may actually like Clojure's reputation as belonging to Serious Programmers. My biggest beef is actually with all the lisp true believers who wax on about their moment of clarity when all the pieces fit together and they realized that the universe is written in lisp. So far for me, it's just code.