Does Java cause self-delusion?

Finally, the mainstream media is starting to consider the possibility that Java is not only the crappiest language available on this planet (or at least up there with others such as C#), but also has the capacity for adversely affecting one’s learning capacity.

My 6 year old son is learning computer programming by first understanding the mathematical foundations, then applying what he has learned using Haskell, because it is short and natural (he doesn’t even know what Haskell is). I know many people claim to struggle with this language, but I have always held the position that this is because they are tainted will ill-conceived ideas that are internalised to the point of failing critical examination. My son uses a Linux machine for his work (read: fun), but importantly, Java is and has always been banned on his computer. As his trusted carer, I have a moral obligation to protect him from what could cause possible harm and from my observations, potential self-delusion.

Yes, that’s right. Java appears to me to cause an extreme state of delusion. Too often, I find myself in a conversation with someone who only knows one language (or a few others that are superficially different i.e. strict, imperative, poor type system), but most importantly, they don’t know it that well. I have the unfortunate and shameful scar of knowing Java quite well having worked on the implementation, but it always fascinates me to watch someone argue against what I am telling them even though they are not introducing any new information into the discussion. The conversation often quickly denigrates into chest-beating nonsense by making outlandish claims such as “my having never worked on a large Java application” (so what? and, I’ve worked on the largest Java application on the planet, but again, so what?) and various other forms of logical fallacy. I think we’ve all seen this behaviour to some extent, but it seems to proliferate quite extensively from the bottom of the intellectual pool i.e. the Java community.

It is a logical notion that the most well-versed person on the origins of Christianity is an Atheist (and observations support this), likewise, the most well-versed Java programmer wouldn’t touch such a useless (albeit popular) tool unless under extreme duress. This naturally leads to a conclusion where one attempts to explain the observed irrational behaviour from the Java Junkies who don’t understand the ins and outs of Java that well anyway (seriously, this boggles my mind). I certainly don’t think these people are committing acts of intellectual fraud by trying to deceive me. I am convinced that they have deceived themselves (again, Monotheistic belief systems — such a sound analogy), but to this extent?

The psychology of the human brain continues to fascinate me. The ability for self-delusion is extraordinary. I throw out the hypothesis that Java potentially causes brain damage for examination by anyone who cares. Certainly, I find no other explanation for such irrational behaviour.

20 Responses to “Does Java cause self-delusion?”

  1. Trav Says:

    I use java, I don’t think I’m brain damaged.
    I’ve also used javascript, python, c++, delphi, basic, cobol, Haskell, ada and assembler to varying degrees, however I wouldn’t say I know any of them even more than 80%, I’d just say I can learn how to accomplish any given task in any of those languages.

    At which point do the differences in each language become “substantial”?

    Do you think that if the same people you’re upset about were only allowed to pick from a range of languages that you found suitable that they would be any less delusional about it?

    Or would they just give up and go do something different?

  2. Sohail Says:

    I love you man.

    Except your insistence on smacking down religion in every single post is a bit immature. I think so anyway.

    By the way, I’d be interested in a series of posts about how and what you are teaching your son with respect to computing. My daughter (also 6) insists on learning everything I know about computers.

  3. Tony Morris Says:

    G’day Sohail,
    I don’t intend to bash religion; in any case, it does a fine job itself ;) I just find the metaphor so apt, which is why I keep appealing to it. I’d use another if it was more accurate.

    I think your suggestion about teaching my child is a great one and I’ll certainly consider it!

    To clear up another point, Trav, I’m not upset about anyone. I am in awe at the ability for the human mind to somehow place itself in such an extreme state of delusion. Awe is a very different feeling to being upset. I assure you that this is what it is what I am referring to.

  4. Pseudonym Says:

    Java may well cause brain damage, but in its defence, I shall point out that it’s an unintended consequence of a deliberate design.

    Java grew out of a project (Oak) to allow code from an unknown source to be run securely (e.g. on digital set-top boxes), and eventually it was discovered that this could be applied to the web. It had to do this on 1995-era CPUs and memories. As such, you could really only do things in limited ways, otherwise the security checking would be too burdensome.

    So in that respect, learning Java is like learning 8-bit microcontroller programming. Not exactly useless, but a very small subset of the world.

    I’m curious about this assertion:

    It is a logical notion that the most well-versed person on the origins of Christianity is an Atheist (and observations support this) [...]

    Who exactly did you have in mind? (I used to hang around Extremely Liberal Christian theologians/church historians, and they knew (and would freely concede) more than anyone I’ve ever met, atheist or theist.)

  5. Guy Says:

    I think this article should be filed under “irony”.

  6. SteveSmith Says:

    You shouldn’t judge a language by a subset of it’s users. Java’s accessibility to the masses is a good thing. Just ignore the stupid masses.

  7. Eoin Says:

    I develop in Java, it is a means to an end. It works. I produce solutions to business problems, I get paid quite well. The software does what it’s supposed to do, thus generating revenue. There is also a massive wealth of information, of other Java developers out there, upon which I can draw at a moments notice, thus making Java development even easier.

    What’s wrong with that? Who are YOU to say that I’m delusional? I could just as easily say the same thing about you, i.e. I have absolutly no basis upon which to accuse you of same.

    I find this article to be both insulting and ill-concieved.

  8. Edsger Wybe Dijkstra Says:

    Heh. Yet another stupid functional programming zealot…

  9. richie Says:

    I don’t think anyone has adequately rebutted Eoin’s point. If a programming language is not a tool for accomplishing some purpose, then what is it? Is it a search for transcendental first causes? That sounds like philosophy or maybe even … religion.

  10. LudoA Says:

    Liked the article a lot - even though I sort of like Java, but that’s because of my own lack knowledge. I fully understand your point, and agree with it.

    Sohail said:
    “By the way, I’d be interested in a series of posts about how and what you are teaching your son with respect to computing. My daughter (also 6) insists on learning everything I know about computers.”

    I’d find such an article extremely interesting as well, would love reading it.

    Thanks for your thought-provoking blogposts,
    Ludo

  11. Jonas Says:

    I’ll bite:

    I’m a one-language developer and Java is that language. I studied others back in school (including both basic and advanced Haskell), but fell in love with Java when I began working.
    I know Java quite well although I’m not able to keep fully up-to-date on emerging libraries and patterns. What’s most important, however, is that I know what Java can and cannot do, what it’s good at and where it sucks.
    There are problems where another language would probably be better (subjective opinion, of course), but I stick with Java. I, and my co-workers, value the ease-of-transition and maintainability of using the same language for our tasks, out-weighing the sometimes awkward solutions produced. Best-too-for-the-job should apply, but we’ve found the raised barriers for knowledge transfers to be unacceptable.
    Hey, maybe that’s our brain damage right there?! I’m sorry you’ve encountered so many Java zombies, but I’ll stick with it for now.

  12. Ravi Says:

    I have come to hate any language that takes away options from you, that removes you so far away from the the machine that one no longer can relate to the machine, java is just an example of the many delusional people.

    – a parady of what I think of java people –
    ac vs dc for power transmission

    java people == lets use dc its so much easier, we don’t need transformers every where - ugh omg look at all these transformers, lets put dc on the lines, sure its a little inefficient but look @ how much money you will be saving on having those little transformers everywhere, omg and everyone would have to learn how ac power dynamics work … you have power factors sin waves all over omg omg omg its so complicated!

    everyone else == ‘watching java squirm’ while they do their thing, ac style!

    like bjarne stroustrup says, people are not complaining that computers are becoming faster but that battery lives are getting shorter in comparison.

  13. LordSauron Says:

    I’ve used Java quite extensively, though not on any large projects (curse of opportunity), and Java has it’s place.

    Java belongs relegated to the miserable little server apps it was designed for.

    Java didn’t make me dumb, rather, I think that taught properly it’s a good learning language for OOP, specifically a good primer for C++. A couple years on Java, and you’ll be so sick of single-inheritance that C++ will be positively liberating when you finally switch!

    Java does have the curious side effect of gathering all the idiots, since it is the gateway programming language. That is rather to be expected, however. In fact, I think the main side effect of Java is just over-eager optimization. Strings being an immutable type is something that no one remembers; I see string concatentation all over the place, so people tend to think that Java is very slow. It isn’t very slow, it’s just plain slow. So they come to C++ trying to effect every optimization possible, which is annoying, but I’ll grow out of it, eventually.

    So, in other words, you’re trying to answer the question “which came first, Java, or the novice programmer?”

  14. Pseudonym Says:

    LordSauron:

    Java belongs relegated to the miserable little server apps it was designed for.

    It was not designed for that! (That’s one of the reasons why it’s not that good at it.)

    Java was designed for mobility: running untrusted code on your CPU. It was used in the browser (HotJava, to be precise) before it was ever used on a server.

  15. Anonymous Says:

    I think you’re mistaking the cause with the effect. Java has achieved the status of mainstream language (right up there with C and C++, whose proponents I’ve personally known to be just as bad as the Java programmers you describe). Mainstream languages are in the perhaps-unfortunate position of being adopted by the masses. The negative association here sounds like a side effect of the language’s success.

    You’ll probably respond that it’s Java’s failings that have caused this mass adoption by the intellectually challenged programmer (Visual Basic comes to mind as an example supporting this argument). But even the intellectually gifted programmer should acknowledge the existence of the masses’ wisdom as well as stupidity. This leads me to conclude that we should judge a language based on it’s features, not based on the people who use it.

  16. Tony Morris Says:

    Hi Anonymous,
    Some on reddit posted a similar counter-argument to yours and I am still considering it. However, I admit that it certainly sounds very plausible in the early stages of my thinking; perhaps a combination of our two explanations? Thanks for the insight, it is most appreciated.

  17. blog.leenarts.net » Java: The dark side of Programming Says:

    [...] Some recent related links: http://www.theserverside.com/news/thread.tss?thread_id=47732 http://blog.tmorris.net/does-java-cause-self-delusion/ http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html [...]

  18. Jeff Heon Says:

    Hello Tony,

    I stumbled upon your blog while searching for articles about Scala.

    Anyhow, I was wondering why Java is such a bad language (apart for causing self-delusion ;) .)

    My background is mainly procedural. I learned basic (maybe I was doomed from the start?) and assembly on the commodore 64. I moved on the C and then C++. I was really enjoying C++, but after reading books like thinking in C++ and effective C++, I got to realize that the amount of effort and dedication to learn all the C++ subtleties was quite high.

    I then got the opportunity to use Java and quite likes it’s simplicity.

    I later got into C sharp doing web in asp.net. Sometimes vb.net too.

    Except in the case of C++, it looks to me that Java, C# and VB.net are essentially all the same. Even more with virtual machines where we are the opportunity to use the same libraries across different languages.

    Sorry this post is getting really long and pointless.

    I guess my question really is, not having been exposed functional programming, what is really missing or wrong in the Java language that makes it bad? I’m eager to learn this to improve myself as a developer.

    On a side note, have you also tried F#, which is also a mix of functional and OO concepts like Scala?

  19. Tony Morris Says:

    Hi Jeff,
    Welcome to my rant space :) I think I would have significant trouble answering your question in a way that I feel is complete and accurate. It usually works like this; someone presents a thorough explanation of why Java really is as bad as people like me say it is (as a side note; I hold 3 Sun Java Certifications and I know the language back-to-front). A group of people who understand the explanation applaud it and welcome it into the programming community. Another group, who are severely under-qualified to even pass comment on the work (let alone critical comment), openly criticise it using various forms of logical fallacy and what-have-you. It really is like a selection process, since today, less and less people are challenging what the intellectuals have known all along.

    The languages that you describe all fit into one category; eagerly evaluated, imperative languages. They also possess very poor type systems (an entire topic on its own). So, if I were to try to answer your question, I’d really focus on the underlying premise of these languages, rather than a specific language. Java has the unique attribute of having an incredibly low barrier to entry. I see it as the very bottom of the intellectual pool, despite displaying very little different to other languages such as C/C++, C#, etc.

    Nevertheless, I try not to concern myself in such “wars”. I am not a member of the “Java tribe” or the “Scala tribe” or any tribe. I spend any time I have, learning the deeper programming language theory itself, not what the latest marketing buzz is. This allows me to learn and use different languages very efficiently.

    I strongly encourage you to take a look at Scala or F# and if you have any questions, please feel free to contact me somehow! I can also point you to others who would be most willing to help.

    Have a good one ;)

  20. Jeff Heon Says:

    Hello Tony,

    Thank you very much for your reply and your time!

    I will have a look at either Scala or F#. I guess it doesn’t really matter which one, just as long as I learn something new 8).

Leave a Reply