Résumé

Résumé

4.1 Modèles de calcul

  • Un modèle de calcul définit ce qu'un algorithme ou un programme fait. Il existe des modèles matériels, des modèles de langage de programmation et des modèles abstraits.
  • La programmation de bas niveau signifie écrire du code machine qui peut être directement compris par un CPU, ou quelque chose de très proche. Elle est laborieuse mais produit un code très rapide.
  • La programmation de niveau intermédiaire est un compromis qui est raisonnablement efficace et plus pratique que la programmation de bas niveau.
  • La programmation de haut niveau est plus abstraite et intuitive pour les humains. Elle est moins exigeante en main-d'œuvre, mais le code de haut niveau peut être plus lent que le code de bas niveau.
  • Les paradigmes de langage de programmation sont des approches pour organiser le code source.
  • Dans le paradigme impératif, le code ordonne au CPU d'exécuter des actions spécifiques.
  • Dans le paradigme déclaratif, le programmeur déclare le résultat dont il a besoin.
  • Dans le paradigme fonctionnel, le programmeur définit des fonctions mathématiques à évaluer.
  • En programmation structurée, le flux d'exécution est spécifié avec des éléments de syntaxe explicites (« if-then-else », boucle « for », boucle « while ») et jamais GOTO.
  • En programmation procédurale, un programme est divisé en procédures. Chaque procédure exécute une tâche spécifique et porte un nom descriptif.
  • En programmation orientée objet, le bloc de construction de base est un objet. Un objet combine des données et des procédures qui représentent ensemble un concept humain.

4.2 Construction de programmes C

  • Le langage de programmation (programming language) C est l'exemple le plus éminent d'un langage de bas niveau. Les programmes écrits en C s'exécutent généralement aussi vite que le langage d'assemblage et permettent aux programmeurs de manipuler directement les fonctionnalités de la machine telles que la mémoire via l'utilisation de pointeurs.
  • Le langage de programmation C est utilisé par la plupart des logiciels système dont nous dépendons aujourd'hui (par exemple, les systèmes d'exploitation, les compilateurs, les interpréteurs et les pilotes de périphériques) en raison de son exécution efficace, de sa portabilité et de sa modularité.
  • Le modèle de données C prend en charge la création d'une variété de types de base, y compris les entiers et les nombres à virgule flottante, ainsi que les pointeurs. C fournit également des constructeurs de types utilisés pour créer des collections à l'aide des mots-clés array, struct et union.
  • C prend en charge les paradigmes de programmation impérative et structurée/procédurale (procedural programming) et permet des instructions conditionnelles et itératives ainsi que des fonctions, qui peuvent exploiter la récursivité (recursion).
  • Les étapes de développement de programmes en C nécessitent la conception d'algorithmes, le développement de programmes qui implémentent des algorithmes, et la compilation, l'édition de liens et l'exécution des programmes. Toutes ces étapes peuvent être effectuées dans un environnement de développement C, qui est une suite d'outils qu'un programmeur utilise pour créer des logiciels. Il doit inclure un éditeur de texte, un compilateur et un éditeur de liens (linker), et peut inclure d'autres outils tels qu'un gestionnaire de versions, et d'autres.
  • Un environnement de développement peut être un assemblage de programmes en ligne de commande séparés, ou un IDE, qui est un environnement de développement regroupé en une seule application. Il existe une multitude d'environnements de développement C, et beaucoup d'entre eux sont gratuits.
  • La compilation de programmes C implique la conversion du C en langage d'assemblage, qui peut lui-même être traduit en code machine. Ce processus est effectué en utilisant une combinaison d'outils connus respectivement sous le nom de compilateur C, assembleur et éditeur de liens. Le compilateur GCC est un compilateur C à code source ouvert développé par le projet GNU ; il inclut gcc, ar et ld pour implémenter la compilation, l'assemblage et l'édition de liens.
  • L'édition de liens est le processus de combinaison des fichiers .o qui résultent de modules C séparés en une seule bibliothèque livrable ou un programme exécutable.
  • Une bibliothèque est un fichier qui contient le code objet de fonctions compilées. Il existe plusieurs variations de bibliothèques (statiques, dynamiques, partagées) et de manières de les lier (au moment du chargement, à l'exécution).
  • Les outils de gestion de versions gèrent les fichiers créés en programmation, facilitant la collaboration, les sauvegardes et l'annulation des erreurs.

4.3 Modèles de programmation parallèle

  • Les ordinateurs multicœurs sont monnaie courante. La plupart des appareils mobiles grand public, des ordinateurs et des consoles de jeux vidéo ont entre deux et huit cœurs. Au fil du temps, le nombre de cœurs dans les ordinateurs tend à augmenter.
  • Le calcul parallèle ne se produit pas automatiquement. Au contraire, un programmeur doit délibérément écrire un programme de manière parallèle afin qu'il utilise plusieurs cœurs.
  • Il existe une variété de modèles de programmation parallèle, y compris la mémoire partagée, les fils d'exécution et le passage de messages.
  • OpenMP est une bibliothèque pour écrire du code parallèle en utilisant le modèle de passage de messages.
  • Une stratégie pour le calcul parallèle est d'avoir un fil parent, qui crée et contrôle des fils d'exécution enfants. Les fils d'exécution enfants travaillent en parallèle.

4.4 Applications des modèles de programmation

  • La programmation de bas niveau et de niveau intermédiaire continuera d'être importante à mesure que la société dépendra de plus en plus des appareils informatiques à faible consommation et de l'IoT.
  • Les langages de niveau intermédiaire, y compris le C, sont idéaux pour développer des micrologiciels et des noyaux.
  • Rust est un langage de niveau intermédiaire relativement nouveau qui gagne en popularité.
  • Arduino est une plateforme informatique embarquée. Le micrologiciel Arduino peut être écrit en C.
  • Les noyaux Raspberry Pi peuvent être développés en C.