The Tyranny of Fetishistic Compulsion in Programming

5/11/2007

For you programmers out there, this is for you. For everyone else, just humor me; this won’t take long.

I’m taking a brief primer on C# (which, granted, is almost a beginner-level tutorial, but I didn’t want to miss anything important that an expert programmer’s primer may have passed over), and I’m reminded of some very disturbing things about the world of strictly-typed programming languages:

They’re designed by people who have RSS and email inboxes of zero unread items; both count and avoid cracks, twigs, and cigarette butts on the sidewalk; and SUCK ON DIRTY TOES FOR SEXUAL PLEASURE. I might also accuse them of being fundamentalist automata, but automata don’t have the emotional baggage necessary to inflict such misery on their fellow beings.

I began my computer science education by learning these kinds of languages, and I can’t blame my professors; teaching students scripting in esteemed computer science departments was a huge no-no. And consequently, I was mostly oblivious to the unnecessary sadism that was being inflicted upon us. C++ was the first remotely object-oriented language I learned, and while I was, like many students, unhappy with the level of specificity it required, I was generally satisfied that C++ was A MAN’S PROGRAMMING LANGUAGE. No pussies allowed. Runtime garbage collection? What are you? A terrorist? Implicit typecasting? Fuck off, cross-dressing hippies. I had no idea that I would soon, voluntarily subject myself to a much more hideous example of computer science sadism: Java.

At least C++ didn’t force you to write object-oriented code. I took an elective Java lab course a few semesters later. At the time, I thought: Gee, what a consistent language! The rules are elegant and applied without discrimination. Everything’s OOP. Polymorphism is easy. Completely virtual classes are possible. No confusing multiple inheritance allowed, and neither is any silly object overloading bullshit. Terrific, right?

I must be, only now, coming out of a haze of type-lenient, quick-and-dirty scripting utopia, because it’s only now that I remember what made me run screaming from pure, strictly typed, enforced OOP. I still don’t even think I can completely quantify it. Is it the bloat? Sure. What about wasted time worrying about method and property restrictions? Yep. Even more wasted time spent writing subclass upon subclass upon subclass or implementing interfaces? Definitely. How about the frustration of fixing bugs through subclasses? Aye. The complication of working through insane namespace spiderwebs? The migraine-inducing procedure of visualizing polymorphism on multiple levels? The insanity of writing one-line accessor methods? Did I mention bloat? All of the above.

I may have been overly generous to grant the designers (or strict adherents) of these languages the relatively mild sexual deviance of sucking on dirty toes. This level of sadism, control, and even masochism can only force the human psyche to act out in much more destructive ways.

I’m well aware that the more monastic languages have their place, especially those applications where security, provability, and/or the protection of human life are required. But if you’re not doing that, take it easy, folks. Try out some BASH one-liners on occasion. Or (gasp!) PHP in line with XHTML. Maybe even some easy-go-lucky Python. If no one else has to read it, maybe even PERL. Throw some caution to the wind. Make it easy on yourself.

There are 2 comments in this article:

  1. 5/11/2007keith say:

    With regards to the whole ‘protection of human life’ thing, most of that code is actually in C or assembler.

    I was very surprised recently when a friend who works on a DOD project said their moving from ADA and back to running C on a hard real-time OS—even for missile avionics. Heh, void pointers ftw!

    Strong typing is the path to the dark side. Strong typing leads to HATE, and HATE leads to suffering.

    The ‘path of light’ is a weak-typing language with a just-in-time compiler which allows ‘hints’.

  2. 19/12/2007Dean say:

    With regards to the whole ‘protection of human life’ thing, most of that code is actually in C or assembler.

    Well, you can’t get more strongly typed than C. :) Though I suppose you’re right about void pointers.

    A friend brought up the point that strongly typed, strictly OO languages have many advantages in very large, collaborative projects. I can’t disagree with that, but I never work on those, so I’ll continue to bash. :)

Write a comment: