A Medium
Umberto Eco. Modes Of Sign Production.
The Computer Language
This chapter is an ultra concentrated introduction to computer language. I am unashamedly going to proceed in pure reductionism in order for us to understand language and brush aside the more fearful details of where linguistic studies can lead us - mostly into slippery, complex issues that go beyond my competence and the objectives of this resource. So if you are a hard-lined linguist, please accept my apologies in advance.
Languages are systems of communication. We use them everyday to express ideas, thoughts, opinions, exchanging information, fact and observation. Each are based on a set of conventional rules that give the speaker as the listener, the reader as the writer, a common, collective and coherent system of sounds and symbols with which to communicate. Throughout the ages, languages have evolved and mutated into others, the conventions changing in line with the needs of the communities that use them. We could say then that language is fundamentally an organised and dynamic system of communication.
It is organised in terms of having some logical structures, a syntax in linguistic parlance and a vocabulary that is common to those who use it. Language is dynamic in terms of possessing the characteristic for change and variation of those vocabularies and structures through the interaction of the groups who use it. Why we have so many of them is in part, if not mainly, based on how humans have evolved in different geographical environments and with quite different communication needs and cultural, political, economic and social values.
Programming languages share similar characteristics with natural languages. They can equally be regarded as an organised and dynamic system of communication. They have also given birth, in their relatively short history, to a plethora of diverse languages: ALGOL, Fortran, C#, C++, Java, Lisp, SmallTalk, not forgetting the more esoteric LOLCODE, FALSE, Brainfuck and even a language that mimics Shakespearean plays that is called, indeed, Shakespeare. These are just a small selection of literally hundreds of different computer languages that exist today.
Very much like our human languages, computer languages have evolved through the exchange and development of a set of conventions creating a particular set of syntax and lexical terms. However, despite these similarities, these two systems of communication differ widely. The fundamental difference is that natural languages have evolved with human needs whereas programming languages have been designed primarily with machine needs.
Due to the inherent logic of the computer, the underlying structures of a programming language reveal a strict set of limitations. Computer languages have a finite set of language constructs. That is to say, a finite vocabulary. Moreover the definitions for these are precise and complete. We can only instruct the computer to execute a certain task with a definite and precise set of language constructs.
Furthermore, programming languages lack the semantic scope of natural ones. There is no possibility for ambiguity in the instructions we write in a computer language. There is no place for metaphor, irony, simile, or any other figure of speech. Put another way, the computer does not interpret a computer language like we interpret our own natural languages. Essentially, when we are programming, we are defining a procedure for the computer to execute. We are not seeking to express meaning with these language constructs, we are seeking to denote a strict rule set.
This is equally true about a computer language’s syntax or grammar. The syntax is rigid with a few exceptions but these are rare. There can be no irregularity in the programming realm. Again, on a purely linguistic level, natural grammars are based on syntactical constructs that express meaning in the communication field between people. Whereas in formal computer language grammars, these structures denote precise instructions for the machine.
I think it’s also important to note that computer languages are a one way affair. We do not dialogue with the computer, we do not talk to it and it doesn’t talk back or write back independently of some pre-programmed human input, even if the illusion of artificial intelligence can at times be very convincing. Sure, we have Perl poetry, pseudo-code and the odd geek meets geek at a conference who will embark on some bizarre exchange of code snippets. When it boils down to it though, programming is, for the moment at least, a textual affair with the machine.
“Code is not purely abstract and mathematical; it has significant social, political, and aesthetic dimensions.”
Montfort Nick et al. 10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Based on what I've just written, some may say that our everyday programmer is just an operator of functional input. However, within the wider scope of code and the emerging methodologies of critical software studies , we are beginning to understand that this language system shares a dynamic and rich cultural dimension that has only just begun to take shape in our history. The wonderful book, 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 is a brilliantly written collaboration between academics in the field who focus on a single line of code, each deciphering in fine detail the extent of that succinct line of commands. This in-depth examination of code is testament to both its scope and influence as a medium in our contemporary societies.
To bring this brief chapter to a close, I'd like to point out that learning to program is a difficult skill to acquire and do well. That said, and contrary to popular belief, actually learning the language is relatively simple in comparison to learning a natural language. This is something that I try to get across to my students early on because it crops up a lot and unfortunately in the form of some self-inflicted learning barrier. From what I have observed, it is not so much the language itself that poses problems for my students in the long run, rather it is understanding the mechanisms of that language and its scope of possibilities as a medium for creative practice.