Monday, October 15, 2007

Java -- love / hate relationship

My standing is very simple and clear: I hate Java. I think it's an oversimplified language that takes away power of expression just so that it's accessible to idiots. And more idiots coding means more crappy applications / libraries / designs that I have to live with.

I know how Java started. It's scary to think of it, but I was already able to understand programming things around me. I think the binary-level portability idea is cool, and producing verifiable software is interesting, even though useless until someone solves the halting problem. However, Java apps (think Eclipse) aren't portable across OS versions, and variants, let alone processor types!! And don't get me started on J2ME -- write once, test on every phone model. So what we ended up getting is pretty much the same deployment we had with C++, except the language is idiot-proof at the expense of being much less powerful.

So, I don't think Java should exist. High-performance components should be written in C++, and non-CPU intensive work should be moved to ruby. Of course, this leaves out the poor retards who can't understand either (note that I'm asking for more than the ability to crank out code in a language) . And by God, they should stay out. Software teams will be more productive with fewer people that can actually code.

Ideals aside, I use Java. I use it because I have to, in class projects -- everyone knows Java, so classes ask for Java code in order to avoid having to teach people another language. I also use it because sometimes it's the easiest way to get the job done:
* phones only take user applications in Java form
* the only reasonable way of getting my code running on a smart card is the JavaCard platform
* the quickest way to get coding on Windows is installing Eclipse with its Java tools

When I start coding something, I'm thinking "it'd be really easy to do on ruby if I had this and that". But _this and that_ aren't there yet, and it'd take a lot of time to do them. And, despite my wish to make a contribution to the community, I don't have the time, because it's all supposed to be done yesterday. So all I do is start coding Java, and hope JRuby happens sooner rather than later.

Yay, obvious stuff top to bottom. Why do I bother to write this? I'm in an info-session, and I'm kindof bored.