Section 1.16 Formal and Natural Languages
Natural languages are the languages that people speak, such as English, Spanish, and French. They were not designed by people (although people try to impose some order on them); they evolved naturally.
Formal languages are languages that are designed by people for specific applications. For example, the notation that mathematicians use is a formal language that is particularly good at denoting relationships among numbers and symbols. Chemists use a formal language to represent the chemical structure of molecules. And most importantly:
Programming languages are formal languages that have been designed to express computations.
There are two aspects that make up the syntax of a language:
- tokens
-
These are the basic elements for the language. In natural language, we can think of words as tokens. In chemistry, the tokens are chemical elements and numbers. In algebra, tokens are letters, numbers, and operators.
In English, “gzprm” is an invalid token; there’s no such word.
In chemistry, \(Zz_2\) has an invalid token; there’s no element with the symbol Zz.
In math, 3 + 6 $
has a token error; $
is not a valid mathematical operator (as far as we know).
- structure
-
Structure tells us how tokens are arranged.
In English, “A cookie want I” has a structure error.
In chemistry, \(_2H_2O\) has a structure error—the number should follow the symbol.
In math, 3 + × 6
is invalid; you can’t put a multiplication after a plus sign.
When you read a sentence in English or a statement in a formal language, you have to figure out what the structure of the sentence is (although in a natural language you do this subconsciously). This process is called parsing.
For example, when you hear the sentence, “The other shoe fell”, you understand that the other shoe is the subject and fell is the verb. Once you have parsed a sentence, you can figure out what it means. That is the semantics of the sentence. Assuming that you know what a shoe is and what it means to fall, you will understand the general implication of this sentence.
Although formal and natural languages have many features in common — tokens, structure, syntax, and semantics — there are many differences:
- ambiguity
Natural languages are full of ambiguity, which people deal with by using contextual clues and other information. Formal languages are designed to be nearly or completely unambiguous, which means that any statement has exactly one meaning, regardless of context.
- redundancy
In order to make up for ambiguity and reduce misunderstandings, natural languages employ lots of redundancy. As a result, they are often verbose. Formal languages are less redundant and more concise.
- literalness
-
Formal languages mean exactly what they say. On the other hand, natural languages are full of idiom and metaphor. If someone says, “The other shoe fell”, there is probably no shoe and nothing falling.
People who grow up speaking a natural language—all of us—often have a hard time adjusting to formal languages. In some ways, the difference between formal and natural language is like the difference between poetry and prose, but more so:
- poetry
Words are used for their sounds as well as for their meaning, and the whole poem together creates an effect or emotional response. Ambiguity is not only common but often deliberate.
- prose
The literal meaning of words is more important, and the structure contributes more meaning. Prose is more amenable to analysis than poetry but still often ambiguous.
- program
The meaning of a computer program is unambiguous and literal, and can be understood entirely by analysis of the tokens and structure.
Here are some suggestions for reading programs (and other formal languages). First, remember that formal languages are much more dense than natural languages, so it takes longer to read them. Also, the structure is very important, so it is usually not a good idea to read from top to bottom, left to right. Instead, learn to parse the program in your head, identifying the tokens and interpreting the structure. Finally, the details matter. Little things like spelling errors and bad punctuation, which you can get away with in natural languages, can make a big difference in a formal language.
Check your understanding
Checkpoint 1.16.3.
The differences between natural and formal languages include:
natural languages can be parsed while formal languages cannot.
- Actually both languages can be parsed (determining the structure of the sentence), but formal languages can be parsed more easily in software.
ambiguity, redundancy, and literalness.
- All of these can be present in natural languages, but cannot exist in formal languages.
there are no differences between natural and formal languages.
- There are several differences between the two but they are also similar.
tokens, structure, syntax, and semantics.
- These are the similarities between the two.
Checkpoint 1.16.4.