Ian Bogost has an interesting argument that computer languages are not languages, but systems.
He starts off arguing that learning a programming language shouldn’t meet a curricular requirement for learning a natural language. That’s a fair argument, except he does so on the basis that computer languages are not languages at all.
”the ability to translate natural languages doesn’t really translate (as it were) to computer languages”
It clearly does translate. You can either translate literally from C to Perl (but not really vice-versa), or idiomatically. It’s straightforward to translate from C to English, but difficult to translate from English to C. But then, it’s difficult to translate a joke between sign and spoken language; that doesn’t mean that sign language isn’t a language, indeed sign languages are just as rich as spoken ones… The experience of signing is different from speaking, and so self-referential jokes don’t translate well.
We can approach translating from English to C in different ways though. We can model the world described in a narrative in an object oriented or declarative fashion. A human can get the sense of what is written in this language either by reading it, or perhaps by using it as an API, to generate works of art based on the encoded situation. Or we could try to capture a sense of expectation in the narrative within temporal code structure, and output it as music.
From the comments:
”If we allow computer languages, we should allow recipes. Computer codes are specialized algorithms. So are recipes.”
This seems to be confusing utterances with languages. Recipes are written in e.g. English. Computer programs are written in e.g. C.
“[programming code is] done IN language, but it ISN’T language”
You could say the same of poetry, surely? Poetry is done in language, but part of its power is to reach beyond language in new directions. Likewise code is done in language, but you can also do language in code, by defining new functions or parsing other languages.
The thing is that natural languages develop with a close relationship with the speaker, words being grounded in the human experience of their body and environment, and movements and relationships within it. Computer languages aren’t based around these words, but we can still use the same symbolic references by using those words in the secondary notation of functions names and variables, or even by working with an encoded lexicon such as wordnet as data. In doing so we are borrowing from a natural language, but we could just have easily used an invented language such as Esperanto. Finally the language is grounded in the outside world when it is executed, through whatever modality or modalities its actuators allow, usually vision, sound and/or movement.
… replacing a natural language like French with a software language like C is a mixed metaphor.
Discussing computer language as if it were natural language surely isn’t a mixed metaphor, if anything it’s just a plain metaphor. But both have strong family resemblances, because both are languages.
The claim that computer languages are not languages reads as an attempt to portray computer languages as somehow not human. Get over it, digital computation is something that humans do with or without electronic hardware, we can do it to engage fully with all of our senses, and we can do it with language. Someone (who I keep anonymous, just in case) said this on a mailing list recently:
“Having done a little bit of reading in Software Studies, I was surprised by just how many claims are invalidated with a single simple example of livecoding.”
I think that this is one of them.