| Les candidats doivent être capables de : | Notes et orientations |
|---|---|
| Expliquer pourquoi un système informatique nécessite un Système d'exploitation (OS) | |
| Expliquer les tâches clés de gestion assurées par le Système d'exploitation | Y compris la gestion de la mémoire, la gestion des fichiers, la gestion de la sécurité, la gestion du matériel (entrée/sortie/périphériques), la gestion des processus |
| Comprendre la nécessité des logiciels utilitaires typiques fournis avec un système d'exploitation | Y compris formateur de disque, antivirus, logiciel de défragmentation, analyse du contenu du disque / logiciel de réparation de disque, compression de fichiers, logiciel de sauvegarde |
| Comprendre les bibliothèques de programmes | Y compris : • les logiciels en cours de développement sont souvent construits à l'aide de code existant provenant de bibliothèques de programmes • les avantages pour le développeur d'un logiciel construit à l'aide de fichiers de bibliothèque, y compris les fichiers Dynamic Link Library (DLL) |
Logiciels système
Informatique A-Level · Sujet 5
20:46
Systèmes d'exploitation
Vous ne l'avez jamais vu, et vous ne le verrez jamais — pourtant il est toujours là. Derrière chaque application que vous ouvrez, chaque fichier que vous sauvegardez, chaque tapotement sur l'écran, un invisible…
Narration en anglais · sous-titres en anglais et en 中文 au choix
5.1
Systèmes d'exploitation
Programme
Source : Programme Cambridge International
Pourquoi un ordinateur a besoin d'un OS
Le matériel seul ne peut que récupérer et exécuter des instructions — il ignore tout sur les fichiers, les programmes, les réseaux ou les utilisateurs. Le système d'exploitation (OS) est la couche logicielle qui :
- gère le matériel (processeur, mémoire, E/S, stockage) pour les programmes en cours d'exécution.
- fournit des services (système de fichiers, réseau, comptes utilisateurs) via une interface claire, afin que les programmes n'aient pas à communiquer directement avec le matériel.
- fournit une interface utilisateur (ligne de commande, GUI, tactile).
- permet à plusieurs programmes de partager le matériel en toute sécurité — chacun obtient un temps CPU équitable et est maintenu hors de la mémoire des autres.
Sans OS, chaque programme aurait ses propres pilotes, et un seul programme pourrait s'exécuter en toute sécurité à la fois.
« Décrire la fonction d'un OS » — la liste de cinq points. Le SO (1) fournit une interface entre l'utilisateur et le matériel ; (2) masque la complexité du matériel à l'utilisateur et aux applications ; (3) gère les ressources matérielles — temps processeur, mémoire, stockage et périphériques d'entrée/sortie — et les partage entre les programmes ; (4) charge les logiciels applicatifs en mémoire et les exécute, offrant à chaque programme la même plateforme ; (5) permet l'exécution simultanée de plusieurs programmes (multitâche) tout en maintenant leur sécurité et celle des données des utilisateurs. Donnez cinq points différents ; « il fait tourner l'ordinateur » ou « il gère les ressources » seul ne rapporte aucun point.


Tâches de gestion clés
Le syllabus en nomme cinq. Chaque point ci-dessous est une chose que l'OS fait réellement, ce qu'une question "décrire" attend.
- gestion de la mémoire — alloue de la mémoire à chaque programme lors de son chargement, garde la mémoire de chaque programme séparée (protection mémoire) pour éviter qu'un ne recouvre l'autre, libère la mémoire à la fin d'un programme, et échange des pages entre la RAM et le stockage secondaire (disque) (mémoire virtuelle / paging) afin de pouvoir avoir plus de programmes ouverts que la mémoire physique ne le permet.
- gestion des processus — un programme en cours d'exécution est un processus. Le SO crée et termine des processus, décide quel processus obtient le CPU suivant (ordonnancement) et pendant combien de temps (une tranche de temps), effectue le changement entre eux, résout les conflits lorsque deux veulent la même ressource, et peut tuer celui qui ne répond plus.
- gestion du matériel (entrées/sorties et périphériques) — communique avec chaque appareil via son pilote de périphérique, met en file d'attente et met en tampon les données allant vers des dispositifs lents comme une imprimante, répond aux interruptions des appareils, et partage un appareil entre plusieurs programmes.
- gestion des fichiers — crée, nomme, copie, déplace et supprime des fichiers et dossiers, maintient la structure des répertoires et un registre de l'emplacement de chaque fichier sur le disque, alloue de l'espace disque aux fichiers, et applique les droits d'accès (lecture / écriture / exécution) pour chaque utilisateur.
- gestion de la sécurité — comptes utilisateurs et mots de passe (authentification), droits d'accès, chiffrement des données stockées, pare-feu, mises à jour de sécurité automatiques, et journalisation des activités.


