Hacker News new | ask | show | jobs
by iLemming 2600 days ago
Java as a language might be not so difficult to learn and understand, but using it for writing real applications can become convoluted pretty quick. Siding with Java in arguments against it, today is like arguing against printing press in the 15th century - "This devilish machine takes the soul out of divine process of copying a book by re-writing it by hand." non-Java JVM languages popping up every few years for good reasons. Another platform that has more languages is Javascript and Clojure beautifully simplifying work there as well.
2 comments

The reason others prefer immutable constructs is due to a permanent and stable cognitive blockage. [About half of programmers are incapable of understanding mutable state](https://blog.codinghorror.com/separating-programming-sheep-f...). Functional programming solves this problem by removing mutable state (almost) entirely.

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.

Functional programming is a concept, not a magic cure-all for bad programmers.

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.

There's a lot more than just functional programming here. Use Clojure for a couple of years, and I guarantee: it spoils you, and you would never want to go back to your previous workflow - it would feel clunky and inefficient. Nothing is perfect, I know. I know that not from watching videos or reading blog posts - I have used many different languages "in anger." I like Clojure because it makes sense to me today. I'm sure someday it stops making sense or I'd have to use a different tool (better suited for some task). I keep looking around, and I still can't find a language that gives me the joy of delivering software without feeling miserable. Even with the most praised and loved languages - it sometimes feels like your machine is interrogating you and you are typing incantations to placate your computer's demands. With Clojure - you simply build things. You can focus on what's truly important for you to get the job done. It's not just a sense of familiarity. Clojure is far from being my first or second or even fifth PL. However, none of the languages I have previously used gave me that feeling of joy, curiosity, and confidence. It is not magic, no. Still, it is a well-designed programming language.
I can see where you're coming from, but for the area that I work in (finance) I can't help but feel the features of the JVM are a net gain rather than a loss.

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.

I do work for a Fintech startup as well. We use Clojure and Clojurescript - it simply makes sense for us. It is extremely pragmatic choice that allows us to move fast safely. Seeing and experiencing all three sides - in all honestly I have to admit: yes, Java and Javascript are inherently less efficient languages for writing software than Clojure/Clojurescript. Java and Javascript are good, sorta "low-level" languages if you required to stay close to the platform they are made for, but in most cases (I'm just gonna throw some arbitrary number like 90%) it is not what's needed. They kind of have become "assembly" of JVM and Web.
I don't work for a Fintech startup, I work in finance.

There's a huge difference between startup culture and corporate culture.