Oct 2, 2012

Why code is not poetry

It’s a romantic idea, but we need to understand the differences between code and poetry while we embrace the idea of creative things being made with computer languages. The simple difference? Code does, while poetry doesn’t.

Code by mutednarayan

It’s easy to make offhand comments on twitter. When, at last month’s Freeplay Festival I attended the ‘Games and Words’ panel with poet Katie Keys and journalist Katie Williams, they spoke, amongst other things, about code and poetry. In response, I absently tweeted:

It’s a romantic idea, but code and poetry are enormously different

This tweet was subsequently picked up by Samuel Baird, one of the pair behind the lovely Toybox, who responded with this eloquent blog post.

“Often,” writes Baird, “the most elegant programming doesn’t read as a direct line by line tackling of the problem. Individual lines, constructs and thoughts seem un-obvious, oblique, transcendent and abstract. Yet in the whole the program is expressive and succinct, its meaning powerful and clear. Poetry.”

I think this is a very attractive lens to look at code, and Baird has made his point well here. It is very tempting to look at creating things with words as a kind of poetry, and I don’t deny that there can be something useful—or even emotional—to be gained by doing so.

But code is not poetry.

To argue this, I want to refer briefly to a classic journal article by theorist N. Katherine Hayles, “Print Is Flat, Code Is Deep”. In it, Hayles advocates for media specific analysis, pointing out that too often, media theorists and literary scholars disregard the actual medium in which text is inscribed. Words are the same across all disciplines, this line of thought goes: whether they are written into paper, or a codex, or a terminal is not the important point.

This is obviously flawed. As Hayles argues, any discussion about meaning must take into account a text’s physical specificity. A piece of long-form journalism in a newpaper lift-out is different from something written for Apple’s mid-1990s Hypercard software. Language is incredibly sensitive to context and medium.

But the key difference here is that code is perhaps the only language in existence that does exactly what it says it will. It is a language of action. Coders may go through trial and error, coders may put together rough fixes and hacked solutions, but it doesn’t change the fact that code, as a whole, is an attempt to provide a language that acts without interpretation. There are no grey areas in code. An ‘if’ construct in code has a specific and self-evident meaning that will be enforced by the processes of the code when run.

Poetry, on the other hand, is constructed for interpretation. It is a form of communication founded in the pleasure of making meaning, of unravelling, playing with, and sometimes intentionally muddying form. A single couplet may have a hundred different meanings. It is at once transparent and opaque, hard in its unyielding openness.

This is not to say that code can not have poetic attributes (especially in form). Nor is it to say that code cannot make poetic things, or be used for poetic ends.

But we have to take into account the functional and material differences between poetry and code. Code does exactly what it says it will. Poetry opens itself for others to say what it will. Code acts, while poetry waits for others to act upon it.

Code is not poetry.


EDIT: I’d just like to also direct readers towards this very thoughtful response from Claire Hosking, which is very much worth reading.

(Visited 6 times, 1 visits today)


Leave a comment