Comment la gestion de la mémoire et des processus soutiennent le multitasking (un favori à quatre points). La gestion de la mémoire charge plusieurs programmes en mémoire en même temps, chacun dans sa propre zone protégée, et suit quelles adresses appartiennent à quels programmes ; la gestion des processus partage le processeur entre eux — chaque processus s'exécute pendant une tranche de temps, l'OS sauvegarde son état et bascule vers le suivant, et ce changement est si rapide que tous les programmes semblent s'exécuter ensemble. Les interruptions permettent à l'OS de reprendre le processeur à un processus dès qu'un périphérique nécessite une attention.
Interruptions. Une interruption matérielle provient d'un appareil : touche enfoncée, clic de souris, imprimante sans papier, transfert disque terminé, coupure de courant. Une interruption logicielle provient d'un programme : division par zéro, instruction invalide, tentative d'utilisation d'une mémoire non autorisée, ou demande de service OS. Le gestionnaire d'interruptions du SO sauvegarde l'état du processus en cours, traite l'interruption, puis restaure le processus (le sujet 4 couvre les détails de récupération-exécution).
Logiciels utilitaires
Les programmes utilitaires sont des logiciels système qui entretiennent, réparent ou optimisent l'ordinateur plutôt que d'accomplir une tâche utilisateur ; l'examinateur accepte « effectue une tâche de maintenance spécifique améliorant les performances ou la sécurité ». La plupart des OS les intègrent :

- formateur de disque — prépare un nouveau disque (ou efface un ancien) pour utilisation : configure son système de fichiers et ses partitions, supprimant toute donnée existante.
- scanneur de virus (antivirus) — scanne les fichiers et la mémoire, compare le code contre une base de données de signatures de virus connus et surveille les comportements suspicious, puis met en quarantaine ou supprime ce qu'il trouve ; s'exécute selon un calendrier et à chaque téléchargement, et doit être mis à jour avec l'apparition de nouveaux virus.
- logiciel de défragmentation (défragmenteur) — un disque dur stocke un fichier dans n'importe quels blocs libres qu'il trouve, donc après de nombreuses sauvegardes et suppressions, un fichier est dispersé (fragmenté) sur le plateau et la tête de lecture/écriture doit sauter entre les fragments. Le défragmenteur rassemble les fragments de chaque fichier les uns à côté des autres et regroupe l'espace libre en une seule zone, afin que les fichiers se chargent plus rapidement et que les nouveaux fichiers ne soient pas fragmentés. Inutile sur un SSD, qui n'a pas de tête mobile.
- analyse de contenu de disque / logiciel de réparation de disque — montre ce qui occupe l'espace disque (fichiers volumineux, dupliqués ou temporaires) pour pouvoir les supprimer ; trouve et répare les secteurs défectueux, clusters perdus et erreurs de système de fichiers.
- compression de fichiers (compression) — réduit la taille des fichiers pour qu'ils nécessitent moins d'espace de stockage et se transfèrent plus rapidement ; l'archivage regroupe de nombreux fichiers en un seul.
- logiciel de sauvegarde (backup) — copie des fichiers vers un autre support (disque externe, réseau, cloud) selon un planning, afin que les données puissent être restaurées après une perte, une corruption ou une attaque par rançongiciel ; une copie complète est suivie de sauvegardes incrémentielles ne concernant que ce qui a changé.
- un pare-feu (filtre le trafic réseau selon des règles) et des outils de chiffrement, pour la sécurité ; un moniteur système et des mises à jour automatiques.
Inclure ces outils avec l'OS économise à l'utilisateur l'installation de chacun séparément.
Quel utilitaire fait quoi. Performances : défragmentation (accès aux fichiers plus rapide), réparation de disque (un disque avec des erreurs est lent ou échoue), analyse de contenu de disque (libération d'espace en supprimant les ordures), compression (plus de place sur le disque). Sécurité : scanneur de virus, pare-feu, chiffrement et sauvegarde (la seule récupération possible face au ransomware). Une question "tirer une ligne" associe chaque utilitaire à exactement une finalité — apprenez les paires ci-dessus et utilisez les noms du syllabus.
Exemple résolu. Expliquez comment la défragmentation peut améliorer les performances d'un ordinateur (3 points).
Au fil du temps, un fichier est stocké dans des blocs dispersés sur le disque dur, donc sa lecture nécessite de nombreux mouvements de la tête de lecture/écriture. Le défragmentateur réorganise les blocs pour que chaque fichier soit stocké de manière contiguë et que l'espace libre soit groupé. Les fichiers sont ensuite lus avec moins de mouvements de tête, ils se chargent donc plus vite, et les nouveaux fichiers peuvent être écrits dans un espace continu.
Où se situe le système d'exploitation
Tapez chaque couche. Le SOS est la couche intermédiaire — il se situe entre vos applications et le matériel, partageant la machine en toute sécurité afin que les programmes ne touchent jamais directement le matériel.
| English | Français |
|---|---|
| multitasking/ˈmʌltitæskɪŋ/ | multitâche |
| memory management/ˈmeməri ˈmænɪdʒmənt/ | gestion de la mémoire |
| memory protection/ˈmeməri prəˈtekʃn/ | protection de la mémoire |
| RAM/ræm/ | RAM |
| secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ | stockage secondaire |
| virtual memory/ˈvɜːtʃuːəl ˈmeməri/ | mémoire virtuelle |
| paging/ˈpeɪdʒɪŋ/ | fragmentation en pages |
| process management/ˈprəʊses ˈmænɪdʒmənt/ | gestion des processus |
| process/ˈprəʊses/ | processus |
| scheduling/ˈʃedjuːlɪŋ/ | ordonnancement |
| time slice/taɪm slaɪs/ | quantum de temps |
| device driver/dɪˈvaɪs ˈdraɪvə/ | pilote de périphérique |
| interrupts/ˈɪntərʌpts/ | interruptions |
| directory/daɪˈrektəri/ | répertoire |
| access rights/ˈækses raɪts/ | droits d'accès |
| authentication/ɔːˌθentɪˈkeɪʃn/ | authentification |
| firewall/ˈfaɪəwɔːl/ | pare-feu |
| hardware interrupt/ˈhɑːdweə ˈɪntərʌpt/ | interruption matérielle |
| software interrupt/ˈsɒftweə ˈɪntərʌpt/ | interruption logicielle |
| interrupt handler/ˈɪntərʌpt ˈhændlə/ | gesteur d'interruptions |
| utility program/juːˈtɪlɪti ˈprəʊɡræm/ | programme utilitaire |
| antivirus/ˌæntɪˈvaɪrəs/ | antivirus |
| backup/ˈbækʌp/ | sauvegarde |
| compression/kəmˈpreʃn/ | compression |
| disk defragmenter/dɪsk ˌdiːˈfræɡmentə/ | défragmentation de disque |
| signatures/ˈsɪɡnɪtʃəz/ | signatures |
| fragmented/fræɡˈmentɪd/ | fragmenté |
| incremental backups/ˌɪŋkrɪˈmentl ˈbækʌps/ | sauvegardes incrémentales |
5.1
Bibliothèques de programmes
Une bibliothèque de programmes est du code pré-écrit (sous-routines, classes, modules) que les programmes réutilisent au lieu de l'écrire eux-mêmes — par exemple, une bibliothèque mathématique, une bibliothèque réseau, une bibliothèque graphique.

Avantages : gain de temps (code tout fait), fiabilité (bien testé, largement utilisé) et standardisation (comportement cohérent).
Liste des avantages pour l'examinateur, du point de vue du développeur. Les routines de bibliothèque sont déjà écrites et testées, donc le développement est plus rapide et moins coûteux ; elles sont fiables et, étant utilisées par de nombreux programmes, largement exemptes d'erreurs ; le développeur n'a pas besoin d'expertise dans ce domaine (graphisme, compression, chiffrement, recherche de chemin) ; le programme est plus facile à maintenir car le code commun vit à un seul endroit ; et toute une équipe peut utiliser les mêmes routines, assurant des résultats cohérents. Inconvénients : une routine peut ne pas faire exactement ce dont vous avez besoin et vous ne pouvez pas la modifier ; votre programme dépend de la disponibilité, de la correction et de la sécurité de la bibliothèque — un bug ou une faille de sécurité dans la bibliothèque constitue un bug dans votre programme ; et vous devez apprendre comment l'appeler.
- une bibliothèque statique est copiée dans l'exécutable au moment de la compilation (elle fonctionne seule, mais est plus volumineuse et nécessite une re-compilation pour être mise à jour).
- une bibliothèque dynamique (DLL, Dynamic Link Library ;
.so) est chargée à l'exécution (exécutables plus petits, partagés par de nombreux programmes, mis à jour une fois pour tous).

Fichiers Dynamic Link Library (DLL). Une DLL est une bibliothèque chargée en mémoire uniquement lorsqu'un programme l'appelle, en temps d'exécution, et reste sous forme de fichier séparé plutôt que d'être copiée dans l'exécutable. Avantages : l'exécutable est plus petit ; plusieurs programmes en cours d'exécution partagent une seule copie de la DLL en mémoire ; une DLL peut être mise à jour (correction de bogue, nouvel appareil) sans recompiler les programmes qui l'utilisent ; et la mémoire n'est utilisée que tant que la routine est nécessaire. Inconvénients : le programme ne s'exécutera pas si la DLL est absente, déplacée ou si sa version est incorrecte ; une DLL mise à jour peut casser un programme qui comptait sur l'ancien comportement ; et une fausse DLL placée à sa place s'exécute avec les droits du programme.
Exemple résolu. Une équipe écrivant un logiciel pour un robot restaurant utilise une bibliothèque de programmes incluant une routine pour trouver le chemin le plus court entre les tables. Expliquez deux avantages et un inconvénient pour l'équipe.
Avantages : la routine est déjà écrite et testée, donc l'équipe gagne du temps et peut se fier au résultat ; l'équipe n'a pas besoin de comprendre elle-même les algorithmes de recherche de chemin et peut consacrer ce temps aux fonctionnalités propres du robot. Inconvénient : la routine peut ne pas gérer les besoins exacts du restaurant (chaises mobiles, couloirs sens unique) et l'équipe ne peut pas la modifier, ils doivent donc contourner ses limites.
Laboratoire de concepts informatiques
Classez les exemples concrets selon le concept informatique qu'ils illustrent.
| English | Français |
|---|---|
| compiler/kəmˈpaɪlə/ | compilateur |
| object code/ˈɒbdʒekt kəʊd/ | code objet |
5.2
Traducteurs de langages
Programme
| Les candidats doivent être capables de : | Notes et orientations |
|---|---|
| Comprendre la nécessité de : • un assembleur pour la traduction d'un programme en langage assembleur • un compilateur pour la traduction d'un programme en langage de haut niveau • un interpréteur pour la traduction et l'exécution d'un programme en langage de haut niveau | |
| Expliquer les avantages et inconvénients de l'utilisation d'un compilateur ou d'un interpréteur et justifier l'utilisation de chacun | |
| Savoir que les programmes en langage de haut niveau peuvent être partiellement compilés et partiellement interprétés, comme Java (mode console) | |
| Décrire les fonctionnalités d'un Environnement de Développement Intégré (IDE) typique | Y compris : • pour la programmation, incluant des invitations contextuelles • pour la détection initiale d'erreurs, incluant des vérifications syntaxiques dynamiques • pour la présentation, incluant le formatage automatique, l'expansion et le repliement des blocs de code • pour le débogage, incluant l'exécution pas à pas, les points d'arrêt, c'est-à-dire les variables, expressions, fenêtre de rapport |
Source : Programme Cambridge International
Vous écrivez du code source ; l'ordinateur exécute du code machine. Un traducteur convertit entre les deux.
Assembleur
Un assembleur traduit le langage assembleur en code machine : chaque instruction mnémotechnique (LDD, ADD, JMP) devient exactement une instruction de code machine, et les adresses symboliques et les étiquettes sont remplacées par des adresses réelles. Il est nécessaire car le processeur n'exécute que du code machine, et le langage assembleur est utilisé lorsque le programmeur a besoin d'un contrôle direct du matériel (systèmes embarqués, pilotes de périphériques).
Compilateur
Un compilateur traduit un programme de haut niveau en code machine une seule fois, avant son exécution.
- il signale tous les erreurs au moment de la compilation ; une fois propre, il produit un exécutable autonome qui s'exécute sans que le compilateur soit installé et peut être exécuté de multiples fois.
- généralement plus rapide à l'exécution (pas de traduction pendant l'exécution), mais lié à un seul CPU/OS — recompiler pour chaque plateforme.
La description de deux points : un compilateur traduit le programme entier de haut niveau en code machine (code objet) avant son exécution, produit un fichier exécutable, et signale toutes les erreurs de syntaxe ensemble sous forme de liste à la fin de la traduction. Il n'exécute pas le programme.
Interprète
Un interpréteur traduit et exécute un programme de haut niveau ligne par ligne, sans produire d'exécutable.
- il signale une erreur lorsqu'il atteint cette ligne, puis s'arrête ; vous pouvez la corriger et continuer — bon pour le développement.
- l'interpréteur doit être installé pour exécuter le programme ; généralement plus lent (chaque exécution re-traduit), mais facile à porter sur différentes plateformes.
La description en deux points : un interpréteur traduit une instruction du programme de haut niveau à la fois et l'exécute immédiatement avant de passer à la suivante ; aucun fichier exécutable n'est produit ; il s'arrête à la première erreur rencontrée et la signale. Le code source et l'interpréteur doivent être présents à chaque exécution du programme.

