A "programming language" is a language designed to describe a set of consecutive actions to be
executed by a computer. A programming language is therefore a practical way for us (humans) to give instructions to a
On the other hand, the term "natural language" defines a means of communication shared by
a group of individuals (for example: English or French)
Languages that computers use to communicate with each other, have nothing to do with programming
languages, they are referred to as communication protocols, these are two very
different concepts. A programming language is very strict:
EACH instruction corresponds to ONE
The language used by the processor is called machine code. The
code that reaches the processor consists of a series of 0s and 1s known as (binary data).
Machine code is therefore difficult for humans to understand, which is why intermediary languages,
which can be understood by humans, have been developed. The code written in this type of language is transformed into
machine code so that the processor can process it.
The assembler was the first programming language ever used.
This is very similar to machine code but can be understood by developers. Nonetheless, such a language is so similar
to machine code that it strictly depends on the type of processor used (each processor type may have its own machine
code). Thus a program developed for one machine may not be ported to another type of machine. The term
"portability" describes the ability to use a software program on different types of machines. A software
program written in assembler code, may sometimes have to be completely rewritten to work on another type of computer!
A programming language has therefore several advantages:
- it is much more understandable than machine code;
- it allows greater portability, i.e. can be easily adapted to run on different types of computers.
Imperative and functional programming languages
Programming languages are generally divided into two major groups according to how their commands
- imperative languages;
- functional languages.
Imperative programming language
An imperative language programs using a series of commands, grouped into blocks and comprising of
conditional statements which allow the program to return to a block of commands if the condition is met. These were
the first programming languages in use, even today many modern languages still use this principle.
Structured imperative languages suffer, however, from lack of flexibility due to the sequentiality of instructions.
Functional programming language
A functional programming language (often called procedural language) is a
language which creates programs using functions, returning to a new output state and receiving as input the result
of other functions. When a function invokes itself, we refer to this as recursion.
Interpretation and compilation
Programming languages may be roughly divided into two categories:
- interpreted languages
- compiled languages
A programming language is by definition different to machine code This must therefore be
translated so that the processor can understand the code. A program written in an interpreted language requires
an extra program (the interpreter) which translates the programs commands as needed.
A program written in a "compiled" language is translated by an additional program
called a compiler which in turn creates a new stand-alone file which does not require any other program to
execute itself, such a file is called an executable.
A program written in a compiled language
has the advantage of not requiring an additional program to run it once it has been compiled. Furthermore, as the
translation only needs to be done once, at compilation it executes much faster.
However, it is not as flexible
as a program written in an interpreted language, as each modification of the source file (the file understandable
by humans: the file to be compiled) means that the program must be recompiled for the changes to take effect.
On the other hand, a compiled program has the advantage of guaranteeing the security of the source
code. In effect, interpreted language, being a directly legible language, means that anyone can find out the secrets
of a program and thus copy or even modified the program. There is therefore a risk of copyright violation. On the
other hand, certain secure applications need code confidentiality to avoid illegal copying (bank transactions, on-line
payments, secure communications...).
Some languages belong to both categories (LISP, Java, Python...) as the program written in these
languages may in certain cases undergo an intermediary compilation phase, into a file written in a language different
to the source file and non-executable (requiring an interpreter). Java applets, small programs, often loaded in web
pages, are compiled files, which can only be executed from within a web browser (these are files with the .class
Some examples of widely used languages
Here is a non-exhaustive list of current programming languages:
||Main application area
||Programming for educational purposes
||System object programming
||Internet oriented programming
||Dynamic website development
||Processing character strings