13 thoughts on “Why code is not poetry

  1. anthony stitt

    A piece of code has an audience of one (the machine it was designed to be run on), while poetry has an audience of many.

  2. baash oh five

    Garmonbozia A single line of code can indeed bring you to tears.
    x = y/z;
    If this is called when you save an essay due in an hour… and z happens to be zero.. I assure you tears will flow.

  3. baash oh five

    I’ll accept that code has but one meaning. if is always a conditional statement. Just as a sling and arrow are physical things that do not change.
    It is not the bits that define the code though.. It is putting it together that brings individual words to the level of poetry, just as code.
    To extend the idea further I’ll point to young writers and noob coders. A young writer may attempt to produce an emotion and they may indeed achieve their effect. After time though they may find the same results only more pointed. I’d argue that the same could be said for programmers. The very young write loops within loops where there is no need. Compares in whiles or convoluted drivel. It indeed accomplished it’s task, but the means lack elegance.

    In both cases (I’d argue) that the elegance is what defines the respective arts.

    As an aside.. well crafted software does evoke emotion. Satisfaction, happiness. Poorly crafted software crashes and loses your work. I suspect the noob coder that wrote the bad software did not intend to elicit screams of anguish. (The code was interpreted by the human who “enjoyed” it’s results.)

  4. Chris Johnson

    I reckon Daniel is right. Poetry and code may work with the same characters and words, but with different human intent, to express very different kinds of relationships. But he’s not right that code has only one meaning: code has many meanings. It has only one to the computer interpreting it (is this the true meaning?), but it often has other meanings to programmers who write it and read it through human eyes (as we know to our cost while we test and degbug or own code or other peoples’). This doesn’t make it poetry!

    (I’ve written a bit more in cwjcsbind on wordpress.

  5. Garmonbozia

    It’s a bit late now, but regardless:

    kd, I think it’s only fair to distinguish between something like Black Perl, which is poetry that incidentally happens to be code, and the code which is written specifically for functional purposes (that is, the vast majority of it, and what it seems me the article is about.)

    One can write code specifically because it scans or reads as poetry and, as a clever bonus, happens to compile. Or one can pragmatically code a program and compare *that* process, and the resulting written code, to the writing of poetry. I think this qualification is vital.

    Rather than being narrow minded, I think the problem here is that the views of poetry and code expressed so far are too ambitious, too sprawling, too blurry at the edges. We might simplify. For example, a line of poetry can move us to tears. If you play “Grim Fandango”, you might well shed a tear at the end, or be affected by one of the many lines of poetry in the game. The game’s source and scripting language is in contrast full of functional, practical lines of code. The emotional effect of reading these lines is entirely unlike the effect of the final product. From that fact alone, notwithstanding theory, should we call code poetry?

  6. Patrick Brosnan

    Programming is a craft, not an art or a science. Unlike a lot of technical disciples it allows great scope to the practitioner in terms of arriving at a solution to a problem. In a similar way craftspeople develop all kinds of ways of solving a problem like making something that is comfortable to sit on. I wouldn’t want to think that in the community of programmers we’re developing a view that there exist geniuses or gurus, the whole ego thing doesn’t need any more encouragement.
    And it’s a bit annoying that you pick an app written for iOS, it has to be the platform for which the least lines of code have been written. What about COBOL?

  7. kd

    This article displays a very narrow minded view of what constitutes both code and poetry:

  8. Paul Callaghan

    Separate from the functional aspects of both code and poetry in their ability to impart meaning to people and machines, it’s worth considering the way in which rhythm, assonance, consonance, and other poetic aspects of language work to create meaning in addition to their metaphorical or literal elements – and whether or not similar elements can exist in code. Meaning, in poetics, exists not only in what is said, but in the way the sounds and words and rhythms connect.

    A sentence such as:

    ‘The brain that pulsed in a dull glass bell’

    contains more than what is literal or metaphorical, it connects its ideas through its rhythm, its stresses, and the way it repeats connecting sounds. Poetics are just as much about the how something is said as the what. It isn’t just the metaphor that is run on our brain, it’s the resonance of the language too.

    From my old experience as a programmer, code can certainly be poetic in structure, or in the naming of variables, or in procedures and functions. It can be internally reflective or it can be built in ways that resonate outside of its functional meaning. It requires an intent though, but projects such as Sister.0’s regex poems in the Geek Mook ( or Code Poems ( show the possibilities.

  9. Daniel Golding

    Also, thanks for the provocative comment, Garmonbozia. I only just caught your response and will have to consider it further, too.

  10. Daniel Golding

    Thanks Ben and Sam for such interesting comments. I am totally okay with the level of depth that this debate has reached already!

    Ben: So I guess we have different ideas of non-human agency in a way that comes down to your grounding in ANT etc that I just don’t share, and that will colour what we have to talk about when we talk about a compiler program doing interpretation. I don’t disagree that we can talk about compliers, executable files, etc in terms of interpretation, but I would say that there are differences in what we talk about when we talk about a reader interpreting poetry and a computer program interpreting code. This goes back to my initial point: what I am saying here is that there is a modest category distinction that we must make; this is not to deny that we can talk about these things productively using similar lenses.

    I am interested in your second point, though, but I’m not sure I’m clear enough on what you mean to respond. Could you elaborate?

    Samuel: First, thanks for the post that triggered this discussion! And yes, you’re probably right in suggesting my appreciation of programming is naive. However, I’d hasten to point out that here it is probably necessarily so, as the point I am making is, as I said to Ben, a modest one. I’m not really deferring to a question of what the code actually says; I’m actually not at all interested in what the content of either poetry or code is in this post but rather their media specificity. What they say (or what they can say) is an entirely different point to the one I am making here.

    I’m really intrigued by the points you make about deterministic and completeness, and I think I’ll have to consider them further before responding to them. But as a brief comment, I’d just add that what a code expresses and how it functions are two somewhat separate questions for the purposes of my argument. Perhaps there is something to be said for the art of the complete code-product, rather than the language, but that doesn’t change my point that the individual syntax of code is necessarily non-intepretive in the same way as poetry.

  11. Garmonbozia

    As somebody who has written quite a bit of both poetry and code, I’ve never felt inspired to conflate the two. Code puts me into an analytical state of mind. It’s exciting, creative, often free-wheeling and intuitive, but my thought is always “How can I get this to work?”, not “What can I get this to say?” I’m using a borrowed language; the grammar, fundamentally, is not to be challenged, only deployed imaginatively.

    In contrast, writing poetry inspires in me an abstract contemplative mood in which there is no function to be concerned with, no schema or form to follow. I hope (usually vainly) to make each line resonate with some sort of personal truth. I take words and experiment with them, deliberately experimenting with syntax or semantics. The results feel organic and individual.

    Another thing to consider is influence. My poetic inspirations range from mystics to modernists; they all have a unique thumbprint, a kind of language and effect. Experienced coders, on the other hand, are all minimalists: their most obvious thumbprint is the lack of it, the cleanness of the code they leave behind.

    Or, consider this: we appreciate a coder by the genius with which they solve a problem, and the efficiency of their program. This is what we mean by appreciating their code. An excess of code, all to aesthetic effect, may read beautifully but will produce a bad program. I think goto statements are attractive on paper, but they’re almost taboo, because code needs to be easily read. Nobody suggests that a poet is obliged to always express themselves transparently. Code is best heavily commented; nobody expects a poet to release work with annotations, explaining what each line means.

    I can’t help but agree with the OP that something very distinct is happening here. But then again, I’m neither a great programmer nor poet.

  12. Samuel Baird

    Forgive me for sounding (being?) condescending but your appreciation of programming seems a bit naive. You say that code does exactly what it says it will, perhaps, but you’ve just deferred to different question, what does this code actually say?

    The idea that each line of code is clear and deterministic may be true to some extent (depending on the programming language used), but that does not mean that the program itself has this nature. Dealing with complexity is the point I raised in my post that you did not address. Each line may be close to deterministic (like a word in a poem?) but the behaviour of the program as a whole, with this data, on this machine, with this user at this time grows into a wild and wooly thing.

    That you can create something genuinely non-deterministic from deterministic parts may be unintuitive but it is reflected in the concept of Turing-completeness, the halting problem and Godel’s incompleteness theorem. These are real things that lie at the heart of real computer science problems (and plague working programmers in diluted form).

    It is reflected also in humans and free will, built from their own deterministic (in the small) genetic code. I refer you to the excellent book “Godel, Escher, Bach” by Douglas Hofstadter which traces this issue in parallel through art, literature, maths, genetics and code.

    Code acts? yes as does poetry when it is interpreted in your brain. The symbols go in and your brain whirs and clicks. Is acted upon? of course, a program is stored in the same way as an other information in a computer and is subject to other programs including itself. The distinction between code and data (“does” and “is”, “use” and “mention”) is very fluid, or even an illusion if you ask any Lisp programmer. Poetry HAS this same quality, this IS WHY code and poetry are similar, not why they are different. Poetry reveals itself in action, in interpretation, it rejects external static reducible meaning. A program reveals itself when it is run, its dynamic meaning is more than its static meaning.

    Now I need to put on my beret, down my absinthe and return to the nobel human endeavour of coding.

  13. Ben Abraham

    “Coders may go through trial and error, coders may put together rough fixes and hacked solutions, but it doesn’t change the fact that code, as a whole, is an attempt to provide a language that acts without interpretation.”

    So you’re arguing then that the ‘compiler’ program doesn’t perform any meaningful translation or interpretation of the typed-code? Or that the operating system doesn’t interpret the executable file? Or the CPU the bits of data the OS shunts to-and-fro? Granted, it’s a kind of mechanically reproducible interpretation, but I fail to see how it’s any less ‘mediated’ and interpreted than poetry. And sometimes that interpretation fails, through no fault of the rules! Data corrupts, metal plates demagnetise, logic gates latch and de-latch for material (not code!) reasons.

    I’m not convinced that you’re doing anything except swapping the fetishised object (non-mediated; ‘does what it says’; “There are no grey areas in code.”) that Hayles pretty strongly argues against. Yes, code is different from poetry (print), and should be studied with attention to its specificity, but it’s not as different as I think you’re describing.

Share this article with a friend

Just fill out the fields below and we'll send your friend a link to this article along with a message from you.

Your details

Your friend's details