April 02, 2004

Code as Writing as Code

10 REM Is code writing, writing code?
20 PRINT "I wanted to take up the question: Is code writing?"
30 INPUT ANSWER$
40 IF ANSWER$="No" THEN PRINT "Why not?"
50 IF ANSWER$="Yes" THEN PRINT "Is it narrative?"
60 REM Can code tell a story?
70 ?
80 PRINT "Some would argue that code can tell a story."
90 PRINT "In Ullman, the story is definitely about code."
100 PRINT "Is the code in the story story?"
110 ?
120 PRINT "Is this code a story?"
130 END

Try this textual program:

Rockwell: "...I therefore propose that we use a definititon of code from a Web authority -- dictionary.com -- which reads: Code is 'A system of symbols and rules used to represent instructions to a computer; a computer program" (5).

I really think that code is writing, code is story, code is narrative (I think much in the same way that I want to see all things as Texts like Andrew and Altheusser (sp?)). Again, I think we're troubled by the difficulty of trying to find code as "satisfying" in the same way my explanation I'm writing is satisfying or that a suspense novel is satisfying. However, in the way that we learned to read narrative in the form of a codex, I believe we'll learn to read narrative in the form of a cybertext. And for those who learn to read code, they do see narrative in the code.

Ramsay: "No one writes programs that way precisely because the code needs to be understandable not only by the computer, but by the person writing the code and others who need to verify its logics and extend, modify, port, and replace them....Harold Abelson...has even gone as far to say that 'programs must be written for people to read, and only incidentally for machines to execute" (6).

Rockwell: "...code has to be unambiguous in a way that wee do not expect text to be" (6).

"It's not a joke, Herring. You should not be calling these routines. I've documented it thoroughly--"
"Who has time for fucking documentation?"
"You can read, can't you?"
"There's reading, then there's programming."
"There's intelligence, and then there's--" (Ullman, 102)

"At the thought of the task ahead of him, a red stain spread across his cheeks. He felt humiliated at the stupid mistake he'd made. Harry was right: he should have named the routines more clearly. He could have avoided trouble if the function names clearly told the other programmers which routines they could use and which were private to his device-interface libraries" (Ullman, 104-5).

Here is part of the rub. Code is closer to the human than it is to the computer. We already said that code may seem like gobbledegook to most people, but it is really for humans to read and understand. It is no accident that code is called a language (literally or metaporically) and most code borrows from English (is there code in French? Chinese? Sanskrit?).

I disagree that code is not unambiguous. If anything, code is full of ambiguity. Ambiguity that must be reined in for programmer, debugger, and compiler to understand. The fact that a program arbitrarily decides what a variable is called or a function is called creates all sorts of opportunity for close reading, for ambiguity. A variable that holds a person's age could be called quite literally VariableAge or it could be called ClosenessToDeath. There's all sorts of meanings that could and is conjured by even such a simple decision.

Ambiguity abounds. And ambiguity opens the door for interpretation, for assumption, for meaning, for story.

In fact, Ethan in The Bug treats his programs like a book or more accurately a manuscript-in-progress that he picks up and puts down. He leaves himself a bookmark: "Here you are Ethan." He read through passages before and after and decides what needs to added, deleted, or rewritten. Whenever he opens his life program he must recall the story of the program, the story of the output, the story of his little Os and Xs in order to figure out how to engage the problem and the code.

Ramsay: "...a program is a kind of narrative, in part because te accomplishment of a specified task is only one of several purposes for a set of coded instructions. We therefore describe coded instructions...as the story of the machine's operation" (7).

Rockwell: "We can say that code is in the imperative voice -- commanding the interpreter who follows the code to do certain things and not other things" (8).

Ramsay: "...for most programs, that language is recognizably some form of natural language (usually English). Why wouldn't code inherit some of the same rhetorical valences which natural language possess?" (9).

