Ada, langage de l’ombre

Kaloyan Vesselinov
ELP-2018
Published in
5 min readMay 15, 2018

Ada est un langage de programmation que vous rencontrez probablement pour la première fois en lisant cet article. Et pourtant, vous utilisez certainement des services écrits en Ada chaque jour.

Ada est un langage de programmation utilisé dans des environnements temps réel où la fiabilité est critique, avec de nombreuses fonctionnalités qui permettent de réduire le risque d’erreur. Il a été conçu pour le développement d’applications complexes qui passent facilement à l’échelle avec un coût moindre.

Penchons-nous un peu sur l’histoire de ce langage…

Ada Lovelace, comtesse anglaise et première programmeuse

D’Ada Lovelace au DoD américain

Ada porte le nom de la comtesse anglaise Ada Lovelace. Elle est connue pour avoir inventé, en 1843, le premier algorithme permettant de programmer la machine de Babbage, un des précurseurs des ordinateurs modernes. Ses travaux ont beaucoup inspiré Alan Turing, considéré comme le père de l’informatique, bien que celui-ci ne l’ait jamais cité. Ses travaux seront redécouverts par le Département de la Défense des États-Unis (DoD) au moment de la création d’Ada.

Au milieu des années 70, le DoD cherche à créer un langage pour remplacer les plus de 450 langages différents utilisés par l’armée américaine. Entre 1975 et 1978, des spécifications détaillés sont écrites en plusieurs phases. Comme le veut la tradition militaire américaine, une compétition est ouverte pour la création du nouveau langage. La compagnie CII-Honeywell Bull est finalement sélectionnée : son langage Green, développé sous la direction de l’informaticien français Jean Ichbiah, deviendra Ada en hommage aux travaux d’Ada Lovelace. Mais qu’est-ce qui rend ce langage spécial ?

Le programme "Hello world" en Ada

Ada, la fiabilité avant tout

Ada est, grâce à son standard Ada 95, le premier langage orienté objet. Ce n'est cependant pas pour cela qu'Ada est célèbre aujourd'hui. Ce qui distingue Ada des autres langages de programmation sont les nombreuses caractéristiques qui permettent de diminuer le risque d’erreur dans les programmes. Par exemple, il a une syntaxe assez verbeuse, ce qui favorise la lecture et la compréhension du code.

Un langage normé

Ada suit une norme internationale ISO, la dernière version datante de 2012. Chaque compilateur doit passer par une procédure de validation très poussée grâce au « Ada Conformance Assessment Test Suite ». Tout cela pour garantir que chaque compilateur adhère aux mêmes standards, afin de favoriser la portabilité et la fiabilité des applications Ada.

Un langage fortement typé

Chaque variable en Ada a un type bien précis, et les différents types ne peuvent pas interagir entre eux sans conversion explicite. Le langage permet aussi de définir des plages pour les différentes variables, ce qui permet de contextualiser les valeurs et d’éviter ainsi certaines erreurs lors de l’exécution. Les types sont statiques et vérifiés par le compilateur, ce qui permet de détecter beaucoup d’erreurs au moment de la compilation.

Plages de valeurs définies pour un type en Ada

Des contrats à respecter

La dernière spécification d’Ada — Ada 2012 — introduit la notion de programmation par contrat. Un contrat est un ensemble de propriétés que doit vérifier une partie du programme. Ada 2012 supporte des préconditions (des contraintes à l’entrée d’un sous-programme) et des postconditions (des conditions qui doivent être vérifiées à la sortie du sous-programme). Ainsi, un sous-programme peut être appellé si et seulement si ses préconditions sont respectées. À la sortie, un sous-programme garantit que son résultat respecte les paramètres définis dans les postconditions. Certaines caractéristiques statiques du programme peuvent être vérifiées au moment de la compilation. Les caractéristiques dynamiques sont vérifiées pendant l'exécution du programme. Les contrats permettent aussi à différents outils d’analyse de tester le programme en définissant clairement les spécifications. Ces fonctionnalités permettent de définir beaucoup plus précisément le comportement « normal » d’un programme en fiabilisant les entrées et les sorties d’un module. Elles permettent aussi d’identifier plus facilement la source d’une erreur en cas de non-respect d’une précondition ou d’une postcondition. Des routines peuvent être définies en cas de non-respect de ces conditions pendant l’exécution, ce qui permet au programmeur d’anticiper certaines erreurs et de prévoir un comportement adéquat.

Un exemple de contrat en Ada

Un langage de niche

Aujourd’hui, Ada est présent dans des domaines variés, dont la défense, l’aérospatial, l’aéronautique, le médical. Il est utilisé au sein du Boeing 787 Dreamliner, de l’Eurofighter Typhoon ou bien la Station Spatiale Internationnale. Ada reste cependant peu utilisé en dehors de ces niches : sur Github, à peine 2 000 dépôts utilisent Ada, contre plus de 5 millions pour Javascript ou 2,5 millions pour Python.

Références

Plus sur Ada Lovelace

Plus sur le langage Ada

Crédits images

--

--