Yes you are in a cult, no I don’t recognise its legitimacy


I was trolled yesterday — I think — I still don’t quite know what “troll” means, since it seems to be a universally applicable verb to describe an action that you dislike. Maybe I wasn’t trolled. I was in the #ocaml programming language channel when a user started displaying an ignorance of the Haskell programming language. I made a small effort to point out that the propositions being put forward were incorrect, but it turns out that “of course I would say that, I am a Haskeller” and so the truth value of the propositions were never explored.

No, I am not a Haskeller. I am not an anti-Java, O’Caml hating, Scala using Haskell worshipper. I completely reject this attempt to assign cult status to the various programming languages. As a matter of fact, I completely reject the existence of the concept of X Programmer for any value of X such that X is an element of the set of all computer programming languages. Correct, Java programmers do not exist. Try telling that to your local recruitment agent.

The corporations are having a field day, while amateurs continue to repeat the many different brand/meme names. “Oh hi, I am a C# Programmer, what religion… err programming language fraternity do you belong to?”. My criticisms of Java do not stem from a personal distaste or apostasy; they stem from the fact that it is indeed, far removed from anything useful, practical or resembling soundness in the practice of computer programming.

Can you imagine two motor mechanics discussing their day jobs where one says, “I am an NGK spark plug installer”, to which the other replies, “oh, I am a Champion spark plug installer, but I use NGK on my own vehicle”? It is this degree of absurdity that I assign to any notion of Java Programmer, Haskeller or what-have-you. It is simply and extremely ridiculous. No really, it is. I won’t pretend otherwise despite any scoffing.

Take for example, the distinction between Java and C#, which is almost zero, in the greater scheme of computer programming language theory. What benefit does distinguishing a “C# Programmer” from a “Java Programmer” give? It serves only to resemble status and cult membership. They are both utterly useless as computer programming languages (yes, this is despite their popularity). Members of both of these cults will scorn at this proposition simply because it appears provocative and causes offence — not because there is evidence to the contrary (there is an enormous amount of evidence supporting the affirmative position, but that’s another topic). What if it is true?

I predict that the many members of the current (why was I born in this era?!) anti-intellectualism establishment probably wouldn’t read this rant to this point, so I’m probably preaching to the choir when I point out that the practice of computer programming is founded on various fields of mathematics.

What does this have to do with the latest advertisement on msdn.com or whatever bullshit marketing material you subscribe to? Nothing. Not a bit. So no, I’m not in your cult, I’m not in cults that rival you, I’m not in a cult that considers itself superior or inferior to yours. I’m an independent thinker.

Your inability to see beyond subscription to cleverly-constructed brand naming is complete bullshit, that’s what it is.

