Mathématiques et langages : le feuilleton de l’automne

Langages de programmation

Le 18 septembre 2017  - Ecrit par  Sylvie Boldo Voir les commentaires

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 ».

Post-scriptum :

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 ».

Article édité par Jérôme Germoni

Partager cet article

Pour citer cet article :

Sylvie Boldo — «Langages de programmation» — Images des Mathématiques, CNRS, 2017

Crédits image :

Image à la une - Par agr — Travail personnel, CC BY 2.5, https://commons.wikimedia.org/w/index.php?curid=615681

Commentaire sur l'article

Laisser un commentaire

Forum sur abonnement

Pour participer à ce forum, vous devez vous enregistrer au préalable. Merci d’indiquer ci-dessous l’identifiant personnel qui vous a été fourni. Si vous n’êtes pas enregistré, vous devez vous inscrire.

Connexions’inscriremot de passe oublié ?

Dossiers

Cet article fait partie du dossier «Mathématiques et langages» voir le dossier

Suivre IDM