About two years ago I got into programming Python, and since then I've not been able to stand Java.
Working with Java tonight has reminded me of why. I think I can also see why people get stuck in
the Java mindset and have difficulty letting go and embracing programming languages that are actually
useful.
When working in Java, you're constrained by a lot of rigid but well-defined rules. In order to be
at all effective in expressing yourself, you have to become very clever and creative. As you finally
achieve this effectiveness, after days and days of frustration, you begin to feel a fondness for the
language and you have no desire to simply let go of all the tricks and techniques that you learned
or invented to make Java tolerable. You've submitted to the Java way and, because of this, now have an emotional investment in the language.
Yet, because of this investment, you lose sight of the fact that it took you 100 hours to implement your project instead of the
10 that it would have taken in a language like Python. The resulting code is also about 10 times longer
and 10 times as difficult to read, and you're going to have a hell of a time reusing it.
I believe this effect is comparable to Stockholm syndrome.
Java is so restrictive in its rules and dominating in its philosophies that, like a teller in a bank robbery, you
are forced to subjugate your will to Java's design. You do this, just so you can accomplish something non-trivial in
Java, and at this point you are broken. You become yet another Java programmer, unfathomably defending and advocating
a language that steals your time and your ability to express yourself. I call this the Java syndrome, although in decades
past it has occurred with languages such as Pascal, C, C++, Ada, and so forth.
Fortunately I snapped out of that reverie years ago. Thank goodness for languages that are actually designed
to do what programming languages were invented for: enabling a programmer to express his will to a machine.
Being able to express what I need to by itself is no longer good enough for me. Given enough time and effort, I could express anything using a language like Brainfuck. But why should I bother? Today I only care about how concisely and correctly a
language allows me to express myself, and any other languages are just wasting my time.