54 Responses to “Yes you are in a cult, no I don’t recognise its legitimacy”

  1. Pseudonym Says:

    This classic essay by MJD seems appropriate.

  2. style nachi Says:

    “I completely reject the existence of the concept of X Programmer for any value of X such that X is in the set of all computer programming languages.”

    =>

    “I completely reject the existence of the concept of X Programmer where X is a computer programming language.”

  3. James Says:

    If I had a C# code base built upon .Net technologies I would hire a capable C#/.Net programmer over an excellent Java (or Haskell) programmer. Experience counts for quite a lot.

    To extend your mechanic analogy - consider I worked for a Porsche repair shop and I was looking for a new mechanic. I would choose a mechanic that had repaired Porches in the past over most other available mechanics as a first consideration. I would choose a mechanic that had experience fixing similar car engines next.

    Finally, to use my own analogy: If I were a conductor looking for a violinist then I would probably not hire an excellent pianist. Even though both instruments are used to make music (just like all programming languages are maths used to code machine instructions) does not mean proficiency in one instrument necessarily leads to proficiency in another.

  4. Bill Says:

    I have a question.

    I have been building software for twenty years now, and I have tried every one of those years to build something that a client would be interested in using Lisp or a derivative every one of those years. In fact, there hasn’t been a single case of a large project which I have started in which I haven’t at least planned on using Lisp or a derivative for a portion of the software.

    I have completely failed. To my eyes, unless you want to build every individual piece of plumbing from scratch (taking weeks and weeks to do so) instead of using a similar library from useless C# or Java or whichever, Lisp and derivatives are beautiful but cannot be used today.

    Could you give me an example of something I could do in any of the ‘useful’ programming languages that a business client would want (meaning it has a competitive advantage over another solution)? Anything?

    For the record, I am not being sarcastic. I genuinely would like a solution here. Using a functional language is something I have wanted to do for a very long time.

  5. anon Says:

    Trolling means deliberately playing someone in order to invoke an emotional response.

  6. anon Says:

    Bill, have a look at Clojure. Lisp with Java libraries and a very functional bent and an interesting approach to concurrency.

  7. Phil Says:

    @James:

    You analogy is MUCH more like reality. The analogy in the original post was absurd.

  8. Mikle Says:

    “[C# and Java] are both utterly useless as computer programming languages…”

    I guess you can extend that to “Popular languages suck… Look at how cool I am, I know languages whose syntax mostly consists of parenthesis and strange signs. Go non-conformity”.

    And for the point of my argument - you can’t say a language is useless. People build mighty platforms upon platforms on .Net and Java. Of course those languages have drawbacks and such, but can you show me a language where making a GUI is as fast as using .Net and Visual Studio?

    Just to note - I think whenever someone says “X programmer” they mean the programming language they most like currently. I am a Python programmer because I love python, and I can’t find anything better (although I am always curious about new languages) that will justify the cost of moving to a different language. I use C# a lot in my work though, and saying something like the line I quoted immediately made me think you are a 14 year old that learned haskell and now shuns languages that are “Popular”.

    Mikle

  9. Frank Davis Says:

    When I first started reading your post, I thought, “well, good, someone who actually prefers rational thought over programming-language fanaticism.” I get pretty tired of posts where someone believes that all developers should worship at the altar of their favorite programming language — it gets pretty ridiculous at times.

    So I was very disappointed when I read your statement: “My criticisms of Java do not stem from a personal distaste or apostasy; they stem from the fact that it is indeed, far removed from anything useful, practical or resembling soundness in the practice of computer programming.”

    With that statement, you just threw all rationality out the window. Personally, it’s been seven years since I’ve done any programming with Java, because there are several other languages (including Lisp) that I would much rather be programming in. However, no matter how many flaws it has, there are a very large number of programs written in Java. On SourceForge alone there quite a few very cool pieces of software written in Java. So to say that Java is not useful or practical is just as silly as saying Java is the “one true language”.

    If you mean that Java is not useful to you, because given your preferences it is not practical for you to write software in that language, then fine. But to state that Java is not useful or practical just means that you’ve decided to join the “Java is Evil” cult.

    And to make that statement right after stating that you are a rational thinker is even worse — it just makes you a loon in philosopher’s clothes.

  10. johnny Says:

    you wrote “They are both utterly useless as computer programming languages…” referring to java & c#.

    given the number of real-world applications built upon the two (particularly java), your statement seems supremely anti-rational.

    an analogy would be something like “oil and coal are utterly useless as fuel or energy sources”, despite being the current prime energy/fuel sources for humans.

    now it could be constructively debated as to whether there are _flaws_ in those programming languages (or fuel sources) but stating they are _useless_ is simply demonstrably wrong to the point of utter ridiculousness.

    such logic-free statements make it difficult to regard anything you say as aught but pure nonsense.

  11. Erkki Lindpere Says:

    To some extent I could even agree with your final point, but I have to give +1 to the last two comments.

  12. Wooter Says:

    Oh, man, Tony. It looks like you got owned.

    Next time, remember to “disable comments” when you’re going to talk like a crazy person, you Rational, Independent Thinker, you!

  13. Tony Morris Says:

    No Wooter,
    These kind of irrational, emotional responses masquerading to the contrary (I love python? pfft) were entirely predictable :)

  14. Frank Davis Says:

    Quote: “No Wooter,
    These kind of irrational, emotional responses masquerading to the contrary (I love python? pfft) were entirely predictable”

    Tony,

    When several different people all point out the exact same logical contradiction in your argument, why precisely do you perceive this as being an emotional response?

    It sounds like your definition of “irrational” is “anybody who disagrees with Tony Morris”. I don’t remember seeing your picture in the dictionary under that heading.

  15. Tony Morris Says:

    Frank,
    It is not the fact that several people made the response that renders it irrational. It is that there is no logical contradiction in my argument and various fallacies have been used to make it look so. Furthermore, this is predictable.

    I will take your comment for example. My criticisms of Java come from these facts:
    a) I have worked on the implementation
    b) I know the language back-to-front
    c) I have observed the internal marketing machine that makes it exist.
    d) and since some comments seem to favour the Appeal to Authority fallacy, I’ll point out that I have several of those fancy Java certifications (personally, I value them as zero).

    Your underlying claim is this:
    “Since many people believe that Java is useful to themselves, then it is, by definition, useful (to them)”.

    I dispute this claim. I wonder if you’re prepared to.

    This is not about preferences, or whether “I love Java”. It is about the fact that it is severely diverted from anything resembling soundness in the underlying foundations of computer programming itself such that it is not only not useful, it is in fact, the least useful possible artifact I could possibly imagine. I consider a truck more useful to programming than Java, since at least it doesn’t masquerade to the contrary, which would have an adverse effect.

    Call this an extreme view, perhaps, however, my charges originate from the fact that nobody is prepared to question this potential truth. They are more content with waffling on with ‘pragmatism’ and ‘oh, you just don’t like it’ (i.e. I am not a cult member).

    Quite often, these people who are scornful about my charges against their meme don’t realise that I know more about their ideologies (Java) better than they do. Since this fact threatens their memetic membership (since they acknowledge loss in any rational discussion), they turn to fallacy instead.

    Are you prepared for me to demonstrate my position to you? Are you even open to the possibility that it could be true? Be honest with yourself.

  16. Tony Morris Says:

    I guess you can extend that to “Popular languages suck… Look at how cool I am, I know languages whose syntax mostly consists of parenthesis and strange signs. Go non-conformity”.

    I guess, if you’d like to perpetuate a Straw Man fallacy. Personally though, I prefer critical analysis.

    How predictable.

  17. Frank Davis Says:

    Tony,

    First, thank you for responding to the issues I raised. The fact that you came back with a fairly thorough and reasonable response goes a long way in making me think I was wrong about you.

    Based on your response, I think the main thing we disagree on is our definitions of “useful”. In your original post, it sounded like you were saying “Java can not be used to develop real-world applications.” I think (or hope, anyway) that what you really meant was “Java should not be used to develop real-world applications”. If you meant the latter, than I will accept you as an authority in the matter (although not the only authority in the matter).

    The difference between the two statements is that the second one is subjective (i.e., a really strong recommendation against using Java), while the former statement is objective, and therefore easily proven or disproven. To verify whether the factual statement “Java can not be used to develop real-world applications” is true or false, one needs only to do the following:
    download the source for any Sourceforge project labeled “stable” and written in Java.Verify that the source code really is written in Java.Compile and run the program.Does the program work?

    As long as there is at least one application that passes this test, then “Java can not be used to develop real-world applications.” is demonstrably false. In practice, I believe you will find that a large number of applications can pass this test. You will also find a sizable number of crap applications that will not pass the test, which will prove that Java can also be used to produce applications that suck.

    Whether said suckiness is because it was developed in Java is a separate (but interesting) debate. For any failed application X, how much did the usage of Java contribute to its downfall? Of course this brings up the question, for any successful project written in Java, how much of the project’s success is attributable to use of Java?

  18. Tony Morris Says:

    Hi Frank,
    We seem to agree, however, I’m not so sure about whether we agree on what definition of “works” means. I should point out that I have extremely high standards for software that supersede that of others by many orders of magnitude - at least, those that I have tested it against personally.

    As a result of this standard, the following statement may potentially be rendered false, “In practice, I believe you will find that a large number of applications can pass this test.”

    I do not dispute that for some other definition of “works”, the statement may potentially be true. We see here, however, the key distinction between my position and that of my critics - I do not consider Java to be a working programming language and that is because I have seen many facets of it that others may not have - in particular, how Java is marketed and how the organisational structure is specifically tailored to propagate a brand as opposed to produce technically sound software (this becomes very apparent when the two are in contradiction and how that is resolved).

    What we are in agreement on, is that if your stated premises (and those that you implied) are true, then our conclusions are true. Where we may disagree is on the premises.

  19. Runar Bjarnason Says:

    Tony,

    Thanks for an excellent post. Looks like you came across a Littleendian who took you for a Bigendian.

    Good observation, also, that they’re not really opposing cults, but merely warring factions within the larger cult of pragmatism.

  20. Tony Morris Says:

    Hi Runar,
    I find the document that Pseudonym provided (above) to be very descriptive of the problem that I refer to. It is such a sad state of affairs that the software development is in.

  21. Runar Bjarnason Says:

    Tony,

    That document is certainly descriptive of a symptom, but I think that the problem goes much deeper. And it is not limited to software development, I’m afraid. Pragmatism is in fact the prevailing religion of our era.

  22. Trav Says:

    Has it also occurred to you that writing a post that denounces something popular as having absolutely no use at all in response to being trolled is somewhat ironic?

    You also posted a quibble on semantics, essentially complaining that people regard themselves as programmers rather than programmers who specialize(primarily work) in .

    You could have expressed yourself quite easily and perhaps more effectively without trolling the java defenders.

    As it is the discussion has already been skewed towards what I regard as a side issue (whether java has a use or not, and perhaps in some peoples minds, whether Tony Morris can ever be wrong and admit it at the time) whereas I think it should be more focussed on the negative impact of assuming that an advocate of any particular language is capable of rational thought.

    and yeah, you’re right, those oCaml guys are a bunch of trolling wankers, that’s what comes from using a language with such a ridiculous name

  23. Trav Says:

    hmm, wordpress ate my angle brackets around language… paragraph 2 should read
    You also posted a quibble on semantics, essentially complaining that people regard themselves as _language_ programmers rather than programmers who specialize(primarily work) in _language_.

  24. Tony Morris Says:

    Trav,
    You’re wrong on several accounts.

    First, because some X is popular does not exclude it from criticism (not that I criticised it - it was an assumed premise of the argument). I reserve my right to offend, even if the belief that I am offending is popular. Sadly though, it’s not *actually* popular, because the defenders of Java/C# don’t know it that well anyway (I’m prepared to support this, but only to a minimal extent - it’s gets too ego-centric and distasteful after a while).

    Second, I did not complain that “people regard themselves as programmers rather than programmers who specialize(primarily work) in .” The very notion of “programmers who specialize [sic] in language X” is itself an absurdity. Computer programming is founded on mathematics - your ability is directly proportional to your ability to apply mathematics; it has *NOTHING* to do with a programming language. Isn’t it ironic that it seems to be those people who know few languages, elevate the status of a programming language in order to somehow attribute some meaning about their competency?

    Tony Morris is more than willing to admit being wrong; in fact, it is one of my favourite activities. Show me why I am wrong in a meaningful manner instead of spouting nonsense, then I can have fun :)
    Why do we have “advocates (or critics) of particular languages”? I’d much rather discuss this question. Can’t we just have discussions without the religiousness (it seems we can’t - see below)? “Java is failed technically, but an extremely successful social experiment, discuss” — is it too much to ask to apply critical analysis here? It offends you? Tough shit. You’re afraid because you know I know Java 100 times better than you? That’s dishonest. In fact, I can’t help but suspect dishonesty is the essence of my objection to many of the criticisms of the nature I am describing (blatantly fallacious, defensive of meme, lacking in analytical detail). Worse, when it is pointed out as blatantly fallacious, defensive of meme and lacking in analytical detail, I have to endure a charge of “not admitting I am wrong”. May logic prevail? If not, then just a bit? Please?

    Generalising about “O’Caml guys” is quite distasteful. You’re simply reinforcing the cult mentality by attributing inferiority to a meme outside of yours. I use O’Caml, but I am not an “O’Caml guy”; I am a programmer, trained and always learning the discipline of computer programming. This has very little to do with O’Caml, however, O’Caml is in some way, a manifestation of the concepts of that discipline.

    I may be a little harsh when I say that Java is not, but it is at least, a failed and miserable manifestation that is indeed useless (I’ll happily elaborate if you’ll just open your mind a little to the possibility).

  25. trav Says:

    You open your response with me being wrong on several accounts? Was I right on any?
    Have I sent out any thoughts that have been received and not rejected outright?

    I’m pretty sure you already understand this because you’re a smart guy, but my last statement about the oCaml guys was intended as satire, I reject and ridicule the idea of generalising and advocating, in essense I agree with you.

    I think my main problem is that I hooked onto the word useless and didn’t pay enough attention to the “as a computer programming language” you’ve reminded me that you don’t look at computer programming as a way to run this weeks reports.
    To quite a lot of people if I write a program that’s going to draw a circle and then put that circle on my screen, I’ve succeded a bit even if I need to do odd things to get it to work and even if I can never run the same program again. Hell even if I damage my brain in the process so badly that I can never use a computer again, I got my circle, I made the computer achieve a goal I set (very poorly, but still better than zero in terms of that specific goal).
    I’m guessing you’re going to come out and say that isn’t computer programming, and I suppose you’ve got every right to say that and have your own definition for the situations in which using those two words together like that makes sense, however I think you probably realise you’re in a minority there, and when you want to communicate with other humans then being in a minority is in a handicap, because you’ll say things and they’ll think you’re saying something else.

  26. Seal Newton Says:

    It’s pretty obvious that Tony is using his own referential to decide what is right or wrong, so even though you can technically prove that he’s wrong, he will always find a way to change the definition of the word to turn the table on you (”Java is a complete failure”). Which is what makes this blog so entertaining to read (albeit not very instructive).

    Interestingly, the fact that the vast majority of the population disagrees with his views makes him feel even more righteous and convinced that he’s right, a mechanism that is so so religious and irrational that it’s frankly comical coming from someone who claims to be so firmly rooted in reason and logic.

    Keep up the good work, Tony, we’re having a blast reading you.

  27. Tony Morris Says:

    Hi Seal,
    Congratulations on supporting my position. You have used blatant (i.e. not even obscured or deceptive) logical fallacy. You may not know, but for next time, these are called respectively; Appeal to Population (or Argumentum ad Populum) and subsequently, what is known as the Straw Man (you’re the first person to have said “Java is a complete failure” so I don’t know where you’re quoting from).

    Keep up the good work, mate. I’m having fun watching predictions come to fruition. Admittedly, the argumentum ad populum gets tiring, but I always enjoy when someone puts forward a straw man. Can’t wait for what happens next, Thanks!

    I wish you success in the perpetuation of the anti-thesis of logic (if one could exist) while charging others of same. Excellent ;)

  28. Bob Johnston Says:

    This is one of the best humor websites. It’s right up there with “FakeSteveJobs.” This “Tony Morris” persona really captures the popular conception of the smug, egocentric programmer who lacks the self awareness to understand that the way he says things has more to do with people’s irritation than what he’s saying. The self contradictions are particularly juicy. Truly well executed, sir or ma’am!

    It’s a good thing that real Haskellers aren’t nearly as irritating. If you use Java or C# and are curious about the benefits of languages like Haskell, please remember that this website is a hoax! There are plenty of genuinely helpful functional programmers out there.

    And keep up the good work “Tony Morris!”

  29. Tony Morris Says:

    Poor Bob, simultaneously amused and irritated while whining about self-contradictions and ego-centricity. Ignorance is bliss eh Bob?

    Keep up the great work mate!

  30. Nate Hamlin Says:

    Okay I admit. I didn’t get that it was a joke til now. Rereading makes it clear. Maybe it needs to be slightly more over the top so more people get it?

  31. Bob Johnston Says:

    Nate, I couldn’t disagree more. Any more over the top and this would be from the William Shatner School of Acting. It’s already pretty over the top. I mean do you know any real people who actually talks like this in person? No this is pitch perfect for satire. It’s just enough “more real than real” for the reader to know that it’s okay to laugh.

  32. Bob Johnston Says:

    Ha! I wrote “people who talks”… Here comes a good blasting from “Tony Morris.”

  33. Nate Hamlin Says:

    @Bob - I’m not sure I know any Haskell programmers but I do know some pretty arrogant pricks but none who are this bad in person. I guess I thought it was just some quirk of blogging that brought out the worst in somebody. Anyway thanks for cluing me and everybody else into the joke. I still think it needs a bit more something to make it clear though.

  34. Runar Says:

    @Nate & Bob: Your one-two combo of argument from intimidation and appeal to ridicule, is priceless.

  35. Tony Morris Says:

    You’re on the ball Runar!! Where do I know you from? I like thinkers.

  36. Runar Says:

    I’ve been known to loiter over at #scala. I like thinkers as well, which is why I’m here. ;-)

  37. Bob Johnston Says:

    Nate, I guess we’ll just have to agree to disagree. This site is far better than most lame attempts out there.

    Runar, ummm…it’s a joke website. I’m not ridiculing anybody other than a fictitious character designed to be ridiculed. Or do you mean Nate? I’ve been nice to him I thought. Nate, if you felt ridiculed or intimidated I apologize!

  38. Runar Says:

    Mr. Johnston,

    You’re coming off as either dishonest or stupid. I’m not sure which is your intention, but the former is a correct assessment of you either way.

  39. Nate Hamlin Says:

    @Bob - I’m pretty sure he meant Tony not me. I was feeling ridiculed but not by you.

    @Runar - Bob doesn’t seem dishonest or stupid to me. Why do you say that? I guess he might be wrong about this being a joke though.

  40. trav Says:

    @Nate and Bob, he says you’re a couple of twats who are trying to obscure Tony’s message by pretending he’s a ficticious character.
    “don’t pay any serious attention guys, it’s just a joke, have a good laugh and go back to your monkey cages”

    or at least that’s what I got out of it… not sure about the intimidation part though, does he mean you guys are trying to intimidate us / tony?
    Or are you guys appealing to ridicule because you feel intimidated yourselves? My monkey brain fails me on that one…

    as an aside, if it was a joke/satire making it “clear” it was so would completely ruin it.

  41. Runar Says:

    The argument from intimidation is captured nicely in “I mean do you know any real people who actually talks like this in person?” Which entails: “Tony, if you want to be taken seriously, you have to pander to people instead of saying what you actually mean.”

  42. Nate Hamlin Says:

    Why am I a twat? Bob said it was a joke and I read it again and it made sense. If this is a serious site then I’m sticking with Perl. At least with it when I don’t understand something people are helpful instead of telling me what I’m doing is useless or calling me twat.

  43. Seal Newton Says:

    Runar, how about: “Tony, if you want to be taken seriously, stop talking to people who disagree with you as if they were retards”? The condescension that oozes from every word that Tony uses to respond to critics is, to be honest, sickening.

  44. Tony Morris Says:

    “Condescension oozing from words”.

    If you’re not suffering a delusion here, you’re using a logical fallacy.

    Go on Runar, name it ;)

  45. Sean Nessen Says:

    Yes, yes, we know: anyone who disagrees with you or criticizes you is using flawed logic.

    I can’t blame you: it’s much more pleasant than considering that you might actually sometimes be wrong.

  46. Runar Says:

    Right, so when reasoning fails, just attack the speaker’s tone (”condescension that oozes”), and appeal to emotion (”sickening”).

    Classic ad hominem (I know this is your favourite, Tony). Tony Morris has committed that most heinous of moral crimes–having a high opinion of himself–and therefore his argument is invalid.

    If you look closely, you can also find irony, albeit unintentional (”to be honest”).

  47. Tony Morris Says:

    Sean,
    Show me where I am wrong using rational argument and I’ll gladly concede. Talking shit is unexciting.

  48. Trav Says:

    I apologize for calling you guys twats, I’m not a person you should take seriously. also my comments are not likely to reflect the opinions of programmers capable of any language other than java, my programming knowledge is extremely limited which I’ll freely admit

  49. Bob Johnston Says:

    Nate, don’t give up! Haskell is a deeply beautiful language and learning it will make you a better programmer even if Perl remains your day job! It will make you rethink what a program is and what programming is about.

    Don’t let this the too stereotypical conception of functional programmers as played by “Runar” and “Tony” scare you away! Go watch some videos of Simon Peyton Jones and Phillip Wadler. They’re fucking geniuses who manage to say why they think there are better alternatives to today’s languages without resorting to whining about “cults” or saying that mainstream languages are “useless.” In fact, SPJ jokingly called early attempts at purely functional languages “safe but useless” while traditional imperative languages were “unsafe but useful” http://channel9.msdn.com/showpost.aspx?postid=326762. It’s pure self deprecating humor. Haskell is useful. See Darcs as a very practical example of what Haskell can do.

  50. Bob Johnston Says:

    Trav, don’t worry! I knew you were just re-casting what “Runar” said for maximum comic value. That’s why I come here!

  51. Bob Johnston Says:

    I used an f-bomb so the software wants me to be moderated. Here’s my post cleaned up

    Nate, don’t give up! Haskell is a deeply beautiful language and learning it will make you a better programmer even if Perl remains your day job! It will make you rethink what a program is and what programming is about.

    Don’t let this the too stereotypical conception of functional programmers as played by “Runar” and “Tony” scare you away! Go watch some videos of Simon Peyton Jones and Phillip Wadler. They’re f***ing geniuses who manage to say why they think there are better alternatives to today’s languages without resorting to whining about “cults” or saying that mainstream languages are “useless.” In fact, SPJ jokingly called early attempts at purely functional languages “safe but useless” while traditional imperative languages were “unsafe but useful” http://channel9.msdn.com/showpost.aspx?postid=326762. It’s pure self deprecating humor. Haskell is useful. See Darcs as a very practical example of what Haskell can do.

  52. Tony Morris Says:

    The moderation was a result of the link.

    Here is a post that talks about that link:
    http://blog.tmorris.net/algebraic-data-types-again/

  53. Seal Newton Says:

    Tony, a question about this link. You say:

    “Therefore, the Maybe data type has 2 and only 2 constructors. It is the “and only 2″ that makes this data type a closed algebraic data type.”

    but further down, you say the equivalent is to only allow two subclasses of that type.

    Two constructors and two subclasses are very different thing, which is it?

  54. Tony Morris Says:

    In Haskell, these (Just and Nothing) are correctly called constructors for the Haskell Maybe data type. When emulating a closed algebra with Java, you use inheritance and therefore, call it a subclass.

    Perhaps I should have clarified that point.

    Here is a more robust implementation of the optional type using Java

    The names have changed slightly (to reflect ML-style):

    • Maybe -> Option
    • Just -> Some
    • Nothing -> None

Leave a Reply