Choisir entre eux
| la vitesse d'exécution est importante | vous voulez des cycles édit-exécution rapides |
|---|---|
| distribuer à des utilisateurs sans outils de dev | écrire des scripts multiplateformes |
| le programme s'exécute de nombreuses fois | le programme est petit ou s'exécute une seule fois |
| enseigner aux débutants | |
| enseigner les débutants |
Avantages et inconvénients, tels que listés par le barème.
| compilateur | interpréteur | |
|---|---|---|
| ce dont l'utilisateur a besoin | seulement l'exécutable ; pas de traducteur, et le code source reste privé | le code source et l'interprète |
| détection des erreurs | toutes les erreurs listées d'un coup, après la traduction du programme entier | chaque erreur signalée à la ligne où elle se produit, au fur et à mesure du développement |
| modification du code | recompiler le programme entier après chaque changement | éditer et relancer immédiatement |
| portabilité | le code machine ne s'exécute que sur une plateforme ; recompiler pour chacune | la même source s'exécute partout où un interprète existe |
| portabilité | le code machine s'exécute sur une seule plateforme ; recompiler pour chacune | la même source s'exécute partout où un interpréteur existe |
Exemple corrigé. Un développeur utilise un interpréteur pendant l'écriture d'un programme et un compilateur lorsqu'il est terminé. Expliquez comment chacun est utilisé (4 points).
Pendant le développement, l'interpréteur exécute le programme partiellement écrit immédiatement, sans attendre une traduction complète ; lorsqu'il rencontre une erreur, il signale la ligne, afin que le développeur la corrige et relance immédiatement — un cycle éditer-exécuter rapide plus facile pour le débogage. Lorsque le programme est terminé, le compilateur traduit l'ensemble du programme en un exécutable qui s'exécute plus rapidement, ne nécessite pas de traducteur sur l'ordinateur de l'utilisateur et ne révèle pas le code source, il peut donc être vendu au public.
Hybride : Java
Java est compilé en bytecode (une forme intermédiaire indépendante de la plateforme), qu'une machine virtuelle (la JVM) interprète ensuite — ou utilise la compilation just-in-time pour transformer les parties chaudes en code natif. Ainsi, les erreurs sont détectées tôt, le bytecode s'exécute partout avec une JVM (« écrire une fois, exécuter partout »), et les programmes à longue durée atteignent une vitesse proche du natif. C# et Python utilisent des conceptions similaires.
L'expression du programme est « partiellement compilé et partiellement interprété » : l'étape de compilation détecte les erreurs de syntaxe et produit un bytecode compact et portable ; l'étape d'interprétation permet à ce seul fichier bytecode de s'exécuter sur n'importe quelle machine disposant d'une machine virtuelle, au prix de quelques performances. Java en mode console (un programme texte exécuté depuis la ligne de commande) est l'exemple du programme.
Exemple résolu. Le code source Java est compilé en bytecode, qu'une JVM interprète ensuite. Pourquoi utiliser les deux au lieu de compiler directement vers du code machine ? Un compilateur produit du code machine pour un processeur et système d'exploitation spécifiques, donc un programme compilé sur une machine ne s'exécutera pas sur une autre. Le compilateur Java cible au contraire une machine virtuelle, de sorte que le bytecode produit est identique partout ; chaque plateforme fournit alors sa propre JVM pour interpréter ce bytecode en ses propres instructions natives. Un seul fichier compilé s'exécute donc partout où une JVM existe — « écrire une fois, exécuter partout ». Le prix est la vitesse : interpréter du bytecode est plus lent que d'exécuter du code natif, c'est pourquoi une vraie JVM utilise également la compilation JIT pour convertir le bytecode fréquemment exécuté en code natif pendant l'exécution du programme. Nommez les deux aspects — les marks sont attribués à la portabilité achetée au prix de la vitesse.
Exemple corrigé. Le code source Java est compilé en bytecode, qu'une JVM interprète ensuite. Pourquoi utiliser les deux, plutôt que de compiler directement en code machine ? Un compilateur produit du code machine pour un processeur et système d'exploitation donnés, donc un programme compilé sur une machine ne fonctionnera pas sur une autre. Le compilateur Java cible à la place une machine virtuelle, donc le bytecode qu'il produit est identique partout ; chaque plateforme fournit ensuite sa propre JVM pour interpréter ce bytecode en ses propres instructions natives. Un fichier compilé unique fonctionne donc partout où une JVM existe - « écrire une fois, exécuter partout ». Le prix est la vitesse : l'interprétation du bytecode est plus lente que l'exécution de code natif, c'est pourquoi une vraie JVM utilise également la compilation JIT pour transformer le bytecode fréquemment exécuté en code natif pendant l'exécution du programme. Nommez les deux côtés - les points sont accordés pour la portabilité achetée au prix de la vitesse.
Le routeur du compilateur : source vers programme exécuté
Étape par étape du fonctionnement d'un compilateur — traduire le programme entier une fois, avant son exécution. Contrastez-le avec un interpréteur, qui traduit et exécute ligne par ligne.
| English | Français |
|---|---|
| interpreter/ɪnˈtɜːprɪtə/ | interpréteur |
| bytecode/ˈbaɪtkəʊd/ | code byte |
| virtual machine/ˈvɜːtʃuːəl məˈʃiːn/ | machine virtuelle |
| just-in-time compilation/dʒʌst ɪn taɪm ˌkɒmpɪˈleɪʃn/ | compilation just-in-time |
| portable/ˈpɔːtəbl/ | portable |
5.2
Environnement de Développement Intégré (IDE)
Un environnement de développement intégré (IDE) regroupe les outils pour écrire, tester et déboguer du code dans une seule application :
Le syllabus classe les fonctionnalités en quatre catégories. Apprenez quelle fonctionnalité appartient à quel groupe, car les questions vous demanderont de les classer et de décrire une fonctionnalité de chaque groupe.
Le syllabus regroupe les fonctionnalités en quatre catégories. Apprenez quelle fonctionnalité appartient à quel groupe, car les questions vous demandent de les trier et d'en décrire une de chaque groupe.
- Pour la programmation : invocations contextuelles — alors que vous tapez, l'IDE propose les identifiants, mots-clés ou paramètres appropriés à cet endroit du code ; complétion automatique termine le nom pour vous ; l'indentation automatique et la correspondance des accolades maintiennent la mise en page correcte pendant la frappe.
- Pour la détection initiale d'erreurs : vérifications dynamiques de syntaxe — l'éditeur vérifie la syntaxe alors que vous tapez et souligne ou met en évidence immédiatement une erreur, avant que le programme ne soit traduit ; après la traduction, messages d'erreur avec numéros de ligne.
- Pour la présentation : joli affichage — les mots-clés, identifiants, chaînes de caractères et commentaires sont affichés dans des couleurs ou polices différentes (surlignage syntaxique) avec une indentation cohérente, afin que la structure soit visible d'un coup d'œil ; développement et repliement des blocs de code — masquer le corps d'une boucle, d'un IF ou d'une sous-routine pour voir le plan.
- Pour le débogage : les points d'arrêt — le programme s'arrête lorsqu'il atteint une ligne marquée ; le pas à pas — depuis la pause, exécuter une ligne à la fois ; une fenêtre affichant les valeurs actuelles des variables et expressions au fur et à mesure qu'elles changent ; et une fenêtre de rapport listant les erreurs, avertissements et sorties.
Autres fonctionnalités : intégration du traducteur (compiler ou exécuter avec une touche unique, erreurs affichées en ligne), un débogueur qui pilote les fonctionnalités de débogage ci-dessus, intégration de la gestion de version (git), gestion de projet, système d'aide, outils de refactoring (renommage sécurisé) et intégration aux tests unitaires.

