The Turing Police say you have more than two problems.

Occupy Babel!

Hard-to-parse protocols require complex parsers. Complex, buggy parsers become weird machines for exploits to run on. Help stop weird machines today: Make your protocol context-free or regular!

Protocols and file formats that are Turing-complete input languages are the worst offenders, because for them, recognizing valid or expected inputs is UNDECIDABLE: no amount of programming or testing will get it right.

A Turing-complete input language destroys security for generations of users. Avoid Turing-complete input languages!

Ensure computational equivalence of protocol endpoints: use only regular and context-free protocols!

Needless to say, you also doom us all to inhuman toil for the One whose Name cannot be expressed in the Basic Multilingual Plane.

Tags: , , , ,

11 Responses:

  1. Matt says:

    I'll start by saying freely that I am not the greatest programmer. I've been paid good money for my work and I like to think I write solid code, and outside feedback has always been positive about the things I have written both for and outside of work.

    Having said that - bits like this make me feel like an idiot, because when I start trying to apply the principles theoretically in my mind I realize how almost everything I know is entrenched in what they call "bad." Don't get me wrong, it makes sense - but without seeing some kind of example I have NO idea how to implement a non-Turing input language in that kind of use case.

    • Thomas Lord says:

      Right. Glad you get the gist. Please quit. Find something else to do. There's too many like you. You collectively shove aside the ones who know what they're doing. You create risk and monumental waste and lossage. You encourage the fucking suits to think they know what they're doing when you yourself do not. It's all a bunch of glad handing and backslapping atop shit engineering. Just stop. Do humanity a favor and go away now. Please look for a different career. Thanks.

      • Matt says:

        I'm always mildly amused at the number of toxic shitheads in the IT world that are content to rain fire and brimstone from a holier than thou pedestal rather than explain or assist in any useful fashion. Totally Awesome.

        • Lloyd says:

          That's toxic CONSULTING shitheads. Who you should totally hire to fix your outlook and self-esteem. You know they'll fit with your organisation and mission purpose! It's not so much paying them money for services, as being rightfully tithed to be reminded of your failings.

          But you can get a free kick out of Tom Lord talking about languages that are 'turning complete' for yet another version control system.

          (Fire and brimstone are, I'm told, generally rained from a much-less-holier-than-thou seat.)

    • Jesper says:

      You don't have a problem because you realize that you might have a problem. A sense of shame about your previous works could mean that you're writing shit, but more likely, it means that you're improving. Combined with effort and improvement, it means you're on track.

      Of a thousand people who you see as much better programmers, how many don't feel like they don't get it from time to time? And of the ones that seem so secure, how many are really that great and aren't just coasting on something they did before?

      You'll never learn all that you think you're supposed to. You'll never write the best code in the universe. There will always be something wrong with everything. What matters isn't your code in the absolute, it's progress. If you have drive and inspiration, you will be able to do amazing things.

  2. andrew says:

    Fuck em, I'll use emacs if I want to.

  3. DFB says:

    Carnegie Mellon's Machine Learning Department joins the Occupy protests during the Pittsburgh G20 meeting, as the Daily Show's Senior British Correspondent John Oliver looks on with the abject disgust of one who once thought there might be hope among the youth before encountering the snide privilege of private school computer science graduate students.

  4. Thought inhuman toil was limited to printing Pi from a scap of PostScript code? Disable JavaScript, disable CSS, lest you find yourself in a hall of neverending mirrors.

    Anyway, if you're going join these folks, print this handy flier... if you can!

  5. Tony Finch says:

    One of the easiest ways to accidentally end up with a Turing-equivalent language is to combine regex-based rewriting with iteration. This is why most MTAs are Turing-equivalent.

    Possibly the most LOLsome DNS feature is the NAPTR resource record, which contains a regular expression and is interpreted by a complicated resolution algorithm. It was invented by the URN architecture astronauts, but no-one used it until some bright spark thought it would be the perfect way to translate phone numbers into SIP endpoint addresses. Miraculously, it isn't Turing-equivalent. However that doesn't make it a good idea.

  6. I like how you posted that without once referring to PostScript. ;^>