Religious-Oriented Programming

I came across a thread today on javalobby. Actually, I was referred by Ricky Clarkson who seems to challenge the Java Religious Establishment with seemingly greater patience than I could possibly exercise. Here is a link to the thread.

I have long postulated that programming in general and Java particularly, exhibits some strikingly similar attributes of religious establishments. I have discussed this hypothesis with a few people and we have even come up with the idea of finding a correlation between preferred programming language and religious conviction. Of course, this was all discussion and no “doing”, but it’s an interesting discussion nevertheless. We even entertain conjectures about what we believe the outcome to be. Mostly, correlating religious ideologies that are founded on the most powerful delusions and programming languages that are also founded on extreme delusion and then extrapolating along less mature religions with more transparent delusionary characteristics.

Many people point to some of the absurdities that come out of religious establishments for humiliation, because they are well, quite blatantly in violation of sound logical reasoning. As a side note, I often observe this violation being resolved by resorting to Fideism — a symptom of the religion sickness that I hope to write about soon. I actually empathise with the people who have been manipulated into such extreme delusions. I do not encourage human suffering and I do whatever I can in terms of self-discipline to ensure that I do not denigrate to the perverted practice of esteem boosts by pointing at the weaknesses of others — mostly, because I hope and expect the same from others (I am a moral Altruist).

I encourage you to do so as well as you read the following quotes from the aforementioned thread:

  • Other languages have lots of problems that java just doesn’t have.
  • Most language concurrency models are inferior to Java’s.
  • Most languages don’t have as good functional programming as Java.
  • Java’s type system is precise and predictable, more so than many languages.

Notice how this person is convinced that these statements are true. There is no act of conscious intellectual fraud here. Ask yourself why? How on earth could someone have been led into believing such absurdities? My point is for example, there are some very plausible explanations and methods of counselling for believers in the Judæo-Christian delusion; can we use these lessons to describe the behaviour of the person quoted above, and therefore, offer counsel to this person, who is also suffering delusions? Is the approach that Ricky Clarkson is taking — assumingly to heighten the awareness of the audience of his words — a sound one? Can we make predictions about its outcome?

The infamous Robert M. Pirsig (Zen and the Art of Motorcycle Maintenance) quote seems apt:

When one person suffers from a delusion, it is called insanity. When many people suffer from a delusion, it is called Religion.

Digg!

