#Introduction à l'informatique
Ce module donne un langage commun pour parler de machines et d'information. Nous allons relier des mots du quotidien ("fichier", "mémoire", "programme") à ce qu'ils signifient vraiment sous le capot, avec juste ce qu'il faut de formalisme.
Objectifs d'apprentissage :
- Comprendre la différence fondamentale entre matériel et logiciel
- Maîtriser les concepts d'encodage et de représentation de l'information
- Identifier les couches d'abstraction d'un système informatique
- Développer une intuition sur les limitations physiques et logiques
#Information: du monde réel aux bits
#Tout est binaire
Dans un ordinateur, toute information est représentée par une séquence de bits (0 et 1). Cette apparente simplicité cache une sophistication remarquable : comment représenter du texte, des nombres, des images, des sons avec seulement deux symboles ?
#L'encodage des caractères
Un caractère, un nombre, une image… tout finit en suites de bits. Comprendre l'encodage, c'est éviter des bugs mystérieux : pourquoi "é" casse parfois ? Parce que UTF‑8 encode ce caractère sur plusieurs octets (C3 A9 en hexadécimal), et que découper une chaîne en plein milieu peut briser la séquence.
Exemple concret :
1'é' en UTF-8 : 11000011 10101001 (2 octets)2'a' en UTF-8 : 01100001 (1 octet)3'中' en UTF-8 : 11100100 10111000 10101101 (3 octets)Couper une chaîne UTF-8 sans respecter les frontières de caractères produit des données invalides – c'est une source fréquente de bugs dans le traitement de texte internationalisé.
#Les nombres entiers
De même, les entiers sont bornés : dépasser la capacité d'un type provoque des "retours à zéro" (overflow). Un compteur sur 8 bits non signé va de 0 à 255 ; ajouter 1 à 255 donne... 0 !
Ce phénomène a causé des bugs célèbres, comme le bug de l'an 2000 (Y2K) ou l'overflow du compteur de vues de "Gangnam Style" sur YouTube en 2014.
#Matériel et logiciel: qui fait quoi ?
#Architecture en couches
Le matériel exécute des instructions simples très vite ; le logiciel organise des séquences d'instructions en comportements utiles. Entre les deux : des couches d'abstraction.
1┌─────────────────────────────┐2│ Applications utilisateur │ (Navigateur, éditeur, jeux)3├─────────────────────────────┤4│ Système d'exploitation │ (Windows, Linux, macOS)5├─────────────────────────────┤6│ Pilotes & firmware │ (Communication avec le matériel)7├─────────────────────────────┤8│ Matériel (CPU, RAM, SSD) │ (Exécution des instructions)9└─────────────────────────────┘Un navigateur n'écrit pas sur le disque directement ; il demande au système d'exploitation qui, lui‑même, parle au contrôleur du disque. Ces interfaces standardisées permettent d'innover sans tout réécrire.
#Pourquoi cette séparation ?
- Sécurité : Le système d'exploitation contrôle l'accès aux ressources sensibles
- Portabilité : Le même logiciel fonctionne sur différents matériels
- Stabilité : Un bug dans une application ne plante pas tout le système
- Performance : Chaque couche peut optimiser son domaine
#Petit atelier
-
Encodage UTF-8 : Écrivez "é" en hexadécimal UTF‑8 (indice: C3 A9) et expliquez pourquoi un découpage après C3 produit un symbole invalide.
-
Débordement d'entiers : Imaginez un compteur 8 bits non signé : que se passe‑t‑il après 255 ? Reliez au concept de débordement. Pourquoi ce comportement peut-il être dangereux dans un logiciel critique ?
-
Abstraction matérielle : Listez trois avantages du fait qu'une application ne communique pas directement avec le disque dur, mais passe par le système d'exploitation.
En comprenant comment l'information est encodée et comment un programme est exécuté, vous saurez diagnostiquer des comportements surprenants (accents, dépassements, lenteurs) et faire des choix techniques éclairés.