Computers are Systems, not Languages

Last year I learned about a rumor swirling around the comparative literature department at UCLA, where I did my PhD. Supposedly I had managed to get C++ to count as one of the three languages required for the degree. It’s not true, for the record, but it is a topic that comes up from time to time—substituting programming languages for natural languages. Many of us who work in computing and the humanities claim that knowledge of computation is essential background for all discussions that hope to bridge the two, not just for those who intend to make things for computers.

In fact, that’s the basis of most justifications for substituting a computer language for a natural one in humanities graduate programs. If literary scholars need to understand the languages that comprise literature, then, so the logic goes, digital scholars ought likewise to understand the languages that comprise computing.

UC Davis and UC Irvine now allow students to substitute one “computer language” for a foreign language. Of course I have no objection to studying codes and I believe in a form of AI (connectionism), so I’m not a Luddite. And I’m an object-oriented ontologist. I don’t believe humans have a monopoly on meaning. I think humanists should study all kinds of things (“carpentry” as Ian Bogost puts it).

…

If we allow computer languages, we should allow recipes. Computer codes are specialized algorithms. So are recipes

…

So what are we doing when we ask a Ph.D candidate to “translate” some software code? I hold that we’re asking her to do something very different than what we want when we ask her to translate some Derrida from the French.

Tim’s right to point out that the ability to translate natural languages doesn’t really translate (as it were) to computer languages. And in that sense, replacing a natural language like French with a software language like C is a mixed metaphor.

And it’s in that mixed metaphor that we find the very reason we computational humanists so scorn traditional humanists on matters digital. To understand computation one must look at all of its material forms, and how those forms interrelate uniquely and differently in particular platforms and artifacts. This is the holistic approach that Nick Montfort and I advance under the shingle of platform studies. (Perhaps you can see why the object-oriented approach appeals to me.)

In the doctoral program in digital media at Georgia Tech, we don’t require students to demonstrate monkey-like mastery in a particular programming language. But we do require them to demonstrate mastery of computational creativity. They have to be able to make things with computers, and we offer a broad range of ways to prove that ability. Not just some comical programming test, or whatever the equivalent of a language exam might be.

Here’s the rub, though: the same accusation could be made of natural languages! The idea that we just strap on a foreign language competence to humanities doctoral requirements is preposterous anyway. It’s an artifact of the linguistic turn, wherein language became a fetish that replaced more meaningful, synthetic evaluation of the various material conditions at work in particular systems of interest. That’s why Tim’s comparison of cooking is so apt. Natural languages are systems. So are computers. So is cooking. So is politics. We should choose the right expertise smartly, based on goals not on requirements or blind tradition.

Don’t get me wrong, I think people should learn languages. That’s not just lip service… I publish a Greek course for kids, after all. I think everyone should do this in addition to learning programming languages, not as a substitute. That’s because language is a vital and predominant component of human history and culture. It’s just not the only one.

Here’s a final provocation: perhaps the conversation about replacing program languages with computer languages in the humanities is really a crack in the wall of the very idea of national language programs. In the humanities of the future, perhaps we will we gather within the logical boundaries of specific media or specific problems instead of within the accidental boundaries of states and languages.

published January 25, 2011

Comments

(1) Propositional logic is neither English nor French. It’s not a language. Neither is programming code. It’s done IN language, but it ISN’T language, just like the words you’re reading here are done IN pixels, but they AREN’T pixels. Dig?

(2) [commenter posted some code] No amount of scary looking stuff that I don’t understand touches my argument. I can show you a bunch of recipes for lobster bisque that would pop your mind, dude. They are written in English. I see “map return.” I see “option.” I see “Nondet” which is presumably an abbreviation, perhaps involving some sense of “determine.” And the OED, for which I work, includes some coding senses of words such as â??runâ? that I also see here.

I don’t know what “Thou still unravish’d bride of quietness” means. Do you? But I can translate it into French.

25 years ago, when I was in AP Computer in high school, we were allowed to answer questions on the AP exam in pseudo-code. It wasn’t the compilable syntax they were after, it was logic flow independent of language.

Ian Bogost

I don’t really have an opinion on the humanities-curriculum question (I think languages are over-emphasized in humanities curricula, and that programming languages are over-emphasized in computer-science curricula). But the sharp distinction doesn’t make that much sense to me.

Propositional logic tends to obscure it because of its hyper-formalism and the fact that people rarely encounter anything but elementary examples written in it. But if you look at any actual programming language used by people to express nontrivial computational ideas, they have idioms, trends, fossilized expressions, phrasings that are considered “correct but awkward”, etc.; writing code that compiles and is correct according to the formal language definition is only the start of what it means to be “fluent” in a particular computer language.

