Update 2012-June-20: Please also read my follow-up post, Revisited: Your programming language sucks?
I met someone recently that declared “Java sucks.” One proffered argument of that “suckiness” was Java’s lack of expressiveness. In point: you can’t compare two Date objects with the less or greater -than operators. Further, you can’t override the operators themselves. (I won’t touch that subject; we covered it in Computer Science 201.)
Date now = new Date(); Date epoch = new Date(0); assert now > epoch; //won't compile |
Nope, that won’t compile. What are we to do?
assert now.after(epoch); |
There, that works. But what if we really, desperately wanted to use operators?
assert now.getTime() > epoch.getTime(); |
Both of these seem perfectly expressive to me. Much ado about nothing? I think it’s a matter of comfort and familiarity.
Saying a programming language “sucks” says less about the language and more about the person speaking.
For the most part, all modern languages are the same, each having idiosyncrasies which make them the object of ridicule or disdain by those unwilling or unable to learn how to work with them. The languages are different enough and have their foibles in different enough places that switching between languages can be difficult, which is another piece of what draws ire.
Of course, there are exceptions – that is, languages that are so broken and/or idiosyncratic that they truly are broken, and most programming done in them is merely an exercise in workarounds and changing syntax.
[...] the conversations following my post Your programming language sucks?, I’ve received mostly nodding agreement. Perhaps most interesting of all, a friend from my [...]