> As others have pointed out, this really should be titled "Everything that's wrong with Java culture ..."
I think any UI designer would tell you that a culture doesn't happen spontaneously. Why do Quora, StackOverflow, and Yahoo! Answers feel like very different products despite providing essentially the same functionality?
You can say this about any language and its community, too, not just Java. And it works both ways. Perl, for all its faults, provides a very easy way to package libraries and a well-organized repository for doing so, hence the comprehensiveness of CPAN packages[1].
Java's culture is a result of the fact that Java-the-language promotes badly designed pseudoabstractions intended to guard against bad design. Java provides broken abstractions because it is itself a broken abstraction - the class is a very poor abstraction over an object, and an inconsistent one at that (Java supports multiple kinds - in the mathematical sense - a design choice which impacts the way people use it).
[1] This is particularly true if you turn the clock back ten years and compare with the state of programming languages back then.
> As others have pointed out, this really should be titled "Everything that's wrong with Java culture ..."
was that the OP didn't actually have much technical criticism of the language. If anything it's not "everything that's wrong" because it's missing a lot. I wasn't trying to defend Java.
Yes, my comment was meant more to highlight that any constructive criticism should address the design of the language (which is responsible for the culture), rather than complaining about the end result.
Though sometimes amusing examples do help to illustrate, when used carefully to supplement the main point!
Yeah, actually that's a good point, the talk I linked to with Joshua Bloch really doesn't address the core design of the language so much as a lot of fiddly things on the edges.
I think any UI designer would tell you that a culture doesn't happen spontaneously. Why do Quora, StackOverflow, and Yahoo! Answers feel like very different products despite providing essentially the same functionality?
You can say this about any language and its community, too, not just Java. And it works both ways. Perl, for all its faults, provides a very easy way to package libraries and a well-organized repository for doing so, hence the comprehensiveness of CPAN packages[1].
Java's culture is a result of the fact that Java-the-language promotes badly designed pseudoabstractions intended to guard against bad design. Java provides broken abstractions because it is itself a broken abstraction - the class is a very poor abstraction over an object, and an inconsistent one at that (Java supports multiple kinds - in the mathematical sense - a design choice which impacts the way people use it).
[1] This is particularly true if you turn the clock back ten years and compare with the state of programming languages back then.