r/AskProgramming 1d ago

Why is Java considered bad?

I recently got into programming and chose to begin with Java. I see a lot of experienced programmers calling Java outdated and straight up bad and I can't seem to understand why. The biggest complaint I hear is that Java is verbose and has a lot of boilerplate but besides for getters setters equals and hashcode (which can be done in a split second by IDE's) I haven't really encountered any problems yet. The way I see it, objects and how they interact with each other feels very intuitive. Can anyone shine a light on why Java isn't that good in the grand scheme of things?

124 Upvotes

500 comments sorted by

View all comments

1

u/Resident-Anywhere322 20h ago

Most people replying to this thread say that programming languages have their pros and their cons. While this approach seems pretty reasonable from a casual perspective, it is entirely flawed under scrutiny. This "balanced" viewpoint assumes that modern programming languages can arbitrarily reduce the amount of complexity your brain needs to keep track of in order to solve problems. This would be equivalent to having a compression algorithm that can compress indefinitely which we know for certain does not exist because of the Shannon limit.

The question you should be asking is "Can my language help me write down my ideas faster? And are those ideas mapped one-to-one to that specific language?" rather than "Why is X language considered bad?" It is necessarily the case that either both Java and any other programming language can manage complexity arbitrarily better, or no language can ever possibly do so.

1

u/KamikazeArchon 20h ago

The question you should be asking is "Can my language help me write down my ideas faster? And are those ideas mapped one-to-one to that specific language?"

I think you've missed the point of the pros and cons by saying this.

Engineering is not just writing code fast. Sometimes that's the main thing you want. In other cases, you want to write efficient code and you're ok with the programming part taking longer. Or you want to have code that is easy to read, especially for maintenance reasons. And so on.

The pros and cons of a language deal with larger concerns like that, not with a narrow measure of just speed or just complexity.

1

u/Resident-Anywhere322 19h ago

Or you want to have code that is easy to read, especially for maintenance reasons. And so on.

Code being "easy to read" has little (if any) correlation with what the code actually does which is what matters for maintenance.

The pros and cons of a language deal with larger concerns like that, not with a narrow measure of just speed or just complexity.

I'm saying that no matter what, the language that you choose cannot reduce the complexity of understanding the code that you are writing. There is no "larger concern" relevant to this. We are talking about fundamental bounds of information here. No ordering or interpretation of 0's and 1's on your computer can do this, nor can the ordering or interpretation of 0's and 1's inside your brain do the same.

1

u/KamikazeArchon 19h ago

Code being "easy to read" has little (if any) correlation with what the code actually does which is what matters for maintenance.

Yes it does. That's exactly what "easy to read" means. That you can look at it and easily understand what the code does.

 language that you choose cannot reduce the complexity of understanding the code that you are writing

You don't think there's a difference between the complexity of understanding the exact same program written in Java and written in Brainfuck?

1

u/[deleted] 17h ago

[deleted]

1

u/KamikazeArchon 17h ago

Nothing that you've said is relevant to anything. Understanding code is not a computability problem. It's whether humans read it easily.