Un IDE accélère le développement en regroupant écrire → exécuter → déboguer → corriger derrière une seule interface. IDEs courantes : Visual Studio, PyCharm, Eclipse, VS Code.

Exemple résolu. Une fonction Calculate() retourne une valeur inattendue lorsque le programme s'exécute. Décrivez comment les fonctionnalités de débogage d'une IDE typique aident à trouver la cause (4 points).
Définissez un breakpoint sur la première ligne de Calculate(), afin que le programme s'y arrête plutôt que de passer tout simplement. Ensuite, effectuez un single-step à travers la fonction, une ligne à la fois. Après chaque étape, lisez les valeurs des variables et de toute expression que vous avez demandé à l'IDE de watch (surveiller), et comparez-les avec les valeurs attendues ; la première ligne après laquelle une valeur est incorrecte est là où se trouve l'erreur logique. La report window affiche tout message d'erreur d'exécution et la sortie produite jusqu'alors.
Exemple résolu. Placez chaque fonctionnalité dans son groupe de syllabus : prettyprint, invitation contextuelle, vérification syntaxique dynamique, breakpoint, réduire/étendre les blocs de code, fenêtre de rapport.
Codage : invitation contextuelle. Détection initiale d'erreurs : vérification syntaxique dynamique. Présentation : prettyprint, réduction/étirement des blocs de code. Débogage : breakpoint, fenêtre de rapport.
Licences logicielles utilisées lors de la traduction ou de la distribution du code
Une licence logicielle spécifie l'utilisation autorisée, la copie, la modification et la redistribution d'une œuvre protégée par le droit d'auteur. Le Logiciel Libre concerne les libertés d'exécuter, étudier, modifier et partager le logiciel ; il peut être vendu. Les licences code source ouvert permettent l'accès au code source et la modification/redistribution sous licence. Le logiciel gratuit peut être offert sans toutefois réserver les droits sur le code source et les modifications. Pour une question de redistribution, identifier les conditions réelles de la licence ; voir le sujet 7 pour des comparaisons et des choix justifiés.
| English | Français |
|---|---|
| debugger/ˈdiːbʌɡə/ | débogueur |
| context-sensitive prompts/ˈkɒntekst ˈsensɪtɪv prɒmpts/ | invitations contextuelles |
| auto-complete/ˈɔːtəʊ kəmˈpliːt/ | complétion automatique |
| dynamic syntax checks/daɪˈnæmɪk ˈsɪntæks tʃeks/ | vérifications syntaxiques dynamiques |
| prettyprint/ˈpretɪprɪnt/ | formatage du code |
| syntax highlighting/ˈsɪntæks ˈhaɪlaɪtɪŋ/ | surlignage syntaxique |
| single stepping/ˈsɪŋɡl ˈstepɪŋ/ | exécution pas à pas |
| report window/rɪˈpɔːt ˈwɪndəʊ/ | fenêtre de rapport |
| version control/ˈvɜːʃn kənˈtrəʊl/ | contrôle de version |
| refactoring/rɪˈfæktərɪŋ/ | refactoring |
| unit test/ˈjuːnɪt test/ | test unitaire |
5.2
Définitions acceptées par l'examinateur
Une question de définition est notée selon un libellé fixe. Apprenez-les exactement et ne donnez qu'une seule réponse.
| Terme | Définition |
|---|---|
| operating system | logiciel qui gère le matériel et les ressources de l'ordinateur et fournit une interface entre l'utilisateur, les programmes applicatifs et le matériel |
| utility software | logiciel système qui effectue une tâche spécifique pour maintenir, optimiser ou protéger l'ordinateur, tel qu'un antivirus ou un défragmentateur |
| program library | un ensemble de routines pré-écrites et testées (sous-routines, classes, modules) qu'un programme peut utiliser au lieu d'en écrire ses propres |
| Dynamic Link Library (DLL) | une bibliothèque de programmes dont les routines sont chargées en mémoire uniquement lorsque le programme les appelle, en temps d'exécution, et qui sont partagées entre les programmes |
| assembler | un traducteur qui convertit un programme en langage assembleur en code machine, une instruction par instruction |
| compiler | un traducteur qui convertit l'intégralité d'un programme en langage de haut niveau en code machine avant son exécution, produisant un fichier exécutable |
| interpreter | un traducteur qui traduit et exécute un programme en langage de haut niveau une instruction à la fois |
| integrated development environment | une application unique qui fournit les outils pour écrire, traduire, exécuter et déboguer un programme |
| context-sensitive prompt | une invitation contextuelle qui suggère des identifiants, des mots-clés ou des paramètres qui conviennent au point actuel du code |
| dynamic syntax check | la vérification de la syntaxe du code alors qu'il est tapé et signalant une erreur avant que le programme ne soit traduit |
| prettyprint | l'affichage du code avec des mots-clés, des identifiants et des commentaires dans différentes couleurs ou polices et avec une indentation cohérente |
| breakpoint | une ligne marquée à laquelle le programme en cours d'exécution s'arrête afin que les variables puissent être inspectées |
| single stepping | l'exécution d'un programme suspendu une instruction à la fois sous le contrôle du programmeur |
| English | Français |
|---|---|
| operating system/ˈɒpəreɪtɪŋ ˈsɪstəm/ | système d'exploitation |
| processor/ˈprəʊsesə/ | processeur |
| program library/ˈprəʊɡræm ˈlaɪbrəri/ | bibliothèque de programmes |
| subroutines/ˈsʌbruːtiːnz/ | sous-programmes |
| library routines/ˈlaɪbrəri ruːˈtiːnz/ | routines de bibliothèque |
| static library/ˈstætɪk ˈlaɪbrəri/ | bibliothèque statique |
| executable/ɪɡˈzekjʊtəbl/ | fichier exécutable |
| dynamic library/daɪˈnæmɪk ˈlaɪbrəri/ | bibliothèque dynamique |
| translator/trænˈsleɪtə/ | traducteur |
| machine code/məˈʃiːn kəʊd/ | code machine |
| assembler/əˈsemblə/ | assembleur |
| assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ | langage assembleur |
| integrated development environment/ˈɪntɪɡreɪtɪd dɪˈveləpmənt enˈvaɪrənmənt/ | environnement de développement intégré |
5.2
Conseils d'examen
- Énumérez les tâches du OS par leurs noms de syllabus (gestion de la mémoire, des processus, du matériel, des fichiers et de la sécurité) et dites ce que chacune fait — "gérer les ressources" seul est trop vague.
- Comparez compiler vs interpreter vs assembler : ce que chacun traduit, quand il le traduit, et comment les erreurs sont signalées.
- Expliquez ce qu'une IDE fournit en utilisant les groupes de syllabus : codage, détection initiale d'erreurs, présentation, débogage.
- Une réponse "avantage pour le développeur" nomme l'économie du développeur : temps, coût, expertise, fiabilité ou maintenance. Un "inconvénient" nomme une dépendance : disponibilité, version, adaptation, sécurité.
- Pour "décrire le fonctionnement" d'un traducteur, donnez trois choses : ce qui est traduit (programme entier ou une instruction), quand (avant l'exécution ou pendant l'exécution), et comment les erreurs sont signalées (toutes en même temps ou à la première erreur).
Erreurs courantes
- Écrire "le OS contrôle l'ordinateur" ou "gère les ressources" sans exemple de tâche. Chaque marque correspond à une tâche nommée avec ce qu'elle fait.
- Dire qu'un interpreter "compile ligne par ligne". Un interpreter traduit et exécute chaque instruction ; il ne produit jamais un exécutable.
- Dire qu'un compilateur exécute le programme. Il traduit seulement ; l'exécutable s'exécute plus tard, sans le compilateur.
- Placer une DLL "à l'intérieur" de l'exécutable. C'est une bibliothèque statique ; une DLL reste un fichier séparé chargé en temps d'exécution.
- Dire que la défragmentation "supprime" ou "compresse" les fichiers, ou qu'elle est nécessaire sur un SSD. Elle ne déplace que les blocs pour que chaque fichier soit stocké de manière contiguë.
- Classer le prettyprint ou la réduction des blocs sous "débogage". Ce sont des fonctionnalités de présentation ; le débogage concerne les breakpoints, le single stepping, la surveillance des variables et la fenêtre de rapport.
| English | Français |
|---|---|
| breakpoints/ˈbreɪkpɔɪnts/ | points d'arrêt |
Leçons interactives sur ce sujet
Traversez-le étape par étape, avec des exercices à vérification instantanée.