Java is confusing, Clojure is simple
blog.klipse.tech
blog.klipse.tech
a) category error: The simplicity in the example is due to immutability, not language choice.
b) familiarity bias: I've learned X therefore it's simpler than Y. (It might be true, but you'd need a lot more supporting evidence than relying on point a.)
... anyway.
Admittedly, I'm a finance Java EE wageslave, but java is really not that complex to understand. Objects are references, updating the referenced object will change all objects sharing that reference.
Primitives are an admittedly confusing bit, but we're kinda stuck with them.
I don't think Java is "confusing" (but I am a bit biased), but deliberately avoiding understanding the language isn't the same as confusing.
Functional programming is like speed controls for trucks. It enables people who have cognitive blockage to produce some work for the company. So it's going to be promoted over and over.
Java also supports functional elements (though I'm not implying it's a functional language in the slightest).
I could have an optimistic view of programmers, but I feel like that article is heavily slanted towards CS education, which is taught by people who intrinsically understand computer science. I work with people who are definitely not even approaching the middle of the bell curve in terms of skill and efficiency. They still produce work in imperative programming, and without introducing catastrophic levels of instability into the system.
I'll absolutely agree that it's not good for applications that don't need it's complex machinery. Half my side projects are written in java, and probably could be easier in python.
I'm not sure your metaphor really works here, as you're implying that Java is inherently less efficient/worse than Javascript or Clojure.
There's a huge difference between startup culture and corporate culture.
First, imperative programming is important to learn. Understanding the stack/heap and calling conventions is important. Yes, those things are hard to learn. But once you learn them, they are not that confusing. These are significant pedagogical concerns, but I'm not sure they are so important beyond the classroom.
Second, FP is also confusing to new programmers but for different reasons. E.g. anything that requires folds is typically easier in imperative settings.
Java is excellent for enterprise distributed systems. It's got excellent tooling and an absurd quantity of libraries.
It's not good for simple programs to teach students compared to say...python or even C++. Especially things that don't really NEED the complex machinery built in to the JVM/Language spec.
I also think teaching some course in Java is somewhat reasonable, if only because Java is so pervasive and so important in the history of programming that it's good for properly trained software engineers to have seen it.
In 2013 I tried darn hard to get a job doing Clojure but it never panned out. The world just isn't ready, it seems.