I think code has to be rhetorical. It is a persuasion. It must persuade the reader that it does what it is suppose to do and it must, in a way, persuade the compiler that it is legal and executable. I am reminded of the Rhetoric of Science seminar I took last semester; the class basically unpacked the very false idea that science writing was not persuasive, rhetorical. But every lab report or journal article or study is persuasive: look at my data, look at my hypothesis, look at my conclusions, look at my new work, look at my reputation. It's all rhetorical.

In the case of code, code is persuasive. Is it clear? Does it have purpose? Is it the best way to perform a task? Is it the most comprehensive? Is it well formatted? Is it r0x0r l33t?

"This bit of code here. What's it doing?"
"Well, you can read it."
"Yeah, I can read it. But three levels of indirection. Why? What's it doing? What the hell does it mean?"
Thorne stared at him irritably and said nothing.
"Narrate the code to me," Ethan said. "You know, there's all this indirection because...I assign winarray to object_array because..." (Ullman, 248)

For me, this passage in The Bug really points up the writingness, the narrative quality of code. Ethan while debugging, Berta while trying to imagine how the machine reads the code is a kind of close reading. In the above passage, Ethan is asking Thorne what the story of his code is, what the argument of the code is, why is it important to the functioning of the program and for the narrative of the program.

I think Code, with a Capital C, is in a way a paradigm shift in the way the people think about the world. Ong believed that writing was a similar shift for oral cultures. Orality gave way to Writing. And I think that Writing may give way to Code. Coders, hearkening back to the class's discussion of what made them so special or different, have made that shift. Codes, with a Captital C, see the world, interact with the world, describe the world, and organize the world according to Code. Life is variables, strings, ASCII, hexadecimal, passwords, windows, arrays, pointers, pixels, bezier curves, cookies, Java, DPI, megs, gigs, error messages, hard, soft, cyber.

Think about the power switch on a computer or printer or monitor: many show instead of on or off have 1 or 0. Flowcharting, which I learned in programming class, is alive in kicking in corporate presentations and PowerPoint slides. Self-checkout lines are teaching people to think of their apples not (just) as apples but as #4131 which the inventory program understands. People having a "bad life" often say flippantly, "I wish I could reboot my life."

Perhaps the shift from Writing to Code is another Horseman in the apocalypse (for good or not or indifference) we call post-humanity.

END

P.S. Thanks for listening, ED.

Posted by Ed at April 2, 2004 10:37 PM
Comments

Summed up my thoughts perfectly.

Lately, I am becoming very much aware of writing code as constructing narrative, due to the fact that I am going to try to attempt the use of the MUD to construct a personal narrative for another class project and considering how and if a game can be used to construct a narrative. Aarseth makes a nice distinguishment between narrative and narration and ergodics, and I think the MUD has it's own issues resolving those three points in similiar ways that [i]Afternoon[/i] does.

Thinking on this while coding for a MUD, I am very much aware of spaciality, pathways, where to hide the layers/exits, assemblage, language to shape it, and how to shape the code to produce or hide what I wish.

I find myself most often looking at how to construct my narration to offer the reader the best means to construct a narrative. Currently, I think in MUDspace that may be a good strategy to embark on, or at least, an interesting one, leaving my narrative in the reader's hands--isn't that partially how we in the "real" world construct the narratives of who our friends are, from our memories and bits and pieces of what we know as "them"? Where could they go? What could they see? What paths will I open and close? What's the game/goal?

Some of this I have pre-sketched out, but much of it I will write, as an author, in the moment, creating story bits as I create rooms and spaces that hold the database of memories and stories within the narration. Books in the MUD will be opened with links to my actual livejournal, exposing different layers. Code will insert me--and people, memories--as an "object" into the game (and I might even see if I can log on to it when it's viewed, to create yet another interactive level in the game with the author herself, as well as the ghost in the machine).

In short, there is a certain type of authorship one achieves when working with code, a method of thinking hypertextually that I find just as fascinating when creating the hypertexts and code as I do when reading another's work, a growing into a sort of posthuman authorship, if you will. It opens up levels of my own story to me when placed in code that I may have never have had access to other wise. (Ah, to say my life began to take root on the 'net has so many different meanings).

