Everything is pseudocode

Michael says that everything should be code. If you accept the strong Church-Turing thesis and believe in the principles of digital physics, that the universe is indistinguishable from a computer simulation, then everything is already code.

But Michael means that representing everything as code should make collaboration easier. I argue that pseudocode is better. Do you really want to be reading and writing Java all day long? Because Java is the lingua franca. There is no question that you can express everything in Java, Java being Turing complete, but socially, pseudocode seems far more acceptable. For one thing, pseudocode is perennial.

David Brin also convinced me that natural languages have evolved the way they have, with their quirks and ambiguities, because this provides us with the necessary flexibility to be creative. Try being creative with Java. Bad idea.

Update: Peter Boothe points us to Marvin Minsky’s essay written in 1967, Why programming is a good medium for expressing poorly understood and sloppily formulated ideas.

Published by

Daniel Lemire

A computer science professor at the Université du Québec (TELUQ).

5 thoughts on “Everything is pseudocode”

  1. Ambiguity is fine – in the face of ambiguity, it often suffices to simply choose one way or the other and move forwards. Indeed, that’s a large part of how languages like Python and Ruby gain their conciseness. This feels like it relates to Marvin Minsky’s essay “Why Programming Is a Good Medium for Expressing Poorly-Understood and Sloppily-Formulated Ideas”, which points out that our mad desire for precision in all things at all points in programming languages is a cultural artifact, and not necessarily required. I think you are right that Java for all things would be horrible, but an interpreter that took in pseudocode and usually did the right thing would be fantastic! If it occasionally screwed up, that’s fine, as long as the code was as understandable as possible. More things being executable instead of descriptions of an executable sounds like a good way to make lots of progress quickly.

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax