Pas encore de Python dans cette leçon : on pose quatre bases solides. La composition d'un ordinateur, la différence entre langage, code et programme, l'histoire des langages de programmation, et enfin les langages compilés et interprétés. Une grande partie de la suite repose sur ces notions.

1. De quoi est fait un ordinateur

Un ordinateur se compose de deux parties : le matériel et le logiciel.

1.1 Le matériel

Le matériel d'un ordinateur comporte cinq grands éléments :

Élément Rôle
Unité de calcul Effectue les opérations arithmétiques (additions, multiplications…) et logiques (comparer, décider si c'est vrai ou faux)
Unité de contrôle Le « chef d'orchestre » : elle fait travailler les autres éléments dans l'ordre demandé par le programme
Mémoire Conserve les programmes et les données : c'est elle qui donne à l'ordinateur une « mémoire »
Périphériques d'entrée Font entrer les informations : clavier, souris, micro…
Périphériques de sortie Affichent les résultats : écran, haut-parleurs, imprimante…

L'unité de calcul et l'unité de contrôle réunies forment ce qu'on appelle le processeur (CPU).

Attention : le processeur ne comprend et n'exécute que des instructions machine écrites en binaire, c'est-à-dire uniquement avec des 0 et des 1. On s'en resservira souvent.

Parmi les mémoires, on entend surtout parler de la mémoire vive et du disque dur. Retenez leur différence :

En résumé : le disque dur détermine combien de logiciels votre ordinateur peut contenir, la mémoire vive combien il peut en faire tourner en même temps sans ralentir.

1.2 Le logiciel

Les logiciels se divisent en deux familles :

Famille Rôle Exemples
Logiciels système Gèrent directement le matériel, répartissent les ressources (mémoire, processeur) et fournissent les services de base : gestion des fichiers, des périphériques, des tâches. Ils servent de plateforme aux autres logiciels Windows, macOS, Linux
Logiciels d'application Accomplissent une tâche précise pour l'utilisateur, en s'appuyant sur les logiciels système Navigateur, Word, jeux

Les programmes que nous écrirons en Python sont des logiciels d'application.

2. Langage, code et programme

Ces trois mots vont souvent ensemble, mais ils ne veulent pas dire la même chose.

2.1 Le langage informatique

Entre humains, on communique grâce à des langues. Pour « parler » à un ordinateur et lui donner des ordres, il faut aussi un langage : c'est le langage informatique. Comme le français ou le chinois, il a ses propres règles, très strictes.

2.2 Le code

Le code, ce sont les instructions écrites en respectant les règles d'un langage, pour dire à l'ordinateur ce qu'il doit faire. Autrement dit : le langage, ce sont les règles ; le code, ce sont les lignes d'instructions écrites selon ces règles.

2.3 Le programme

Quand on organise du code dans un certain ordre, selon une certaine logique, pour accomplir une tâche, on obtient un programme. Si le programme était une recette, chaque ligne de code en serait une étape.

3. Petite histoire des langages informatiques

3.1 Première génération : le langage machine

Aux débuts de l'informatique, on ne pouvait piloter un ordinateur qu'en langage machine (ou code machine) : des suites binaires de 0 et de 1. Pour saisir ou modifier des instructions, il fallait actionner des interrupteurs, brancher et débrancher des câbles, ou utiliser des rubans de papier perforé.

Le langage machine exploite au mieux le matériel, mais comme tout s'écrit en 0 et en 1, programmer était extrêmement fastidieux, les erreurs étaient fréquentes, et il fallait une patience infinie.

Par exemple, sur un processeur x86 courant, voici comment on fait calculer 1 + 1 en code machine :

10110000 00000001 00000100 00000001

Les 16 premiers bits signifient « mettre 1 dans un registre », les 16 suivants « lui ajouter 1 ». Impossible, ou presque, de le deviner en regardant ces chiffres.

3.2 Deuxième génération : l'assembleur

Pour rendre la programmation moins obscure, on a inventé l'assembleur. Il remplace les suites binaires par des abréviations anglaises faciles à retenir (des « mnémoniques », comme MOV ou ADD). L'assembleur est en quelque sorte une « traduction humaine » du langage machine : il a beaucoup abaissé la barrière d'entrée et préparé l'arrivée des langages de haut niveau.

Le même calcul 1 + 1, en assembleur :

mov al, 1
add al, 1

La première ligne met 1 dans le registre al, la seconde lui ajoute 1. Bien plus lisible que la suite de 0 et de 1, non ?

Attention : un programme en assembleur doit encore être traduit en code machine avant d'être exécuté, car le processeur ne comprend que le binaire.

3.3 Troisième génération : les langages de haut niveau

Comparés au langage machine et à l'assembleur, les langages de haut niveau sont bien plus proches du langage humain : on écrit avec des mots anglais, les symboles et les calculs ressemblent aux mathématiques habituelles, et la plupart des détails techniques sont cachés. Ils sont donc bien plus faciles à apprendre. Parmi les plus connus : C, C++, Java, PHP, Go, Rust, JavaScript et Python.

Par exemple, pour afficher « Hello, world! » en Python, une seule ligne suffit :

print("Hello, world!")

En Java, la même chose s'écrit ainsi :

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

La comparaison parle d'elle-même : Python est très concis, et c'est l'une des raisons pour lesquelles il est idéal pour débuter.

Attention : l'ordinateur ne peut pas non plus exécuter directement un langage de haut niveau ; il faut d'abord le convertir en langage machine.

4. Langages compilés et langages interprétés

Selon la façon dont ils sont convertis en instructions machine, les langages de haut niveau se répartissent en deux catégories : compilés et interprétés.

4.1 Les langages compilés

Avant l'exécution, tout le programme est traduit d'un coup en binaire directement compréhensible par l'ordinateur, ce qui produit généralement un fichier exécutable, comme les fichiers .exe sous Windows. Exemples : C, C++, Go, Rust.

4.2 Les langages interprétés

À l'exécution, un interpréteur traduit le programme instruction par instruction, sans produire de fichier exécutable en général. Exemples : Python, PHP, JavaScript.

4.3 Comparaison

Langages compilés Langages interprétés
Exemples C, C++, Go, Rust… Python, JavaScript, Ruby…
Fonctionnement Avant l'exécution, tout le programme est traduit en code machine et un exécutable est créé Pendant l'exécution, l'interpréteur traduit et exécute le code ligne par ligne
Fichier exécutable Oui : on compile une fois, on exécute autant qu'on veut Non : l'interpréteur doit traduire à chaque exécution
Vitesse Rapide Plus lente
Portabilité Faible : il faut compiler pour chaque plateforme Bonne : il suffit d'un interpréteur sur la plateforme
Usages typiques Programmes système, applications exigeantes en performance Scripts, analyse de données, IA, développement web…

Python est un langage interprété, et c'est justement l'une des raisons de son succès en analyse de données et en IA : on écrit, on lance, on corrige, on teste très vite.

À retenir

Prochaine leçon : découvrir Python, ses origines et ses atouts, et l'installer sur votre ordinateur.