I'll have to think on that precise way of thinking further--and then think of how it applies to traditional codex narrative. I am now wondering at comparisons with code and hypertextual thinking and comics and graphic storytelling.

Kell

Posted by: Kell at April 5, 2004 01:11 AM

Ed, I think your point about variable names is an excellent one. Not to mention REMs. Even down to the particular nesting of subprocedures, everyone's code probably looks a little bit different.

I think Berta's revelation about the sheer distance between her code and the workings of the computer serves, for me, as the best metaphor between coding and writing. The code is a translation of the assembly language is a translation of the binary is only a representation of what really goes on at the computer level. Anyone who's done both Boolean logic and circuitry can tell you just how much resemblance those last two bear... even when we say that the computer really speaks binary, not C++ or Java or BASIC, it's an oversimplification. The code is a language many, many levels of mediation away from the electrical pulses it eventually represents.

And so is writing -- or to be simpler and cut out the idea of art, so is verbal communication. The words that come out of my mouth are parsed by your ears (turning vibrations into sounds), then by Wernicke's area I think (turning sounds into meanings), mediated by your fluency with whatever language I'm speaking and affected by your associations and connotations... and eventually, it all comes down to the firings of your neurons. My speech is a code for how I want your neurons to fire, and it breaks down just as often as computer code, though it's a bit harder to trace.

This is all tangential to Ed's point, but it's what I think of when considering writing, code, or the relation between them -- the Zeno's paradox of attempting to manage the distance between high-level language and electrical impulses.

Posted by: Jess at April 5, 2004 05:32 PM

Well said, Jess. And I don't think it's all that tangential. It's interesting that we're naturally (in the midst of this discourse, that is) coming around to the idea that we may at one point stop and realize that humanity has been inadvertantly cloning itself in mechanical/ electrical/ digital devices for quite a long time (something them cybernetic folks first began to postulate). This goes way beyond the idea of tech. as prosthetic and bridges the gap between Achilles and the tortoise, so to speak, as each are rendered the same by their association to the agent of their creation.

So on to the real question, then:

Does this relation negate the post-human or validate her?

Posted by: Marc at April 6, 2004 12:27 AM

We have to be careful when we collapse distinctions like programming and writing, prose and code. If there is no difference than why have two words? As interesting as the similarities are I ask you to look at the differences in the prose of this entry and the fragment of code. If I gave you fragments of code and fragments of writing without telling you which was which would you have any difficulty distinguishing them? Would it make a difference?

Now how would Steve answer me?

I like how you connect Ullman's book to this issue. What struck me in _The Bug_ was the Game of Life. Programming simple rules that lead to a complex ecology.

The other thing that Ullman plays with is the difference between the continuous and the discrete. Can we ever fully model the continuous with discrete systems like a digital computer? I comment on Ullman in blog entry at:
http://strange.mcmaster.ca/~grockwel/weblog/notes/000166.html

Ed starts his entry with some code. Untitled #4 actually was originally the fourth of a series of programs designed to generate (and be) statements about textuality. In U4 we tried Knuth's literary programming. The dialogue was our way of presenting a short work meant for the human computer dialogue in the oral setting of a conference. I have put an HTML rendering of the "real" U4ia up at: http://strange.mcmaster.ca/~grockwel/weblog/notes/000296.html

It seems appropriate that Ed had a literary programming response with code and prose intertwingled.

Posted by: Geoffrey Rockwell at April 6, 2004 01:32 AM

