LWN.net Logo

Human languages

Human languages

Posted Feb 19, 2006 4:41 UTC (Sun) by jstAusr (guest, #27224)
In reply to: Human languages by man_ls
Parent article: New initiative aims to improve the quality of patents (NewsForge)

Communication is to exchange ideas or information. A computer doesn't express ideas, it can only change state. If software languages were primarily useful for changing state within the computer there would be no need for software language wars because the computer cannot express a preference. It doesn't care if it is stuck in an endless loop or doing something that a human would consider useful.

When you perceive that you are communicating with the machine you are really communicating with a programmer, that has in some way anticipated your wants and needs. If the machine had a preference I am sure that it would be loudly objecting to the needless changes of state that it is forced to perform.

Doesn't the "I" argument prove that the communication is between the humans and not with the machine? The state of the machine has no concept of self.

I have seen numerous times when programmers are trying to express an idea and resorting to code to express the idea because that is their common language. I still maintain that patent laws are restricting programmers ability to communicate with each other in their common language.


(Log in to post comments)

Human languages

Posted Feb 19, 2006 13:11 UTC (Sun) by man_ls (subscriber, #15091) [Link]

You argue if I'm not mistaken that computer languages are a variety of artificial languages, those designed by people to perform the role of natural languages but in more systematic, rigorous or precise ways. They also lack the concept of "I" among other things. E.g. they are mostly declarative, and only include interrogative and exclamative sentences as an afterthought; forget about other, more primitive modalities like votive (to express a wish) or imperative (to express a command).

Computer languages are not declarative; they are imperative in nature. Some interrogative (conditional) statements are contemplated; no other modalities are found. This is attributable to the fact that the programmer is telling the machine to "change state", as you put it; sometimes depending on external conditions. There is no point in complicating the language with any other constructs; explanations to other programmers are in fact done in natural language embedded in comments.

When my team meets and we discuss what must be done, we use a variety of means like natural language, drawings, gestures and so on. We may resort to code, as you said, in combination with natural language explanations to communicate certain complex algorithms. This only means IMHO that we have learnt to think like the machine does, a very necessary skill for a programmer. Something like translating

"pick every yello bird"
to this (in C):
for (i = 0; i < birds_total; i++) {
  if (birds[i].color != YELLOW)
    continue;
    ...
}
which we do effortlessly after years of practice. It does not mean it is our best way to communicate, but it does remove some ambiguities; after all computer languages are anything but ambiguous because we are talking to a machine.

Even software patents (those I've seen) are written in natural language in preference to computing languages, maybe with some pseudo-code excerpts.

Doesn't the "I" argument prove that the communication is between the humans and not with the machine? The state of the machine has no concept of self.
I don't follow you. If machine state is all that matters, then it's proof that we are just communicating with it. When I talk with my fellow humans, I need pronouns.

Human languages

Posted Feb 19, 2006 14:15 UTC (Sun) by kleptog (subscriber, #1183) [Link]

Computer languages are not declarative; they are imperative in nature. Some interrogative (conditional) statements are contemplated; no other modalities are found.

There do exist declarative languages, Prolog being the classic example, but Lex and Yacc grammers are too. The difference being that you state what you are looking for and the computer goes and finds it for you. To write a Sodoku solver in Prolog takes a dozen lines, since you only have to describe what a solution looks like, not how to get there. Ofcourse, an efficient solver is a different issue, but not that much harder.

Your example "pick every yellow bird" is not good because the translation does not contain the same info. The code describes how it is stored and how to check if it is yellow which your english statement neglected to mention. Your statement in Prolog would simply translate to yellow(Bird) and voila, Bird is a yellow bird. Or at least a yellow something, you'd possibly need to say bird(Bird) to make sure you're getting a bird.

Arguing that it's not a real language because there is no "I" is silly because you only use pronouns where it would otherwise be ambiguous. Pronouns are just shortcuts to indicate what/who you mean. When you start putting computers together you can clearly see there is a concept of self (localhost) and other. "this" and "self" are pronouns because they are alternate names for what you are actually operating on. In computing what you are operating on is not usually ambiguous that pronouns like "I" are needed, but they do exist.

Human languages

Posted Feb 19, 2006 17:24 UTC (Sun) by man_ls (subscriber, #15091) [Link]

There do exist declarative languages, Prolog being the classic example [...]
You are of course right, thanks for the correction.
Arguing that it's not a real language because there is no "I" is silly because you only use pronouns where it would otherwise be ambiguous. Pronouns are just shortcuts to indicate what/who you mean.
Right again. The exceptions are the pronouns "I" and "you"; they represent the speaker and the listener, and not any other notion that has been mentioned, identified or defined previously, as other pronouns. In fact they change automatically as the conversation progresses, when the listener becomes the speaker and viceversa. That's why I picked "I" as an example of the differences between natural and computer languages: no programming language has the notion of "I" because there is no "speaker", and that is because they are not used to engage in a dialog. It is not a programmer talking to another, it is a programmer instructing a machine.

Human languages

Posted Feb 19, 2006 17:04 UTC (Sun) by jstAusr (guest, #27224) [Link]

But machines need the ideas and thoughts of programmers to give the illusion that the user is interacting with the machine. We aren't talking to the machine, we are interacting with the recorded thoughts and ideas of humans.

In your code verses english example, as kleptog has stated, the instructions are not the same (Kitty is hoping birds_total doesn't contain kitty_stomach). So in some cases the software form is better than the human form, which I believe you stated in a different way.

Copyright © 2008, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds