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 :
- Le disque dur conserve les données durablement, même ordinateur éteint ; il a une grande capacité (souvent 512 Go, 1 To, 2 To), mais il est plus lent que la mémoire vive.
- La mémoire vive (RAM) stocke temporairement les programmes et les données en cours d'utilisation, et se vide à l'extinction ; elle est très rapide, mais bien plus petite (souvent 8, 16 ou 32 Go).
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.
- Avantages : sur une même plateforme, on compile une seule fois puis on exécute directement, et l'exécution est rapide.
- Inconvénients : peu portable, il faut souvent recompiler pour un autre système ; la compilation des gros projets est longue, et le développement un peu moins rapide.
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.
- Avantages : très portable, pas de compilation, on lance le code dès qu'il est écrit ; développer et corriger est souple et rapide.
- Inconvénients : il faut réinterpréter le code à chaque exécution, ce qui est plus lent.
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
- Le matériel comporte cinq éléments ; unité de calcul + unité de contrôle = processeur. Le processeur ne comprend que des instructions machine faites de 0 et de 1.
- Le disque dur conserve durablement, avec beaucoup de place mais lentement ; la mémoire vive stocke temporairement, très vite mais avec peu de place.
- Le langage fixe les règles, le code est écrit selon ces règles, et le code forme des programmes qui accomplissent des tâches.
- Les langages sont passés du langage machine à l'assembleur puis au haut niveau, toujours plus proches du langage humain.
- Langage compilé : on traduit tout, puis on exécute, c'est rapide. Langage interprété : on traduit en exécutant, c'est portable et rapide à développer. Python est interprété.
Prochaine leçon : découvrir Python, ses origines et ses atouts, et l'installer sur votre ordinateur.