Programming - a writing practice
Computer programming is a complex human practice involving both individual actions and collective interaction. To program computers essentially means to write computer program texts. These texts greatly resemble other forms of written communication as alphabetical symbols on an empty slate. But, unlike the ink-and-paper texts so ingrained in our culture, computer program texts are embodied in a new, twinned medium: software and hardware. Computer program texts live out their entire, 'normal' lives as electronic impulses stored on magnetic tape (software) or etched as metal fillings in silicon stone (hardware). These media are new and foreign to our culture, and so by the power of association the practice of writing computer programs is also regarded as a new, exotic and foreign human practice.
The goal of this introduction is to break this association and recast the strange and (auto)magical practice of creating programs as the familiar and almost mundane practice of writing texts. To reach this goal this introduction will first familiarize the reader with the look and feel of computer program texts: what is a computer program text? and how do they function? The answers to these and similar questions will not focus on program texts from the machine's standpoint, as is common, but rather take the computer program texts at face value and describe their forms and functions without too much emphasis on different technical realizations and media. Key in this presentation is how programmers connect their programs. When programmers write computer programs, they essentially compose their programs as symphonies of references to and quotes from other program texts. These other texts, real or imagined, form an environment in which the program lives. However, these texts are written by many different people, at different times and places, and with different purposes. To transcend these barriers of difference, programmers develop programming languages with words and grammars that directly facilitates references to and the arranging of quotes in program texts. The first two articles of this thesis is based on this description. Morphology and Power describe in further detail how different programming languages enable and constrain programmers writing symphonies of program words. Intertextuality elaborates on how written texts and language in general form intertexts and how intertextuality can be further studied and understood.
Second, and extending the understanding of what programming languages are and do, this introduction will describe how different programming languages shape how programmers envision their programs. When programmers express their own purposes as functions of other programmers texts, not only the lexical, but also the grammatical resources made available in the programming language enable and constrain the programmers. The enabling constraints of the programming languages grammar can be understood as the implicit rules of the programs environment that come into play when programs run. But precisely because these rules constrain how programs run, they must also constrain what programs programmers can envisage running. As such programming languages can be understood as not only tools for realizing computer programs, but also as tools for thinking about - or rather with - computer programs. The thesis third article on The Forms of Time and Chronotope in computer programming builds on this description and illustrate how grammatical and literary mechanisms in ordinary languages such as ancient Greek or English can do the same.
- Computer program texts and Programs as intertexts (Article 1 & 3)
- Thinking with programming languages and chronotopes and Programming as method in Computer Science (Article 2 & 4)