Mathématiques et langages : le feuilleton de l’automne
Langages de programmation
El 18 septiembre 2017 Ver los comentarios
La programmation. C’est elle qui spécifie, dans un langage très précis, ce que l’ordinateur doit exécuter. D’un algorithme décrit verbalement ou avec un dessin, la programmation fait une liste d’ordres que la machine va suivre pour obtenir la réponse désirée (valeur, image, application, etc.). Les programmes sont absolument nécessaires à notre interaction avec l’ordinateur, ils sont partout: un jeu est un programme au même titre qu’un navigateur (ou «butineur» comme Firefox, Internet Explorer...) ou qu’un système d’exploitation (Linux, Mac OS, Windows...), programme très long et compliqué, mais qui, comme pour un jeu, est un texte écrit dans un certain langage.
Le langage de la machine
Le seul langage compris par le processeur, l’unité centrale dans laquelle sont câblées toutes les opérations de base de l’ordinateur, est appelé «assembleur». Il définit simplement les opérations électroniques que peut exécuter le processeur. Ce langage change d’un processeur à un autre. Il est donc très efficace puisque tout peut être ajusté «sur mesure», mais il est nettement plus compliqué à manipuler que des langages de plus haut niveau, sans faire d’erreur.
L’assembleur est une liste d’ordres, un fichier d’instructions, comme additionner deux valeurs, les comparer... L’une des instructions permet de sauter à un autre ordre de la liste. Cela permet par exemple de faire des boucles comme «Frapper un monstre jusqu’à ce qu’il disparaisse» ou «Avancer jusqu’à rencontrer un mur».
Cette dernière boucle peut également s’écrire: «Avancer. S’il n’y a pas de mur en face, retourner à la ligne précédente. Tourner à gauche.» Ainsi, on ne tournera à gauche que lorsqu’on aura rencontré un mur. Mais ce genre de programme pose une question: que se passe-t-il si l’on rencontre un obstacle autre qu’un mur? En effet, si un humain peut penser à contourner cet obstacle, un tel comportement n’a pas été programmé et le programme va donc tenter désespérément de passer à travers. Dans ce cas absurde, le programme exécutera bêtement l’instruction jusqu’à ce qu’il soit arrêté de l’extérieur (par le système d’exploitation ou par l’utilisateur).
Le compilateur, le traducteur homme-machine
Les langages actuels sont de plus haut niveau, ils permettent de préciser plus facilement toutes les actions à exécuter. Cependant, ces langages doivent eux-mêmes être exécutés. Pour cela, le programme source, qui n’est qu’un texte, va être «compilé». Cela signifie qu’un programme (un de plus !), appelé «compilateur», va transformer le texte du programme source en une suite d’instructions en langage assembleur exécutables par l’ordinateur. Le compilateur joue un rôle de traducteur entre ce qui est écrit par le programmeur et ce qui est compris par la machine. Le compilateur produit un fichier exécutable que nous lançons pour utiliser le programme. De même qu’il y a de nombreuses langues (français, arabe, russe, japonais...), il y a plusieurs types de programmation, c’est-à-dire plusieurs façons de donner des ordres à l’ordinateur. Ces modes de programmation sont appelés «paradigmes». Le choix du langage et du paradigme de programmation dépend de l’application, de l’algorithme, mais aussi de l’interaction du programme avec d’autres programmes et enfin du choix et de l’expertise du programmeur.
En conclusion, la programmation n’est pas seulement une simple traduction de l’algorithme vers la machine. La façon de faire, la gestion de la mémoire, les types de données peuvent rendre un même algorithme lent ou très efficace. La programmation introduit également des bugs aux conséquences parfois dramatiques. Les éviter reste un vrai défi, un défi scientifique.
Pour aller plus loin, nous vous proposons de consulter sur Wikipédia l’article «Langage de programmation».
Texte extrait de «Demandez le programme», Interstices.
Article complet paru dans la revue DocSciences no 5, «Les clés de la révolution numérique», éditée par le CRDP de l’académie de Versailles en partenariat avec Inria.
Ce texte appartient au dossier thématique «Mathématiques et langages».
Comparte este artículo
Para citar este artículo:
Sylvie Boldo — «Langages de programmation» — Images des Mathématiques, CNRS, 2017
Comentario sobre el artículo