Qu’est-ce que de l’informatique bas niveau ?
Un ordinateur, c’est avant tout un ensemble de composants électroniques. Du matériel. Il y a certains composants dits « intelligents », comme le processeur, qui sont capables d‘effectuer des opérations simples (calculs, attente, émission de signal, recopie), et il y a des composants plutôt passifs qui représentent la mémoire de la machine. Chacun de ses composants mémoires possède une adresse physique qui va permettre de le retrouver en mémoire et de l’associer de manière ordonnée à ses voisins. Les états de ces composants électroniques qui composent la mémoire vont pouvoir être interprétés en 0 et en 1. 0 le composant est éteint, 1, il est allumé. On obtient ainsi une suite ordonnée de 0 de 1 que l’on appelle une suite de bits. Ces bits vont ensuite pouvoir être interprétés en de l’information. Une partie de cette information est interne à l’ordinateur. Ce sont des données autodescriptives qui vont permettre à un composant intelligent de reconnaître une suite de 0 et de 1 comme lui étant destinée, et de savoir ce qu’il va devoir en faire. Et une autre partie de cette information est le résultat final qui est destiné à l’utilisateur, ou qui vient de l’utilisateur. En informatique on dit qu’il y a une architecture par couches. Le plus bas niveau, c’est le matériel, le hardware, on y trouve des données à l’état brut, des états, en gros, des bits, c'est à dire, des 0 et des 1. Le plus haut niveau, c’est l’utilisateur, on y trouve de l’information qui a un sens : des mots, des images de la musique. Chaque « couche » est un niveau d’abstraction qui va opérer une petite transformation sur les données pour passer de l’un à l’autre. Par exemple, en simplifiant énormément, imaginons un programme. Un fichier exécutable appelé lireUneImage.exe. Lorsque l'on double clique sur l'exécutable, une fenêtre apparaît où l'on peut écrire. Un utilisateur tape des mots sur un clavier. Les mots sont du haut niveau. Pour chaque touche appuyée, un composant va recevoir des suites de 0 et de 1 qui correspondent aux différentes touches, on est passé directement au plus bas niveau. Ces 0 et ces 1 seront recopiées dans une zone mémoire ou le processeur ira les lire. Le processeur va les lire parce qu'il suit une suite d’instructions prédéfinies. Cette suite d’instructions prédéfinies c’est le programme. Le programme est écrit dans un langage de programmation, par exemple le C++, qui est un langage relativement haut niveau. Il décrit par exemple qu'au lancement du programme, on attend l'arrivée d'un signal machine correspondant à la touche entrée du clavier, le processeur doit aller, quand il reçoit ce signal, lire dans la mémoire les valeurs correspondant aux touches entrées par l'utilisateur. Ces valeurs correspondront à un nom de fichier qu'il faudra ouvrir et lire. Le programme est ensuite compilé en un langage bas niveau. Ce langage bas niveau est en fait une suite de codes binaires. Chaque code correspondant à une action simple du processeur (par exemple, attendre un signal, lire une adresse, copier une adresse, ajouter, multiplier, soustraire, décaler les valeurs présentent à une adresse, envoyer un signal…). On obtient donc la traduction du langage haut niveau en une suite d'instruction simple que le processeur va exécuter lorsque l'on lancera le programme. L'exécution se produit en double cliquant sur l'exécutable, le fichier .exe qui est généré par la compilation justement. Par exemple ici, la suite d'instructions simple sera: attendre l'événement entré du clavier, aller lire dans la zone mémoire les touches tapées par l'utilisateur, aller chercher sur le disque dur le fichier correspondant à cette adresse, en recopier le contenue dans la zone mémoire de la carte vidéo et envoyer à la carte vidéo un signal pour lui dire qu'elle a du boulot. La carte vidéo peut posséder aussi une certaine intelligence, ou juste être pilotée par le processeur à l’aide d’un programme qui tourne en permanence et qu’on appelle driver vidéo. Le driver vidéo entre donc ensuite en action, il va lire en mémoire ce qu'on lui a recopié, reconnaître les quatre premiers bits comme étant le code pour une image en couleur, les huit suivant lui donneront la taille de l'image, il n'aura plus qu'a la recopier dans une zone ou chaque groupe de 8 bits va correspondre à l'intensité d'une couleur primaire (rouge vert ou bleu) d'un pixel (voir la question « C’est quoi RGB ? » pour plus de précisions), et à la fin, l'utilisateur verra apparaître une image à l'écran. Je ne sais pas si vous m'avez tout bien suivi, mais ce qu'il faut retenir, c'est que dans un ordinateur, on passe sans arrêt d'un niveau haut (information sous forme d'images, de mots, de musiques) à un niveau bas (composants électroniques allumés ou éteints) et que pour passer de l'un à l'autre, on peut passer par des niveaux d'abstractions intermédiaire (différents types de codes, sous différentes formes.) En fonction du contexte, un informaticien peut avoir à travailler à différents niveaux d'abstraction. L'informatique bas niveau, c'est lorsque l'on est au plus près du matériel, de la réalité électronique. (Je sais, ça pique un peu les yeux, mais je t'ai épargné un tout un tas de subtilités, comme les couches de communication, le séquencement des programmes par le processeur à l’aide de son horloge et leurs différents niveaux de priorités, tout ça.)
Parfois quand quelqu’un me pose une question, après, quand il a eu sa réponse, j’ai un peu l’impression qu’il regrette de me l’avoir posée sa question.
Toi aussi raconte les aventures de Monsieur Arobase...
Monsieur Arobase est mis à disposition sous un contrat Creative Commons. (clique sur la p'tite image ci-dessus pour plus d'infos)