July 26, 2005

Confusion of Codes

by Nick Montfort · , 11:59 am

Acting on a tip from Stephanie Strickland, I’ve been reading Florian Cramer’s Words Made Flesh: Code, Culture, Imagination, a PDF book that is an impressively broad compendium of creative uses of code, stretching back deep into pre-computer times. It’s well worth checking out for those interested in the history of computational art.

Near the beginning, though, Cramer repeats a confusion that I’ve seen hinted at elsewhere. Although it doesn’t end up being important to the book, this point confuses clarity with obscurity and secrecy, so I thought I’d take the excuse to pick this nit before the infestation becomes more widespread:

As speculative codes, Egyptian hieroglyphs (in their two different historical readings), the Voynich Manuscript and Travis Dane’s CD-ROM render “code” ambiguous between its traditional meaning of a cryptographic code, i.e. a rule for transforming symbols into other symbols, and code in its computational meaning of a transformation rule for symbols into action. Ever since computer programmers referred to written algorithmic machine instructions as “code” and programming as “coding,” “code” not only refers to cryptographic codes, but to what makes up software … (p. 9)

Here, Cramer is overlooking a more obvious and relevant pre-computer meaning of “code,” one which seems much more related to the code of computer program than is the cryptographic meaning of the term. Cramer provides no argument here or elsewhere as to why the programming sense of “code” would derive from or otherwise relate to the early sense of “code” as a secret cipher. The way programmers use “code” is much more obviously connected to formal encoding or transformation for purposes of unambiguous representation or communication. Morse code and Baudot code are examples such non-secret codes formalized to improve communication; they seem very directly related to ASCII and the BCD (Binary Coded Decimal) scheme used in computing. If someone encodes text in Morse code, it’s not to keep it secret from me – although I don’t know Morse code, so it might incidentally help in that regard – but rather, to make the message completely clear to all radio operators. Similarly, I encode an audio waveform in order to make a clear and compact digital representation of it – if I want to encrypt it or add some fancy Digital Rights Removal technologies, that’s a separate process, one is that also formal, but is different in purpose and effect and that happens after encoding.

That video, audio, and text can all be encoded without being encrypted is one thing that suggests encryption isn’t the main pre-computing sense of “code” that has been brought into digital practice. It seems clear to me that the “code” of a computer program also doesn’t have much to do with secret codes, however obscure and esoteric some computer programs may be. Such “code” just formally represents instructions. It is written not to keep anything secret, but to make sure these formal instructions are completely clear to the computer.