Is Code Language? Or What?
If you’re a software developer, you write code; that is, you specify the functionality of a program by writing in a programming language like Java or C. You type code into a text file and the computer interprets or compiles it into something it can execute. But is this the same thing as, say, writing an essay in a natural language like English? Does it compare? An Economist blogger says no:
Show me a block of code in picaresque, tragedy or folktale.
Fair point. But what’s interesting about this well-written, thoughtful article to me is how it chases its tail. The basic idea of a programming language is to make developing software as human-friendly as possible, mainly by making it seem as similar to ordinary written text as possible. One of the longstanding dreams of computer science has been the notion of a computer that could be programmed by simply telling it what problems you wanted it to solve, and letting it create the needed algorithms for you. This was a big idea in the 80s (before it fizzled), and one could argue such a programming language really is language. I imagine coding in this language a bit like using Siri: just tell it what you want it to do. One might argue this isn’t programming at all. If you take the writing code out of programming, what exactly is programming?
Likewise, wondering whether this is or isn’t “language” is a bit like wondering whether “flying” in an airplane is really flying in the natural sense of bird flight. Obviously it isn’t identical on the face of it; there are no birds sporting enormous jet engines. But the whole point of an airplane is to give humans the bird-like capability of flight. At its root, the technology is inspired by bird flight. And I think you’d be hard-pressed to find anyone who thinks airplanes don’t fly.
My take is this: anything with symbols that can be combined in complex meaningful patterns (aka Peircean semiosis) is a language. Some languages, like English, are natural and are shaped by the needs of natural language users. Other languages, like Java, are formally constructed programming languages designed for specifying software functionality. While programming languages aren’t natural, their designers borrow inspiration from natural language. They are created in that spirit, and they really are language. Maybe you can’t write tragic Java (I’ve seen some code that tries hard!), but you can be a code poet: an artist of programming. I’ve seen beautiful and ugly code. Just because the purpose of a programming language is to produce software, rather than to communicate, doesn’t mean it’s not a language.