-- quote from Ed --
I disagree that code is not unambiguous. If anything, code is full of ambiguity. Ambiguity that must be reined in for programmer, debugger, and compiler to understand. The fact that a program arbitrarily decides what a variable is called or a function is called creates all sorts of opportunity for close reading, for ambiguity. A variable that holds a person's age could be called quite literally VariableAge or it could be called ClosenessToDeath. There's all sorts of meanings that could and is conjured by even such a simple decision.
-- quote from Ed --

This is dead on, and it reminds me of many a rancorous code review. What's obvious to one is entirely non-obvious to another. If code were unambiguous, presumably there would be nothing to discuss.

But Geoff is right. Collapsing these distinctions runs the risk of creating an epistemological entity that drops out of the equation (if everything were green, would we not be behooved to pass over this fact in silence?). I think Geoff and I chose the dialogue form partly because we found our arguments generating one "yes, but" after another. In the end, for all its points of contact with narrative, code does seem to be something different.

Posted by: FatherBusa at April 6, 2004 10:19 AM

I certainly agree that expanding a term too far leaches it of meaning... pace Andrew and his colleagues in the "everything is text" movement. :> But I think that, with writing and code in particular, there can be significant resistance to recognizing the functional similarities between them. A certain amount of expansion on both terms might serve to overcome prejudices -- the idea that code is unambiguous, for instance, or that verbal communication is proprietary to humans. I think the comparison is particularly useful for understanding the process of writing and interpretation. Without a recognition of the functional equivalencies between writing and code, we end up trying to understand human communication with recourse only to the spooky realms of "art" and "intuition." Which are fine for talking about certain aspects of writing, but I don't think they allow the issue to be fully explored.

Posted by: Jess at April 6, 2004 03:20 PM

I think that what I was trying to argue (cum Jess)is that there are equivalancies in processing both code and writing that find their valence in the levels of mediation inherent to each particular mode of decompression. And, yes, it is certainly possible to say that I would be able to distinguish code from writing (unless it was at its most fragmented point-- the letter itself), but what about those that do speak in French? Chinese? Sanskrit? Would they, too, see the decipherable distances? The inherent "Englishness" of code, then, is also the ultimate expositor of its aims: a decipherability by (Western) human agency (be it programmed or otherwise). Just as writing allowed us to give spatial-symbolism to oral/aural language, so does code allow us to give a similar spatiality to digital memory (how many web pages have ever been sketched in pencil before hand?). Now, however, the executables are not appendices of oral language reception/ processing but, rather, a system of Western symbols moving through a dictated pathway (of program) to produce a given pixelized result. Ahab does not die at the beginning of his tale, nor does code execute its desired function without moving through a parallel symbolic pathway.

Having said all of that, I'm still quite torn.

Posted by: Marc at April 6, 2004 08:11 PM

On the narrativity of code: look to control structures, such as if-then-else statements.

Recall too Queneau's "Story As You Like It", and his assertion that his method was influenced by tree structures in computer programming.

Gardens of forking paths, mazes of twistly little passages all alike--the tropes that have come to delineate literary cybertext apply just as well to exerpience of reading code.

Posted by: Matt at April 7, 2004 12:53 PM

I guess I don't see a problem with referring to programming and writing, prose and code as a category or a rubric or a family of story or narrative. I suppose I should have been more conscientious in my response that I am not looking to collapse them to the point of disintegration. I want to highlight their generic (genre) samenesses and preserve their particular differences.

Afterall, we have a category called literature under which falls all sorts of various different types of texts: prose, poetry, novel, nonfiction, letter, memoir, short story, hypertext, cyberfiction, adventure game.

Furthermore, most of these categories have very different materialities, very different forms and structures, and very different exigences and goals but are still called literature (e.g. novel versus epistulary novel versus a Shakespearean play versus a sestina versus a concrete poem versus a adventure game). I would argue that in some ways a sonnet sequence would look like code to someone not familiar with the conventions. So, in this more macro sense, could writing and programming be bedfellows?

Posted by: ED at April 12, 2004 08:26 AM