16 Responses to “Religious-Oriented Programming”

  1. John "Z-Bo" Zabroski Says:

    @ “Mostly, correlating religious ideologies that are founded on the most powerful delusions and programming languages that are also founded on extreme delusion”

    Extreme delusion is ambiguous. What are you referring to? Also, what argument can you make that Java was founded on extreme delusion? How familiar are you with the founding of Java? Are you aware that it was originally supposed to be for cable TV top-boxes? Have you read the whitepaper that creators of Java wrote to enumerate their design goals?

    My suspicion is you are conflating your perception of modern Java development with your lack of knowledge about its roots.

    @ “Notice how this person is convinced that these statements are true.”

    Of course, because they are ambiguous! Notice the key words “other”, “most” and “many” used to describe languages that are necessarily not Java but also not a direct comparison to anything.

    Those statements are easy to make for any language, not just Java.

    Just curious, but why do you think people even bother using Java? Is your hypothesis that they are all completely deluded? That’s a weak hypothesis, since it is qualitative in nature. Besides, a better way to say what you just said is that, “Business decisions are never based on technical excellence.” This is the real reason Java is so popular. Even if Java was technically superior to _every_ other language, not just _mostly_ _many_ _other_ languages… the thing that determines its popularity would have nothing to do with technical excellence. Business decisions are based on fear. (OLPC is a rare exception).

    Also, it is ironic that you quote Pirsig, considering Zen and the Art of Motorcycle Maintenance is basically Pirsig discussing his ideas for the first half and the second half just being an epilogue discussing how wonderful his confirmation bias is. I think confirmation bias is the most common error people make. People rarely ask questions that could poke holes in their thoughts. Why? Fear.

    Just my opinion, but you sound like someone who rigorously supports the Sapir-Whorf Hypothesis. You should read up on it. Your perspective aligns well with it.

  2. Tony Morris Says:

    I am very familiar with the SWH. Java’s success is founded on a delusion that can be explained very much in terms of the SWH. I am very familiar with the foundations of Java. You’re likely using a piece of my code right now. However, if you’ll allow me to change my original terminology, where I said “Java is founded on a delusion”, I really mean, “Java’s success is founded on a delusion”. You speak of fear. I’d take it further it to an ill-founded fear which I am simply calling a “delusion”. In other words, we are agreeing, just using different terminology; how about that eh? :)

  3. Razvan Says:

    * Most language concurrency models are inferior to Java’s.

    Here I have to partially agree with the Java crowd. While the model itself is quite rudimentary (although it got a bit better), the implementation of real multithreading is something a lot of other languages lack. And to be honest, the STM research going on in Haskell is not easily portable to Java-like languages, nor are (Erlang-style) actors based on green threads a satisfactory solution for today’s multicore architectures. So the Java crowd might very well be religious about this one, because others have just not done better in the real world.

    _
    Also, while you or me might not like it, even Simon Peyton Jones admitted in a webcast recently that Haskell is *not* a practical language, while Java/C# are, and the goal is to find a language which shares the “good” traits from both worlds. So I’d go easier on the Java crowd (although bashing them and their language is very trendy as of late), because I still consider them a pragmatic (although sometimes religious) bunch.

  4. augustss Says:

    I’ve been wondering what Simon actually meant when he said that Haskell is not a practical language (because I think it is). Maybe because it encourages people to think.

  5. Laurent Szyster Says:

    > the implementation of real multithreading is something a lot of other languages lack.

    They don’t lack it, they avoid it.

    And for very good reasons.

    Multiple threads of independant execution is something that does not belong to a VM, it is an Operating System feature. The reason multithreading was included in Java is simply because the JVM was intended to run on set-top box with a single-task operating system.

    A well-designed VM should not reimplement threading but instead provide efficient interfaces to the native OS threads/processes system calls when they are available.

  6. Neil Bartlett Says:

    Some of these points are true, or partially true. For example:

    Other languages have lots of problems that java just doesn’t have.True. Ruby is slow, C is too low-level, Perl is unreadable, Befunge is intentionally etc. Of course, this statement ignores the problems that Java does have and other languages don’t.
    Most language concurrency models are inferior to Java’s.The word “most” is the only iffy part here. Many languages do have a worse concurrency language mode than Java, for example C, C++, Ruby, Python. Again, this statement misses the counterbalancing fact that many other languages (Erlang, Haskell, JoCaml, Gambit Scheme, etc) have a far better concurrency model.
    Most languages don’t have as good functional programming as Java.Okay this one is just false and stupid. I don’t think this guy knows what functional programming means.
    Java’s type system is precise and predictable, more so than many languages.Predictable? Interesting, I wonder if there are any languages with probabilistic typing? On the other hand “precise” is true I guess, in the sense that Java gets it precisely wrong most of the time.

    The comment about Sapir-Whorf is interesting. In natural linguistics, SWH has been pretty thoroughly refuted I believe… according to Steven Pinker’s book “The Language Instinct”, which I recently read. However, programming languages are very different to natural languages, and I think it’s still quite possible that a form of SWH could apply to them. It would be fascinating if somebody could do a proper academic study into that question.

  7. Neil Bartlett Says:

    Laurent,

    Java doesn’t reimplemented threading… it hasn’t used user threads (or “green” threads) since version 1.2 or thereabouts.

    It’s interesting that you think user space threads are a bad idea because that’s exactly what Erlang and Haskell use, and they are widely considered to be amongst the best languages for doing concurrent work in. I’m of the opinion that Java should revert to some kind of hybrid user threading and system threading model, similar to Erlang.

    However, the threading model is really not that important. What makes Java worse than Erlang and Haskell is its outdated lock-based model for sharing data between threads. However it does at least have a proper memory model, which is what makes it better than C and C++.

  8. Mike P Says:

    I’m actually the guy that made the statements that Tony quoted.
    Not sure if I should be offended or flattered, I’ll side on the positive end.

    If people please read it in the context it was written in, you’d notice that my quotes were an intentional exact reverse of Ricky’s statements. I thought he was way off, and wanted to see what it would look like if I turned everything around. I think my version looks better than his version ;-)

    The whole “religious” aspect to this story is kind of not applicable. I, and others, are not “Java zealots” with closed mindsets that can’t see anything beyond Java. We’re not some sort of out-of-school visual basic people. Many of us have been coding for a very long time, and we have a *lot* to offer. We like Java’s productivity, it works well in team settings, and it comes with a very rich API set and tons of libraries to choose from. Ofcourse, there’ll be resistance if someone wants to wipe that all off the table…

    Anyway, all in good fun. There’re lots of things to do and learn, and I look forward to exploring the new language concepts and ideas. Groovy looks interesting. Javascript does not anymore to me. Just my opinions…

    Cheerio!

  9. JT Wenting Says:

    There are religious zealots everywhere, and programmers are no different. Most however, while viciously defensive of their chosen favourite technologies, aren’t averse to discussion and experimentation in other technologies.
    In that they’re quite unlike religious zealots belonging to all the major world religions, whose idea of a discussion is a knife in the back of anyone with opposing views (or a block of plastic explosives, for the more heated group discussions).

  10. Stacy Says:

    If you want personally to not use religious methods in your thinking then you should probably adopt scientific methods instead. The primary characteristic, IMHO, of the scientific method is that theories are not proven, instead (honest) scientists do their utmost to disprove a theory, the degree to which they fail is the degree of ‘truth’ of the theory.

    However I almost never see people taking their own pet theories and then trying to falsify them, instead people usually spend all their efforts to justify their own theories and to falsify others. Like religious believers they shelter their pet theories from a reality of potentially falsifying data: they hold their theories religiously. If you want to hold your theories / opinions non-religiously then try to falsify them, the truth does not need your belief or protection.

    So here’s my punchline: You haven’t attempted, thus far, to falsify your theory at all, and so I believe you have not employed science but instead religious methods.

  11. Tony Morris Says:

    Stacy,
    You had me nodding in agreement all the way, right up to your last comment. My question is simply, how do you know? I could understand if perhaps you and I had a conversation where you questioned why I’d come to this conclusion and I avoided telling you, but I don’t see how you can draw such a conclusion in this case. Certainly, I didn’t come to this conclusion flippantly, but many hours (days if you add it all up?) of discussion and adjustment of my theory as it was falsified over time. You’re free to try yourself, but I always find it difficult when the discussion is not in person.

    So here is my punchline… :)

  12. Tony Morris Says:

    “Most however, while viciously defensive of their chosen favourite technologies, aren’t averse to discussion and experimentation in other technologies.”

    Either we have different sample sets of which to extrapolate the set of “most programmers” or one of us has made a mistake. The metaphorical religious “knife in the back” is exactly how I observe programming.

  13. John "Z-Bo" Zabroski Says:

    Stacy recapitulated my point nicely. Stacy is just arguing for better science.

    @where I said “Java is founded on a delusion”, I really mean, “Java’s success is founded on a delusion”.

    Then say what you mean, because those two statements can be interpreted very differently.

    It’s good that you acknowledge your point-of-view has evolved over time. However, I think Stacy is saying that in your blog entry you didn’t really enrich your argument with multiple angles. The story you painted was black and white. The world is more interesting in color. Come to that, Pirsig’s quote stands out as not being analyzed but just being dropped in as a punchline. In context, as part of Zen and the Art of Motorcycle Maintenance, people might see that quote very differently. Pirsig doesn’t really follow a scientific method of any sort, does he?

  14. Tony Morris Says:

    “Stacy is saying that in your blog entry you didn’t really enrich your argument with multiple angles.”

    Then Stacy would be right. I don’t refute this point. To suggest that what I said is not founded on application of the Scientific Method is itself a leap of faith. It’s simply ill-founded. There is the assumption that everything I say on this blog is an opinion that I am prepared to either support as I say it, or support it when questioned on the blog - I simply don’t have the time or patience to do that and I much prefer resolving a point of contention in person. I think is far more efficient. You could consider my blog posts a snapshot in time as I derive some position, which is of course, subject to change.

    I find Stacy’s inadvertent leap of faith kind of amusing :)

  15. Stacy Says:

    I’m going to attempt to falsify my theory (lest I look like a hypocrite!).

    Q: If a posting of a theory lacks an attempt at falsification, can it yet have scientific elements ?

    A: Yes, of course, falsification alone does not define the scientific method. Arguably merely posting an opinion/theory online itself has scientific elements: it’s available for criticism.

    So I can’t claim that because you didn’t explicitly include attempts at falsification that your posting totally lacks scientific qualities or only has religious qualities.

    It was a leap of faith.

    There’s a lot of debate in the programming community and by the above reasoning even if much of this debate lacks attempts at falsification then that doesn’t mean it must be utterly non-scientific. And yet in spite of all of this debate the programming community is still very religious.

    Debating the topic of religious thinking in programming may aid in reducing such thinking (*) but I think much more helpful would be to change the nature of the debate: to introduce more scientific elements than are typically present already.

    It’s not enough, IMHO, to use scientific methods in your private discussions; that will help your refine your theories but if your don’t publish your methods along with your results you cannot help propagate such methods into the community.

    Science is at root an epistemological method, the results of science (such as whether or not programmers think religiously) pale into insignificance compared with this.

    Best wishes,
    Stacy.

    (*) I’m making a small leap here too: Your theorizing about religious thinking in programming indicates you oppose such thinking.

  16. Tony Morris Says:

    Thanks Stacy for the response. I agree with what you have said and I appreciate the advice.

Leave a Reply