Question 1Quand tu as seulement enregistré le code source, dans quel composant ce fichier est-il conservé ?
Qu'est-ce qu'un programme — ses liens avec le CPU, la mémoire et le stockage
Cet article fait partie du cours Les bases de l'informatique, qui construit depuis zéro les connaissances informatiques pratiques indispensables pour programmer et faire du vibe coding.
Un programme est une suite d'instructions : quand tu l'exécutes, il est chargé en mémoire et le CPU les effectue une à une. Des schémas montrent pourquoi l'enregistrement seul ne l'exécute pas, à partir du partage des rôles entre les trois composants.
Cet article porte sur ce qui se passe dans l'ordinateur quand un programme s'exécute.
Enregistrer un fichier et l'exécuter sont deux événements distincts dans l'ordinateur.
Cette différence s'explique par ce dont chacun des trois composants — CPU, mémoire et stockage — a la charge.
- Un programme est une suite d'instructions : l'exécuter avance ligne par ligne depuis le haut
- Le partage des rôles entre CPU, mémoire et stockage, et ce qui disparaît quand tu coupes l'alimentation
- Pourquoi l'enregistrement seul ne l'exécute pas — l'écriture ne va pas plus loin que le stockage
- Ce que le « exécute ce fichier » d'une procédure transmet à l'environnement d'exécution
Un programme est une série d'instructions, et l'exécuter avance depuis le haut
Un programme (program) rassemble les instructions que tu veux faire effectuer à l'ordinateur, rangées dans l'ordre où elles sont effectuées.
Le texte lisible par un humain est le code source (source code), et les effectuer une à une depuis le haut, c'est l'exécution (run / execute).
Les trois lignes alignées à gauche du schéma sont le contenu de app.js, et le CPU n'en reçoit jamais qu'une à la fois.
Une ligne qui ne fait que mémoriser une valeur n'affiche rien.
Quand la troisième ligne se termine, l'exécution elle-même se termine, et les valeurs mémorisées en chemin ne subsistent pas.
Si une instruction en cours de route ne peut pas être effectuée, l'exécution se termine là.
Dans les trois lignes suivantes, le nom gokei du milieu n'est écrit nulle part.
console.log("Affichage du total");
gokei();
console.log("Terminé");
« Ça s'est arrêté sur une erreur » signifie que l'exécution s'est terminée avant d'atteindre la dernière ligne.
La première ligne s'affiche bien, la ligne du milieu produit le texte de l'erreur, et la dernière n'est jamais lue.
Un programme est une suite d'instructions effectuées depuis le haut
Un programme, c'est ce que tu veux faire faire, écrit dans l'ordre.
L'exécuter, c'est effectuer cette suite une à une depuis le haut, et si une ligne en cours de route ne peut pas être effectuée, l'exécution se termine sans que les lignes suivantes soient lues.
De quoi le CPU, la mémoire et le stockage ont-ils chacun la charge
L'« ordinateur » du schéma précédent est fait de trois composants aux rôles différents.
Le CPU (Central Processing Unit) effectue les instructions une à une, la mémoire (memory) ne contient les éléments que pendant l'exécution, et le stockage (storage) conserve ce qui s'y trouve même quand l'alimentation est coupée.
Un fichier unique du stockage devient une suite d'instructions dans la mémoire, et le CPU n'en reçoit qu'une seule à la fois.
Les valeurs intermédiaires d'un calcul sont elles aussi placées en mémoire, et le fichier du stockage n'est pas réécrit pendant l'exécution.
Dans un seul ordinateur, les trois composants se répartissent ainsi.
- Le fichier app.js que tu as enregistré
- Subsiste tel quel même quand l'alimentation est coupée
- Le contenu de app.js une fois chargé
- Les valeurs mémorisées en chemin, comme 150 et 200
- Tout disparaît quand l'alimentation est coupée
- Ne reçoit que l'instruction qu'il effectue en ce moment
- Il ne détient plus les instructions terminées
Seul le contenu se déplace ; le fichier app.js du stockage, lui, reste où il est.
Ce qui entre en mémoire, c'est uniquement ce qui s'exécute en ce moment et ses valeurs intermédiaires.
Cette distinction apparaît aussi dans la façon de lire les avertissements de l'ordinateur.
« Mémoire insuffisante » concerne la mémoire : supprimer des fichiers ne l'augmente donc pas, en général.
« Espace disque insuffisant » concerne le stockage, et là, supprimer des fichiers en libère.
Conserver et exécuter se font à deux endroits différents
Le stockage est l'endroit où les fichiers sont conservés, la mémoire celui où se trouve ce qui s'exécute en ce moment, et le CPU est ce qui effectue ces instructions une à une.
Ce que tu as écrit dans le stockage subsiste quand l'alimentation est coupée, et ce qui était en mémoire disparaît.
Pourquoi enregistrer un fichier ne suffit pas à l'exécuter
Enregistrer, c'est écrire les caractères du code source dans le stockage.
Ils sont écrits dans le dossier de my-app, l'application de réservation que tu construis.
- app.js — le code source que tu as enregistré
- Réenregistrer change le contenu de ce fichier
- Fichiers photo et documents
- Les fichiers qui ne s'exécutent pas restent là eux aussi
Le CPU ne va jamais lire de lui-même un fichier placé là.
Quand tu as seulement enregistré, aucune instruction n'a encore été effectuée.
| Étape | Stockage | Mémoire | Écran |
|---|---|---|---|
| Enregistrer seulement | app.js est écrit | Rien n'y entre | Rien ne s'affiche |
| Enregistrer et exécuter | app.js est inchangé | Chargé et démarre | 350 s'affiche |
La ligne « enregistrer seulement » s'arrête au stockage : comme rien n'entre en mémoire, le CPU ne reçoit aucune instruction.
Rien ne se passe à l'écran parce que tu n'as pas demandé l'exécution.
Quand tu relances l'exécution, l'ancien contenu de la mémoire est jeté et le nouveau fichier est chargé.
Ce que tu as corrigé s'exécute au moment de ce rechargement.
C'est pour cette raison qu'une procédure te dit de relancer l'exécution.
Enregistrer n'est pas appliquer
Enregistrer ne va pas plus loin que l'écriture des caractères dans le stockage.
Un programme en cours d'exécution continue avec le contenu tel qu'il était au chargement : même si tu corriges le fichier, le résultat à l'écran ne change pas tant que tu n'as pas relancé l'exécution.
« Exécute ce fichier » veut dire le remettre à l'environnement d'exécution
L'environnement d'exécution (runtime ; logiciel qui lit le code source et fait effectuer les instructions par le CPU) est ce qui charge le fichier en mémoire et délivre les instructions au CPU.
Le « exécute ce fichier » d'une procédure, c'est remettre le fichier à cet environnement d'exécution.
La seule chose que tu tapes toi-même est la ligne tout à gauche.
Cette ligne apparaît dans les procédures sous cette forme.
# Exécuter du code source JavaScript (Node.js)
node app.js
# Exécuter du code source Python
python app.py
Cette ligne est une commande (command ; instruction en texte qui indique à un logiciel ce qu'il doit faire).
Le début est le nom de l'environnement d'exécution, la suite le nom du fichier de code source, séparés par un espace.
- node — lit le code source JavaScript
- python — lit le code source Python
- app.js — le nom du fichier de code source enregistré
- L'environnement d'exécution le charge depuis le stockage
- Un nom court défini à l'avance remplace parfois le nom du fichier
Le début te dit quel environnement d'exécution est nécessaire, la suite quel fichier sera chargé.
L'écran où tu tapes cette ligne est traité dans l'article « Qu'est-ce qu'un environnement de développement » de ce cours.
Même quand le langage change, la lecture reste la même : le début est le logiciel qui reçoit, la suite est ce que tu lui remets.
Il y a un autre point où le libellé des procédures diffère.
La façon dont les choses se terminent après la demande d'exécution se divise en deux.
La branche du bas est le type de programme qu'une procédure te dit de laisser démarré.
Certains environnements d'exécution rechargent le fichier automatiquement à chaque enregistrement.
Même dans ce cas, l'écran ne change qu'une fois le nouveau fichier chargé.
Demander l'exécution, c'est remettre un fichier
« Exécute ce fichier » signifie : remets le fichier au logiciel appelé environnement d'exécution.
Tu le remets avec une ligne comme node app.js, et certains programmes vont jusqu'à la dernière ligne puis se terminent, tandis que d'autres ne se terminent pas tant que tu ne les arrêtes pas.
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Que fait un ordinateur quand il « exécute un programme » ?
Question 3Dans la commande node app.js, à quoi renvoie le node du début ?