Literature

Circling around the topic of programming without math — but not quite landing back there yet — I remember a very evocative conversation I had with Marvin Minsky up at MIT about five and a half years ago. We got onto this very topic – the question of whether there would ever be such a thing as universal programming. To put this into some context, Marvin is not only one of the founding gods of the field of artificial intelligence, he was also a key mentor for Terry Winograd back when Terry was doing his SHRDLU work. So Marvin’s interest in such subjects goes back to the very beginnings of the era of modern computers.

I asked him whether there could be a computer programming language learnable by all. Marvin’s response was unique, and rather profound. He said “Computer science already has a grammar. What it needs is a literature.”

There are a lot of implications nestled within this response. When I think of a “literature”, I think of the fact that we all enjoy reading what each other has written. We read Jane Austin, Woody Allen, Stephen King or Alice Munro for fun. It’s not work, it’s enjoyment. If I write a prose piece and nobody ever wants to read it, then on some fundamental level I have failed.

When we talk about computer programming the situation is not so simple, because there are two artifacts: the computer program itself, and the resulting runnable program. In today’s world, most people who play around with a program you’ve written will never look at your code.

Marvin’s response suggests the possibility of a different relationship between the written program and the user’s experience — one in which program and experience are not kept separate, but rather are intertwined with each other. If we look at the user as a reader — analogous to the way we think of the reader of a novel — then we want the user to be aware of the written program, with sufficient literacy to be able to appreciate, and even critically comment upon, the author’s process.

Of course this is very different from the world of computer programming as it exists today. But I think Marvin is right: In order to truly enjoy a medium on a cultural level, we all need to be able to appreciate the beauty within the process of creating the work, not just within the final result. Whether it be dance, music, architecture or the novel, we learn to fully appreciate art only when we understand something of how it was made.

And so it will be when the ability to program expands beyond the realm of math/science and becomes a universally accepted mode of cultural production. When that happens, we will be able to read each other’s programs with a casual facility that will simply be taken for granted. And then programming will be on its way to developing a literature.

10 Responses to “Literature”

  1. Cadabra says:

    Are you talking about interpreted languages here? Programs that are distributed in the form of source code?

  2. troy says:

    Perhaps you need the equivalent of Zen and the Art of Computer Programs- An Inquiry into Variables.

    Using code, rather than the Motorcycle, you could explore the classic and romantic beauty of the various data structures and procedures.

    Eventually the various interesting parts of these systems become self-evident and can be appreciated on two levels: 1) on a macro level, much like a painting- The romantic beauty- how the program achieves its ultimate goal as in “what IS the program. and 2) on a micro-level, the building blocks- how these smaller parts contribute to the whole, like little bits of a guitar solo that obviously don’t a song make.

    I like it, my “literature” of computer code, as a sum of its parts in my great cocophony…. er… symphony…

    TroysOpus(“Hello, World”); // It’s beautiful… really… Simple and zenlike

    As in literature, I don’t think there will ever be a “one size fits all”. There will always those that appreciate the classic simple structures built into larger componants that are part of a much larger idea. Then, there will be those that will appreciate the objects with well defined inputs and outputs that can be plugged together to achieve the same goal. In essence, we’re not only talking a different genre, but, a different language all together.

    Just be careful, Robert Pirsig was eventually institutionalized for paranoid schizophrenia…

  3. admin says:

    Calabra: Yes, I am. But source code might end up looking very different from the way it looks now, if we’re talking about a form of source code that is universally read and written.

    Troy: you are the one invoking Pirsig here, so I’m not sure that I need to be careful. My tastes run more to Herrigel. :-)

  4. troy says:

    Ah, Herrigel- Probably the most famous Zen-Archery-Nazi in history.

    I actually use some quotes from his book on using the long bow when teaching my kids to fling arrows. I was probably 17 when I last read it, so, guess at least on the romantic point of view, part of it stayed with me. I’ve basically reduced it to the idea that releasing the arrow is not a conscious action. If the arrow releases on it’s own, it’s almost always a good shot. (the same goes for shooting a rifle, but, I’ve already digressed way past the topic of your post.)

    In any case, I’m constantly flinging arrows on account of the paranoid scizophrenia… I’ll be in the garage adjusting my carbeurator for Montana if you need me…

  5. troy says:

    (just for the record, I do know the difference between its and it’s… For some reason those darned apostrophes keep creeping in… I have severely reprimanded my right pinky…)

  6. admin says:

    Yes, it’s sad that Herrigel later went over to the dark side. Mel Gibson was a fine actor and more than fine director before — well you know.

  7. troy says:

    Once I got past the Australian Brogue, and the tedious Aramaic, I came to the same conclusion as Mel… We’re all going to Hell…

  8. abc says:

    Why do you think there could ever be a universally recognized computer programming language?

    Do you think there could ever be a universally recognized (spoken) language? Would we want one?

  9. Michael says:

    Hm, the analogy to literature is quite interesting – but also very reasonable. I suppose if you’d take aesthetics into account (which is imho also a a centre-piece of literature) then the two may not be that far apart actually.
    Very Zen indeed, the arrow flies when it’s ready, the formula is pleasing to the eye when it’s correct, a sentence feels right and code reads well and looks pretty.
    In all if these case you still have the pre-requisite of reading competence though. And especially in the world of code that needs to be well developed – more so since the writing competence leaves a lot to be desired as well.
    Just as there’s industrial design that is hurting the eye, there’s plenty of code like that as well.
    “Reading” foreign code can be a challenging task. If you’re lucky it’s a whodunnit and you get it in the end and enjoyed the ride.
    If you’re unlucky it’s more like a bad soap opera 😉
    I absolutely think that aesthetics in code and functionality are intertwined though. I find myself looking at my code with fairly much the same eyes that I use to judge the GUI, general functional concepts available to the user… or even unrelated CGI work that has nothing to do with coding.

    Rambling? Yeah, sorry, just an unsorted dump of thoughts I suppose 😉 I’ll try to come up with a point for the next comment.

    Cheers,
    Mike

  10. admin says:

    To abc: I’m not so worried about whether there would be a single language, just whether where there could be any computer language at all that would be a viable tool for 95% of the population. More than one would be just fine.

    To Michael: I completely agree. Once reading each others’ programs becomes a culturally significant act (as opposed to an arcane act practiced by only 5% of the population), then writing programs in a clear and communicative way will increase fundamentally in importance.

Leave a Reply