I’ve been thinking more about “What is Code?” by Paul Ford, and the relationship of code (whether a given iteration or the Platonic ideal) to human discourse and language (whether spoken, signed, written, grunted, pictured).
Last semester I had my first experience writing actual code, learning to use the language R for a course in data visualization.* It was incredibly difficult, not least because, as I insisted, “my brain just doesn’t work that way.”
But it’s language, right? Like human language, code has grammar, syntax, and vocabulary. Like human language, there are often many ways to say the same thing, but only some of them will be intelligible, clear, and get the result you want. (Human language, however, is much more forgiving when it comes to sentence structure.) Just as learning human language (sometimes) requires a lot of exposure and/or memorization, so (usually) does learning code.
Ford says “C gave you an abstraction over the entire computer, helping you manage memory and processes inside the machine. Smalltalk gave you an abstraction over all of reality, so you could start dividing the world into classes and methods and the like” (43).
Doesn’t symbolic representation and language do the same for us? I’m sure it’s hardly an original analogy. But language is the medium through which we encounter and understand the world. It’s an abstraction “over all of reality” that allows us to encounter reality. It categorizes experience and structures thought.So, I’m wondering how far the comparison stretches.
Human language is not unidirectional – a set of utterances aimed at achieving a result in the external world – it also impacts our thinking and comprehension and emotional states. Does code operate both ways as well?
Well, as Ford suggests, quoting from Structure and Interpretation of Computer Programs, “A computer language is not just a way of getting a computer to perform operations … it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute” (104).
Unlike most human languages, which slowly evolve over millennia, new types of code are constantly in R&D. (At least, it’s probable that more people know R or C++ these days than Esperanto or Volapuk.) Watching computer languages develop, with their specialized vocabulary, grammar, syntax, and logic –which we can use to create, interpret, and “express ideas about methodology” — are we actually witnessing new ways of describing the world take shape in real time?
You know how frustrating it is when no word exists in [your native] language for an idea or feeling, or a word for something can’t be translated? Ford describes something similar: “But my first thought when I have to accomplish some personal or professional task is, What code can I use? What software will teach me what I need to know? When I want to learn something and no software exists, the vacuum bugs me …”(112).
Lastly, if language is the foundation of a culture, what about code? As Ford says of the various camps coders fall into, “These languages contain entire civilizations.” But it’s more than personality types and whom he entrusts with what tasks. The way he describes frameworks, for example, code has the potential to manifest types of cultural or institutional discourse:
“There are hundreds of frameworks out there; just about every language has one”. (84)
You have entered into a pool with many thousands of other programmers who share the framework, use it, and suggest improvements; who write tutorials; who write plug-ins that can be used to accomplish tasks related to passwords, blogging, managing spam, providing calendars, accelerating the site, creating discussion forums, and integrating with other services. You can think in terms of architecture. Magnificent! Wonderful! So what’s the downside? Well, frameworks lock you into a way of thinking. (86)
Isn’t most [all] of the critical theory of the past 50 years aimed at the unlocking discursive frameworks that have shaped human relations and the way we think about the world?
This is a very broad analogy, I realize. But that’s the way my brain works.
*Technically, this is not true. In the early 1980s my stepbrother (now a lifer at IBM) had a Commodore Vic-20 and taught me to write simple programs in BASIC that would do things like tell my stepsister she was stupid, or print my name across the screen in alternating white and black columns. When I expressed interest in learning more, he held up the thick BASIC manual and I ran off screaming into the land of literary language and The Phantom Tollbooth. What a mistake!