To respond to the previous discussion related to programming languages and natural languages, I decided to start a new discussion. My purpose here is to explain a kind of language theory that I developed quite many years ago. A classic book about the C programming language begins with a program that contains the statement printf("hello, world"); It has been said, however, that the printf function that is used in the above statement does not belong to the language itself but it is a library function. To me, this raises questions: Why begin a book about a programming language by showing something that does not belong to the language? If the above printf function does not belong to the used programming language, into which language it belongs? To respond to questions like these in the context of computer programs, I have redefined the word "language" so that there does not exist pure programming languages or natural languages. Instead, each computer program or any other document has its own language that can be defined as a set of symbols. For example, the language used in the above statement, consists of the symbols printf ( " hello , world ) ; Similarly, it would be possible to list all the symbols that are used in this message. That set of symbols would be the language used in this message. The language of the single statement above would then be a sub-language of the language of this message. With this kind of view to languages it is possible to try to figure out how complex some programs or other documents are. The language theory is explained in more detail in the paper http://www.naturalprogramming.com/to_read/estimating_understandability_etc.pdf I would like to emphasize that I discuss languages here from the human point of view (e.g. how a human understands a computer program.) How a compiler 'understands' a program is quite well defined. When a language is treated as a set of symbols, less emphasis is put to the syntax of the language. It can be assumed that it is part of the meaning of a symbol how it can be connected with other symbols. In the world of (spoken) languages the meanings of symbols change. For example, originally the word 'Google' was a noun (name), but later on it has been used as a verb. It is also important to note that a person can think that another person has misunderstood a symbol or a set of symbols of a language. I cannot know how you interpret the symbols that are used in this message. However, I can be sure that the symbols themselves will stay the same regardless of how they are understood. A person can have a weak or strong meaning for a symbol. For example, the meaning of the symbol 'printf' above can vary depending on how much the reader is familiar with C programming. I think this theory of languages is related to the quasi-linguisticness that was discussed in an earlier thread. - Kari -- The Open University is incorporated by Royal Charter (RC 000391), an exempt charity in England & Wales and a charity registered in Scotland (SC 038302).