I don’t think that means they should count as languages for the purpose of humanities curricula, but I think the sharp distinction being drawn here between “languages”, which express meaning, and “codes”, which are purely dry formal specification, is a bit simple.

I don’t entirely understand the point about translation. Are we talking about translating computer code into English? If so, I agree that that’s not the same kind of translation; as Morton says, it’s just taking an algorithm and giving it an English gloss. It’s more like explaining how a thing works than translation. But what about translating a significant idiomatic C program into idiomatic Haskell— not just mechanically translating the C program word-for-word so it’s “C in Haskell”, like a bad French-to-English translation that simply uses a dictionary to replace every word in sequence, but translating an idea that was initially written “natively” in C so that it appears to a Haskell user to be native Haskell? I’m not sure that’s the same kind of translation as English to French, but it sure seems like translation of some variety, and runs into some of the same issues and tradeoffs.

I mostly avoid these debates, though, because they always (the linked article not excepted) seem to have a reactionary-humanist quality to them; the usual, “these silly computer scientists trying to compare their dry formalisms to our infinitely subtle, complex, deep ideas, languages, philosophies!”.

Actually it is conceivable that you could have a language that is a computer that uses humans or other language using beings as the computational medium. I’m also not sure, and perhaps i am too bound in semiotics here, that all language isn’t code, and that it should be possible in theory, though not with our current systems i think, to build a computer that can interpret foreign languages.

I met my foreign language requirement for my degree with Spanish, but mostly they accepted spanish because I also was demonstrably passable in ancient greek statistics, and several computer languages. Here in the social sciences, statistics used to be acceptable as a foreign language of sorts… heh, i think that rule has changed.

Ian Bogost

Yeah, that’s common, but I don’t see it at all in this case. And there are clearly things that computer languages and natural languages have in common. But it’s pretty silly to suggest that they are interchangeable.

It is and it isn’t separate. if the argument is proceeding from difference, then when we could collapse some of these distinctions in short order, and if we do that, then as best as i can tell the only argument we have is that humans with language currently have cultures and it is the link between the language-culture and the ways of knowing/thinking that is important in learning other languages. But if that is the case then a computer language like lisp or haskell as embodying a mode of thought might be something to consider, whereas a more generic language might not.

Computer “languages” are not languages at all, period. They are convenient systems of notation, fancy versions of the sequences of bits that make up raw machine code. They are not intended for communicating with other people; they have no tense besides the present imperative; they are capable of discussing nothing but numbers.

Somebody somewhere is being a dumbass.

Matt Schneider

I personally don’t think that computer “languages” should qualify for language requirements, but I really like this comment by Mark N:

But what about translating a significant idiomatic C program into idiomatic Haskell— not just mechanically translating the C program word-for-word so it’s “C in Haskell”, like a bad French-to-English translation that simply uses a dictionary to replace every word in sequence, but translating an idea that was initially written “natively” in C so that it appears to a Haskell user to be native Haskell?

This, to me, is something well worth investigating. It reminds me of the example Ian and Nick Montfort point to in Racing the Beam (forgive me if I misstate something, as my copy is in my office) of a programmer who uses $60 both as the assembler command to exit a subroutine as well as the first colour in a sprite in order to save memory.

There does indeed appear to be a certain amount of nativeness to programming languages in terms both of efficiency as well as elegance, and it would be a shame to throw that particular baby out with the language requirement bathwater. I don’t myself believe that this makes programming “languages” quite the same as, say, German or French, but I do think it is worth investigating notions of nativeness in programming languages all the same.

“Subtle, complex, deep”: no. Not at all. In fact the difference in these terms is between rigor (software code has to be pretty unambiguous) and sloppiness (I can say “end” to you and you can take it any which way, pretty much).

Non-computational languages are not necessarily subtle, complex or deep, even if they are very old. They could be sloppy, vague and redundant.

But the real issue is, as Dave Mark puts it, the difference between “logic flow” competence and what medievals call “grammar” (i.e not logic). You need both of course. But you do logic “in” language, just like you do military strategy. Still, a war is not a piece of language and neither is logic.

About

Ian Bogost is an author and game designer. He is the Ivan Allen College Distinguished Chair in Media Studies and Professor of Interactive Computing at the Georgia Institute of Technology, Founding Partner at Persuasive Games LLC, and a Contributing Editor at The Atlantic.