Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

Natural languages vs. programming languages

A language is a means (and a tool) for expressing  and recording thoughts. There are many languages all around us. Some of them require neither speaking nor writing, such as body language; it's possible to express your deepest feelings very precisely without saying a word. 

Another language you use each day is your mother tongue, which you use to manifest your will and to ponder reality, too, called machine language, which is very rudimentary. 

A computer, even the most technically sophisticated, is devoid of even a trace of intelligence. You could say that it is like a well-trained dog - it responds only to a predetermined set of known commands. 

The commands it recognizes are very simple. We can imagine that the computer responds to orders like "take that number, divide by another and save the result".

A complete set of known commands is called an instruction list, sometimes abbreviated to IL. Different types of computers may vary depending on the size of their ILs, and the instructions could be completely different in different models. 

Note: machine languages are developed by humans. 

No computer is currently capable of creating a new language. However, that may change soon. Just as people use a number of very different languages, machines have many different languages, too. The difference though, is that human languages developed naturally. 

Moreover, they are still evolving, and new words are created every day as old words disappear. These languages are called natural languages. 

What makes a language?

We can say that each language (machine or natural, it doesn't matter consists of the following elements: 

  • an alphabet: a set of symbols used to build words of a certain language (e.g., the Latin alphabet for English, the Cyrillic alphabet for Russian, Kanji for Japanese, and so on)
  • lexis: (aka a dictionary) a set of words the language offers its users (e.g., the word "computer" comes from the English language dictionary, while "cmoptrue" doesn't; the word "chat" is present in both in English and French dictionaries, but their meanings are different)
  • syntax: a set of rules (formal or informal, written or felt intuitively) used to determine if a certain string of words forms a valid sentence (e.g., "I am a python" is syntactically correct phrase, while "I a python am" isn't
  • semantics: a set of rules determining if a certain phrase makes sense (e.g. " I ate a doughnut" makes sense, but "A doughnut ate me" doesn't)

The IL (Instruction List) is, in fact, the alphabet of machine language. This is the simplest and most primary set of symbols we can use to give commands to a computer. It's the computer's mother tongue.

Unfortunately, this mother tongue is a far cry from a human mother tongue. We both (computers and humans) need something else, a common language for computers and humans, or a bridge between the two different worlds. 

We need a language in which humans can write their programs and a language that computers may use to execute the programs, one that is far more complex than machine language and yet far simpler than natural language. 

Such languages are often called high-level programming languages. They are at least somewhat similar to natural ones in that they use symbols, words and conventions readable to humans. These languages enable humans to express commands to computers that are much more complex then those offered by IL (Instruction LIsts). 

A program written in high-level programming language is called source code (in contrast to the machine code executed by computers). Similarly, the file containing the source code is called the source file