Dave Scotese — While human language is used to entertain, inform, and manipulate, computer languages are used only to control the behavior of machines. With human language, both sender and receiver are humans, but computer languages are received only by machines. No one has any control over how human language is able to produce these effects, but for computer languages, there is always a controlling authority that specifies exactly how the language controls the machine.
There are several “species” of human language, one of which nearly every human being picks up very early in life, with hardly a bit of effort. Computer languages, on the other hand, are very strict about how they can be used and generally can’t be learned until a human language is mastered. When a user of human language breaks the rules of that language, the audience generally forgives and corrects the error internally without much trouble, sometimes without even knowing it. Machines simply produce errors or garbage or nothing.
Often, the so-called “mis-uses” of human language serve to continue its evolution. Certainly, there is “correct spelling” and “correct grammar”; but these specifications represent an attempt to establish standards where control is impossible. Poorly grammer or unspelled werds are nearly as useful as the “correct version” (if not more so) in circumstances where breaking the rules makes sense, perhaps as an example.
Every computer language has one inventor (though he may have worked with a team), who has complete freedom to decide how the language will control the machines that are programmed to implement it. Programmers who use the language have no freedom to control those effects. With human language, however, there is no one who can alter the effect of a particular communication on another human who receives it. The receiver has nearly complete control over how it affects him or her.
On the other hand, we humans control machines with our computer languages, and the good languages allow us to get the machines do anything they can possibly do. This gives programmers a tremendous amount of freedom. The inventors of computer languages are free to create the language in any way they see fit. Since human language is learned so early and has some evolved biological support, it can be used to manipulate. A child repeatedly told she is “smart, kind, and important” will grow up with a better disposition than one repeatedly told she is stupid or mean. Advertising is a billion dollar industry.
Authorities over human language are in competition with each other to discover the ways the language is growing and changing so that they can keep up with it. They are authorities because they study language and put a lot of effort into identifying its qualities. They become authorities by studying and learning all there is to know about a language. There can be many authorities for what is considered a single human language, and they can disagree with each other because they are looking at something that exists without them.
Computer language authorities are not studying and learning their language. They are creating and inventing it. As a created work, a computer language has an inventor who decides how the language works and specifies all of its nuances. They are truly “authored”, unlike human language, which has no real author.
Human language suffers from the philosophical dilemma between knowledge and definition. Language, as each human uses it, is his own invention even though it borrows heavily from everyone around him. Many people attempt to impose their own definitions on others, even for a word that was first used in their conversation by the other person, and that leads to largely useless arguments. A better approach in this case is to suggest using a more easily understood phrase. For example, the word “government” for one person may mean any group that assumes that society condones that group’s use of coercion. Others can disagree with this definition and when they do, their argument is about how a particular word must be used. It has nothing to do with actual government or the effects of coercion on people, or the ethics of condoning violence. Recognizing this distinction between what a person means and what he says would make human language far more useful than it is today.
One of the biggest problems in computer languages is the ability for humans to understand what they are doing. Most languages have some way for the programmer to add comments, and this is widely encouraged. A good solution to this problem would be a process that identifies everything the program defines, and provides the programmer an opportunity to explain what it’s for. These explanations would then be added directly to the code using the existing comment feature of that language.
Human language, suffering from that illusion that it is something to “know” rather than something to define (by each person who uses it), could be improved by a campaign to spread this knowledge far and wide: people use language to mean things, not to show off their “knowledge” of the language they’re using. Too often, the inability to understand another person is a result of failing to bridge the gap between how the audience uses language and how the speaker uses it. While it is kind to point out that most people use a certain term or phrase for one meaning rather than another, it is often moot, as well. This knowledge would also help a great deal with another problem.
Modern tyranny relies heavily on propaganda, or, as George Orwell called it in 1984, “new speak”. If you consider what a politician means when he says “a good compromise”, you will find that what he means is “coercive control over you that contains some of the elements I support”. The effort to see the meaning lays bare the value of what he or she is saying. Failing to make this effort leaves one open to arguing semantics, and implies support for the redefinition of words that can then drag intrinsic positive connotation (as in “good compromise”) into the real meaning of what was said (coercive control).
One important question related to this discussion is whether human and computer language can help improve each other. Now, chess and computer programming are two of the best tools the human race has. Life is complex, but we can set things up to minimize problems. It often takes some planning, but it’s possible. When you fail, you can try again with a few adjustments here and there, or by completely revamping your strategy. There are some unbreakable rules, but you’re welcome to try breaking them to see how they end up being enforced, and that is painless in the context of several games or several programs. There are also good strategies, as well as circumstances in which they are best avoided. The more you play, or write code, the better you’ll get – not only at playing chess and programming, but at planning, strategy, persistence, learning, handling complexity, making adjustments, accommodating rules, and many other things too numerous to list here.