Début de l'informatique
D'où viennent les ordinateurs ? Binaire, transistors, portes logiques, mémoire, encodages : toute la fondation, de zéro, sans jargon.
D'où vient l'informatique ?
Bien avant les écrans, calculer était un métier : des humains — les « calculateurs » — passaient leurs journées à faire des tables à la main. La mécanisation a pris 300 ans :
| Date | Étape |
|---|---|
| 1642 | Pascaline de Pascal : additionner avec des roues dentées. |
| 1804 | Métier Jacquard : le motif du tissu est codé sur des cartes perforées — le premier « programme » stocké. |
| 1837 | Babbage imagine la machine analytique ; Ada Lovelace y écrit le premier algorithme : le logiciel naît avant le matériel. |
| 1936 | Turing définit ce qu'est « calculer » avec sa machine théorique — le plan de tous les ordinateurs. |
| 1937 | Shannon montre que l'algèbre de Boole (vrai/faux) se câble en circuits électriques. |
| 1945 | ENIAC : 17 000 lampes, 30 tonnes. Architecture von Neumann : programme stocké en mémoire. |
| 1947 | Transistor (Bell Labs) : petit, fiable, peu gourmand — il remplace les lampes. |
| 1971 | Intel 4004 : le premier microprocesseur, 2 300 transistors. Aujourd'hui : des dizaines de milliards. |
Pourquoi tout est en binaire ?
Un ordinateur ne comprend ni les mots ni le décimal : il ne sait que laisser passer du courant, ou non. Deux états stables valent mieux que dix états fragiles : pas d'approximation, pas d'erreur d'interprétation, et des composants ridiculement simples (un interrupteur).
Compter en binaire
Chaque position vaut une puissance de 2 (…128, 64, 32, 16, 8, 4, 2, 1). Pour lire 00001101, additionnez les positions à 1 : 8 + 4 + 1 = 13.
| Décimal | Binaire | Décimal | Binaire |
|---|---|---|---|
| 0 | 0000 | 8 | 1000 |
| 1 | 0001 | 9 | 1001 |
| 2 | 0010 | 10 | 1010 |
| 3 | 0011 | 11 | 1011 |
| 4 | 0100 | 12 | 1100 |
| 5 | 0101 | 13 | 1101 |
| 6 | 0110 | 14 | 1110 |
| 7 | 0111 | 15 | 1111 |
def vers_binaire(n):
return bin(n)[2:].zfill(8) # 8 bits, zéros à gauche
print(vers_binaire(13)) # 00001101
print(vers_binaire(42)) # 00101010 (32+8+2)
print(int('1101', 2)) # 13 — et le retourBits, octets et ordres de grandeur
| Unité | Vaut | Ordre d'idée |
|---|---|---|
| 1 octet | 8 bits | Une lettre |
| 1 ko | 1 024 octets | Un long texte |
| 1 Mo | 1 024 ko | Une photo |
| 1 Go | 1 024 Mo | Un film compressé |
| 1 To | 1 024 Go | Un disque familial |
L'hexadécimal, le raccourci des pros
Écrire 11011111 est illisible : on regroupe par 4 bits, et chaque groupe devient un seul caractère en base 16 (0-9 puis A=10 … F=15). 1101 1111 → DF.
- Couleurs web :
#FF4D00= rouge 255, vert 77, bleu 0 (l'orange de ce site). - Mémoire & erreurs : adresses comme
0x7FF3A2, codes d'erreur, clés. - Règle : 1 chiffre hexa = 4 bits, 1 octet = 2 chiffres hexa.
La logique de Boole et les portes
George Boole (1854) a algébrisé le vrai et le faux. Trois opérations suffisent à tout calculer :
| Porte | Règle | Exemple |
|---|---|---|
| AND (ET) | 1 si les deux entrées valent 1 | 1 AND 0 = 0 |
| OR (OU) | 1 si au moins une entrée vaut 1 | 1 OR 0 = 1 |
| NOT (NON) | Inverse l'entrée | NOT 1 = 0 |
| XOR | 1 si les entrées diffèrent | 1 XOR 1 = 0 |
Le miracle : avec XOR (la somme) + AND (la retenue), on additionne. Enchaînez ces demi-additionneurs et vous obtenez une calculatrice complète — puis un processeur.
Du transistor au processeur
Un transistor est un interrupteur commandé électriquement, de quelques nanomètres. Des milliards de transistors forment des portes logiques, qui forment les blocs du CPU :
- ALU : calcule (additions, comparaisons).
- Unité de contrôle : orchestre, lit les instructions.
- Registres : poignées de cases ultra-rapides pour le travail en cours.
Le CPU répète fetch → decode → execute (lire, comprendre, agir) à chaque battement d'horloge : 3 GHz = 3 milliards de cycles par seconde.
La mémoire, une pyramide
Plus c'est proche du CPU, plus c'est rapide — et petit :
| Niveau | Rôle |
|---|---|
| Registres / Cache | Le plan de travail (ko-Mo, quasi instantané) |
| RAM | Le bureau (Go, ce qui tourne сейчас) |
| SSD / Disque | L'armoire (To, ce qui attend) |
Comment le texte devient des nombres
La table ASCII (1963) numérote 128 caractères : A = 65, a = 97, 0 = 48, espace = 32. « Hi » = 72 105. Unicode / UTF-8 a généralisé à toutes les langues et aux émojis (1 à 4 octets par symbole, compatible ASCII).
print(ord('A'), chr(65)) # 65 A
print('Hi'.encode('utf-8')) # b'Hi' → 72 105
print('é'.encode('utf-8')) # b'\xc3\xa9' → 2 octets
print(len('🎉'.encode('utf-8'))) # 4 octetsEt les images, le son, les programmes ?
- Image : une grille de pixels, chacun 3 octets (rouge, vert, bleu de 0 à 255).
- Son : la hauteur de l'onde mesurée 44 100 fois par seconde (échantillonnage).
- Programme : du texte source traduit en instructions binaires (compilé : C, Rust — ou interprété : Python), chargé en RAM, exécuté par le CPU.
À vous : 4 mini-exercices
- 1. Écrivez 13 en binaire sur 8 bits. →
00001101 - 2. Que vaut
10110en décimal ? → 16 + 4 + 2 = 22 - 3. Que vaut
FFen hexadécimal ? → 255 - 4. Quelle porte vaut 1 quand ses entrées diffèrent ? → XOR