4 ms·
Java has good libraries and some interesting concurrency primitives, and it's a major improvement over C++ (damning with faint praise) but the language is so ve
by michaelochurch 15y ago
Java has good libraries and some interesting concurrency primitives, and it's a major improvement over C++ (damning with faint praise) but the language is so verbose and adverse to intelligent programming techniques that I find it nearly unusable.
I have a theory about Java. In the '90s, it was not unheard-of for programmer productivity (individually and for the group) to be measured in LoC. Java's great advantage is that it's easy to be "productive" (100+ LoC/day) without accomplishing or thinking very much. An actually productive day can leave behind an eye-popping 750 LoC.
Reading that code later is another story.
One language that presently surprised was Scala. I expected to hate it based on the way it was presented to me, and found most online tutorials pretty weak, but the language is really cool. I definitely think it's "an acceptable ML", and the fact that it can leverage everything good about Java (including the libraries) is nice.
- tsotha 15y ago>I have a theory about Java. In the '90s, it was not unheard-of for programmer productivity (individually and for the group) to be measured in LoC. Nah, even by the mid '80s KLoC was discredited as a metric for programmers. Java had a couple of big advantages over what had come before. For one thing, it promised, and mostly delivered, a true cross-platform ecosystem. It had a GC and the VM was written with hooks for IDE-based development. And it had a standard GUI package. C++ had none of that. Java is verbose, but it's verbose because you have to be explicit with everything, which makes the code a lot easier to follow if you didn't write it. Poorly written Java isn't that much harder to follow than well written Java. You can't say the same about C++ or Lisp. Java is a tool for an organization where half the people are below average. Unless you're working for a very small startup or a flavor-of-the-month place like Google, that's probably going to be the story where you work. EDIT: Oh, and it's been so long I forgot one of the major, major selling points. You could get free binaries. Almost everything else either cost money or had to be compiled (which was a royal pain in the ass in most cases).
- michaelochurch 15y agoI agree about Java's mediocritizing effect, and that it's beneficial if you have a team of low-skill (0.6 to 0.8, on the scale described here: http://michaelochurch.wordpress.com/2012/01/26/the-trajectory-of-a-software-engineer-and-where-it-all-goes-wrong/ http://michaelochurch.wordpress.com/2012/01/26/the-trajector...) programmers. The question is: why are people hiring hundreds of weak programmers in the first place? When a team of 100 mediocrities achieves as much as a (far less costly) team of 20 good programmers in Java or (better yet) 6 good programmers in a decent language, why hire the former at all? The Java+IDE environment seems to be designed for 0.6 to 0.8 programmers under the assumption that it's OK for them to stay at that level indefinitely. That's one thing I really dislike about the Java+IDE environment: it encourages people not to learn how things really work or to get better. It's founded on the assumption that 90% of programmers are unskilled (true) but instead of trying to improve them, it coddles them and keeps them mired in mediocrity. That whole Java+IDE setup is based on a self-fulfilling prophecy that (a) 90% of programmers are mediocre and will stay that way, (b) no one reads code, so it's okay for small programs to be inappropriately split into 10+ files, (c) programmers don't learn outside of work or want to learn new languages, (d) all code turns into shit, so there's no point in making beautiful code possible, and (e) the lifespan of a developer is 5-10 years. I don't agree with any of these. One thing I continue to find amusing is that Clojure and Scala developers learn about Java faster, per unit time, than most Java developers. This is because, when you have a real language to work with (and a REPL) you can tackle harder and more interesting problems. I can't prove this, but I think that anyone who is smart enough to be effective, in spite of the resistance Java throws in the way, can easily become a 1.2-1.5 programmer in a better language. The argument about "stupid" programmers who just can't grok functional programming is silly. If they can handle Java bullshit, they can learn the simpler abstractions on which decent programming is built. I definitely feel stupider when I have to use crappy languages and can't express my thoughts properly, but I hope it's pretty obvious that this "stupidity" is transient. I agree on Java being an improvement over C++, though. C++ is a disaster.
- tsotha 15y ago>The question is: why are people hiring hundreds of weak programmers in the first place? When a team of 100 mediocrities achieves as much as a (far less costly) team of 20 good programmers in Java or (better yet) 6 good programmers in a decent language, why hire the former at all? Because 90% of the people are in the bottom 90%. Not every company can hire programmers in the top 10%. That's a mathematical impossibility. Yes, we'd all love to hire only geniuses, but what do you do when you put out a job req and no geniuses apply? Refuse to hire anyone?
- Drbble 15y agoGoogle is flavor of the month? They are 90% C++, Java, Javascript. They even write Java that writes Javascript
- tsotha 15y agoWhat I meant by that is Google has such a reputation as a place to work that they can afford to hire only the cream of the crop. In other words flavor of the month for job applicants.