Tuesday, February 12, 2008

Speech, Writing, and Code

It struck me as I read Hayles that the fundamental difference between code and writing (and speech), is what she said on page 51: "Like esoteric theoretical writing, code is intelligible only to a specialized community of experts who understand its complexities and can read and write it with fluency." Then she goes on to describe how writing and speech pervades on a different level of code, as only "(relatively) few experts can initiate changes in the system," and "no such bridges can be built between Windows 95 and Windows XP, without both massive recoding and fluency in the nastily complex code of Windows programming" (Hayles 51). I feel the comparison of code to "esoteric theoretical writing" is inappropriate. As illegible as code may be to the layman, it is anything but esoteric. It's far less ambiguous and far more logical than speech or writing (in any natural language). The machine's inability to interpret connotation forces the programmer to account for every detail. And let us not forget that code is a human construction - it is the result of our need to communicate with machines. Any fault of the code, such as the irritating distance between Windows 95 and Windows XP files, is due to poor planning (or business savvy planning), which is a result of natural speech and writing. In this sense, one might argue that code in and of itself cannot express connotation, as this would only lead to ambiguity. This would support the idea that code is subordinate to speech and writing. Because of the lack of the secondary meaning, code can only represent a fraction of what speech and writing can.

Hayles continues to argue that "there is no parallel to compiling in speech or writing, much less a distinction between compiling and run-time" (Hayles 59). She is referring to the compilation of object oriented languages, which have liberated the programmer from the clutches of procedural languages. I always interpreted the process of compilation as a sort of translation from one language to another. The upper level object oriented language cannot be interpreted by the machine (the machine, in fact, cannot interpret non-procedural languages). This compilation parses the higher level code, checks for correctness, and then writes lower level code to a file that can be interpreted by the machine's hardware. This is the definition of translation, from one language to another, from human/programmer language to machine language. Is this so different from the translation of the written word or speech to another, natural language? In many cases there exists more than one translation, more than one way to perform the same task. There are wordier (or codier) translations, as well as more elegant (or eloquent) solutions. Furthermore, this language of machines isn't completely unintelligible to humans - someone had to write it, and someone has to maintain it. The language of code isn't as far removed from natural languages as most people believe.

Code's malleability is another important asset. Pixar films feature images created exclusively with code, which serves as an example of code's ability to establish a familiar relationship with the viewer. However, imagine these films without the voices of actors and actresses we know and love? Furthermore, imagine if these voices were replaced with digitally synthesized voices? This organic sound is necessary - anything short of it would be almost offensive to the viewer. Code, in this example, has replaced the camera and lens (or rather created its own). Code however, did not replace the script - it supplements the creative writing with creative coding.

Whether you look at code as some "esoteric", foreign entity, or as a logical means of conveyance, it is a tool in the same vein as speech and writing; they supplement each other, not subordinate.

No comments: