Mike Christianson
Mike Christianson



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.