Histoire des langages

Objectifs

  • Savoir à quoi servent les langages informatiques et comment ils fonctionnent ;

  • Connaître les spécificités de certains langages informatiques.

Mise en situation

Un ordinateur ne traite que des représentations binaires, c'est-à-dire des informations représentées par des zéros et des uns. Or il est extrêmement difficile pour un humain d'exprimer ce qu'il veut réaliser uniquement en utilisant des zéros et des uns.

Les langages de programmation sont ce qui permet aux humains de communiquer et de faire fonctionner des machines (ordinateurs, smartphones, serveurs, etc.).

DéfinitionLangage informatique

Les langages de programmation permettent aux humains de donner des instructions à des machines.

Ils ressemblent aux langages humains : un ensemble de caractères et de mots, et de règles de grammaire pour les assembler.

Il existe une multitude de langages de programmation qui se distinguent les uns des autres par leur spectre d'utilisation, leur complexité, leurs fonctionnalités...

Exemple

C, Java, JavaScript, PHP, Python, Rust...

DéfinitionAssembleur (1949)

Une des prémisses des langages de programmation est l'assembleur, apparu en 1949. C'est un langage immédiatement traductible en binaire : il se contente de mettre en correspondance des mots humains (appelés mnémoniques) avec des instructions binaires compréhensibles par la machines.

Ces mnémoniques sont des instructions élémentaires permettant manipuler de l'information.

Exemple

L'instruction movb $0x61,%al se traduit directement en binaire par les chiffres 10110000 01100001.

Remarque

Il n'existe pas en réalité pas un seul langage assembleur mais plusieurs langages propres aux spécificités de chaque machine, à son architecture et son système d'exploitation.

ExempleHello World en assembleur

Voici un extrait d'un morceau de code en assembleur qui affiche le message « Hello, world! ».

fr.wikipedia.org/wiki/Liste_de_programmes_Hello_world

1
org 100h
2
mov dx, message
3
mov ah, 09h
4
int 21h
5
6
; Les quatre lignes suivantes servent à attendre qu'une touche soit frappée
7
; avant de quitter le programme normalement.
8
; Elles peuvent donc être exclues du programme,
9
; à ceci près que la visualisation du résultat sera impossible,
10
; la fenêtre de console se refermant trop vite.
11
xor ah, ah
12
int 16h
13
mov ax, 4c00h
14
int 21h
15
16
message db "Hello, world!$"

Ici, on voit différentes instructions : mov, int, msg qui manipulent des informations au niveau du processeur dans des registres, c'est-à-dire des mémoires utilisées par le processeur pour réaliser les calculs.

Les texte présents après « ; » sont des commentaires  : ils sont des indications pour les programmeurs et ne sont pas traduits pour le processeur.

DéfinitionFortran : l'arrivée des langages de haut niveau (1954)

Tandis que l'assembleur est une simple traduction des instructions binaires compréhensibles en mots faciles à retenir par un humain, un langage de haut niveau permet de faire abstraction de ces opérations de base pour décrire logiquement la façon de résoudre le problème.

Un langage de haut niveau est donc plus simple à écrire pour un humain et correspond davantage à sa façon de réfléchir dans la vie quotidienne.

FORTRAN a été inventé chez IBM en 1954. C'est le premier langage de haut niveau.

Pour fonctionner, un programme de haut niveau doit être traduit par un autre programme en langage assembleur. Cette opération de traduction s'appelle compilation, et produit un exécutable.

ExempleHello World en FORTRAN

1
Program Hello
2
Print *, "Hello World!"
3
End Program Hello

DéfinitionC : le langage de référence

Le langage de programmation C a été conçu au début des années 1970 par Dennis Ritchie et Ken Thompson dans le but de développer le système d'exploitation Unix qui était en train de voir le jour.

C'est un langage qui se veut simple et indépendant de la machine sur laquelle il s'exécute : en d'autres termes, le code qu'écrit un humain est le même quelle que soit la machine sur laquelle il va s'exécuter.

