Passer au contenu

Logiciels système

Informatique A-Level · Sujet 5

Leçon vidéo pour ce sujet Ouvrir la page vidéo
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
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)

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.

Un système d'exploitation de bureau à l'écran
Un système d'exploitation de bureau gère l'écran, les fichiers et les programmes pour l'utilisateur
Un smartphone tenu dans une main, affichant l'écran d'accueil Android avec ses icônes d'applications
Un téléphone en a tout autant besoin : c'est un système d'exploitation mobile, Android

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.
Diagramme de hub avec le système d'exploitation au centre, relié par des rayons à la gestion de la mémoire, des processus, des fichiers, des périphériques et de la sécurité, ainsi qu'à l'interface utilisateur
Les tâches principales gérées par le système d'exploitation
Une carte mémoire avec le système d'exploitation et trois applications chacune dans son propre bloc, séparées par des adresses limites ; un accès à l'intérieur d'un bloc est autorisé mais un accès dépassant une limite est bloqué
La protection mémoire maintient chaque application dans sa propre zone de mémoire

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 :

Programmes utilitaires courants : antivirus, sauvegarde, compression de fichiers et défragmentateur de disque
Programmes utilitaires : antivirus, sauvegarde, compression et défragmentation
  • 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.

Explorer

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.

Vocabulaire Entrainer
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.

Un nouveau programme en cours de développement réutilisant des routines prêtes à l'emploi d'une bibliothèque mathématique, d'une bibliothèque graphique et d'une bibliothèque réseau
Un nouveau programme réutilisant des routines prêtes à l'emploi depuis des bibliothèques

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).
Une bibliothèque statique est copiée dans l'exécutable à la compilation, ce qui produit un programme autonome plus volumineux ; le fichier d'une bibliothèque dynamique reste séparé, est chargé à l'exécution et partagé par plusieurs programmes
Statique : la bibliothèque est copiée dans l'exécutable. Dynamique : un fichier de bibliothèque partagée est chargé en temps d'exécution

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.

Explorer

Laboratoire de concepts informatiques

Classez les exemples concrets selon le concept informatique qu'ils illustrent.

Vocabulaire Entrainer
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.

Un compilateur traduit le code source une fois en un exécutable qui s'exécute ensuite plusieurs fois sans traducteur présent ; un interpréteur traduit et exécute le code source une ligne à la fois, à chaque exécution
Un compilateur traduit une fois en un programme autonome ; un interpréteur traduit ligne par ligne, à chaque exécution

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.

Le code source Java est compilé une fois en bytecode indépendant de la plateforme (.class), qu'une JVM sur Windows, macOS ou Linux interprète ensuite ou compile JIT en code natif 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.

Explorer

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.

Vocabulaire Entrainer
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 :

Un IDE rassemble l'éditeur de code, un bouton Exécuter et un débogueur dans un seul programme 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.

Une fenêtre IDE annotée avec des étiquettes numérotées : mots-clés colorisés (prettyprint), bloc de code réduit, invitation contextuelle suggérant un nom, soulignement ondulé provenant de la vérification syntaxique dynamique, point de rupture dans la marge, flèche sur la ligne actuelle lors du single stepping, panneau de variables et fenêtre de rapport
Les fonctionnalités de l'IDE comportent les noms du syllabus, aux endroits où vous les verriez à l'écran

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.

Flux de travail d'un debugger : définir un breakpoint, exécuter le programme, et lorsqu'il atteint le breakpoint il s'arrête pour que vous puissiez inspecter les variables, puis faire un pas à la fois ou continuer
Un debugger : définir un breakpoint, exécuter, puis s'arrêter pour inspecter les variables et parcourir le code pas à pas

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.

Vocabulaire Entrainer
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
Vocabulaire Entrainer
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.
Vocabulaire Entrainer
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.

Épreuves Passées

Plus de sujets dans Informatique A-Level

Se connecter ou créer un compte

IGCSE, A-Level & AP