Il permet de gérer facilement la mémoire des programmes et dispose d'une grande bibliothèque standard, c'est-à-dire d'un ensemble de fonctionnalités déjà programmées et réutilisables par les programmeurs (ouvrir un fichier, afficher un message, etc.).

Il est encore aujourd'hui un des langages dominants le domaine de la programmation. 

ExempleAffichage d'un texte en C

1
#include <stdio.h>
2
#include <stdlib.h>
3
4
// Entry point of the program
5
int main()
6
{
7
    printf("Hello, world!");
8
    return 0;
9
}
10
  • Les deux première lignes permettent d'utiliser la bibliothèque d'entrées et sorties (stdio) et la bibliothèque standard (stdlib).

  • Le programme commence par les instructions situées après les mots int main().

  • L'instruction commençant par printf permet d'afficher le message Hello, world!.

  • La ligne commençant par // est un commentaire

DéfinitionJava : une nouvelle technique de programmation

Jusqu'ici, les langages comme C, sont compilés de manière différente en fonction des machines, qui ne parlent pas le même langage. S'il est possible de partager un fichier de code avec un ami, qui reste le même quelles que soient les machines, il n'est donc pas possible de partager l'exécutable.

Java est un langage développé par Sun Microsystems au début des années 1990, qui propose une solution à ce problème.

Le code écrit en Java est compilé en une représentation intermédiaire appelée bytecode. Un programme tiers, appelé machine virtuelle Java, se charge d'exécuter ce bytecode unique sur tous types de machine. La philosophie de Java est le "Write Once, Run Anywhere" (« Écrire une fois, exécuter partout ») : il est maintenant possible de partager un unique exécutable Java, et plus seulement le code.

ExempleAffichage d'un texte en Java

1
public class HelloWorld {
2
3
    public static void main(String[] args) {
4
        // Prints "Hello, World" to the terminal window.
5
        System.out.println("Hello, World");
6
    }
7
8
}

DéfinitionPython et JavaScript : s'affranchir de la compilation

Les langages historiques séparent les fichiers de code du fichier exécutable, produit de la compilation.

D'autres langages, dits langages de script, émergent dans la décennie 1990 et s'affranchissent des fichiers exécutables.

Les langages de script ne sont plus compilés mais interprétés : le fichier de code est le fichier exécutable : son exécution se fait au fil de l'eau, d'instruction en instruction. Ce trait en fait des langages adaptés au prototypage.

Python et JavaScript sont des langages de scripts, respectivement très utilisés dans les domaines du big data et du Web.

ExempleAffichage d'un texte en Python

1
print("Hello, world!")

ComplémentLangages bas niveau et haut niveau

On sépare généralement langage dit de bas niveau et langage dit de haut niveau.

Un langage de bas niveau est proche de la machine : il peut être traduit facilement en langage binaire et est assez difficile à lire par un humain. L'assembleur est un langage de bas niveau.

Les humains utilisent généralement des langages de haut niveau, indépendants de la machine et correspondant mieux à leur façon de penser. En contrepartie, la compilation en langage binaire nécessite plus de travail.

Il y a une hiérarchie tacite dans les langages de haut niveau : C est considéré comme un langage de plus bas niveau que Python.

ComplémentStyles de programmation

Il existe plusieurs styles, ou paradigmes de programmation. Ils sont adaptés au problème que le développeur souhaite résoudre.

Le style historique et dominant est dit impératif, comme avec C : le programme est une suite d'instructions linéaires que l'ordinateur suit.

Le style objet, adopté par Java, modélise le programme comme un ensemble d'objets en interaction. Un objet peut être n'importe quel concept, idée ou entité du monde physique, comme une voiture, une personne ou encore une page d'un livre.

Il existe d'autres paradigmes, comme le style fonctionnel, qui modélise le programme comme un ensemble de fonctions mathématiques.

À retenir

  • Les langages de programmation sont apparus en même temps que les premiers ordinateurs et se développent en fonction des besoins et des usages des utilisateurs.

  • Les langages de programmation ont été amenés à s'éloigner petit à petit des spécificités propres de la machine pour permettre de simplifier la programmation.

  • Un langage de programmation est choisi en fonction du problème que l'on cherche à résoudre.