Ada (langage)
Ada est un langage de programmation orienté objet dont les premières versions remontent au début des années 1980. La dernière version publiée est Ada 2022.
Ada | ||
Date de première version | 1980 | |
---|---|---|
Paradigme | orienté objet | |
Auteur | équipe de CII Honeywell Bull | |
Typage | statique | |
Influencé par | Pascal, Simula, PL/I (système de gestion d'exceptions) | |
A influencé | Eiffel, C++, Java, PL/SQL, VHDL | |
Système d'exploitation | Windows, Linux, FreeBSD, macOS, VxWorks | |
Site web | www.adaic.org | |
modifier |
Présentation
modifierAda[1] est un langage de programmation conçu par l’équipe de CII-Honeywell Bull dirigée par Jean Ichbiah en réponse à un cahier des charges établi par le département de la Défense des États-Unis (DoD). Les premiers travaux autour du projet ont commencé à la fin des années 1970[2] et dès 1979 un preliminary ADA reference manual est publié dans la revue du Special Interest Group on Programming Languages de l'ACM[3]. La première version validée du projet sort au début des années 1980 sous le nom d'Ada 83.
Pour développer le langage, l'équipe de Jean Ichbiah s'est inspirée de son précédent langage LIS (Langage d'Implémentation de Systèmes), conçu à la CII pour permettre le développement de systèmes d'exploitation portables (à 95 %, disait Ichbiah).
Ada 83 a été ensuite repris et amélioré au milieu des années 1990 pour donner Ada 95, le second langage objet normalisé de manière internationale (publié en , il est précédé de peu par Common Lisp, publié en ). Sous les auspices de l’Organisation internationale de normalisation (ISO), le langage a bénéficié d'un amendement en 2005 (Ada 2005), puis de nouvelles révisions en 2012 (Ada 2012) et en 2022 (Ada 2023).
Le nom « Ada » a été choisi en l’honneur d’Ada Lovelace, sans doute la première informaticienne de l’histoire. Il est associé à la couleur verte car, lors de l’appel d’offres du DoD, les différentes propositions étaient désignées par des couleurs pour éviter tout biais, et l’équipe qui l’a conçu était l’équipe verte[4].
Voici quelques particularités d’Ada :
- typage statique ;
- module par les paquetages et contrôle fin de la visibilité ;
- syntaxe claire et non ambiguë (inspirée de celle du langage Pascal) ;
- généricité ;
- programmation par contrat ;
- multi-tâche ;
- traits temps réel intégrés au langage (tâches, objets protégés, interruptions) ;
- bibliothèques normalisées ;
- liens avec les autres langages ;
- annexes temps réel avec le Profil Ravenscar pour les systèmes sûrs ;
- le document de la norme ISO est librement téléchargeable (voir ci-dessous).
Il est souvent utilisé dans des systèmes temps réel et embarqués nécessitant un haut niveau de fiabilité et de sécurité. De nos jours, Ada est employé bien sûr par son initiateur, mais aussi dans toutes les techniques de pointe : en France, l’automobile, les transports ferroviaires (Alstom, Siemens Mobility, Ansaldo STS), les technologies aéronautiques (Thales Land and Air Systems, Thales Avionics, Airbus, Airbus Defence and Space) et les technologies spatiales (Thales Alenia Space, ArianeGroup, CNES, Arianespace).
En 2013, il est possible de trouver des compilateurs Ada pour certains systèmes d’exploitation (Windows, Linux, VxWorks) et architectures matérielles, y compris un compilateur libre (GNAT, inclus dans GNU Compiler Collection) compilant de l’Ada 83/95/2005/2012.
Ada est parfois utilisé en introduction aux cours de programmation informatique avancée[5], et il peut être utilisé pour les cours d'introduction à la programmation[6].
Autres langages dans la mouvance Ada
modifierAda est inspiré du langage Pascal dont il a repris tant l'esprit de la syntaxe que de l'architecture. Le langage Ada a inspiré Bertrand Meyer pour la conception du langage Eiffel, qui a ajouté des notions de programmation par contrat (mais se montre moins adapté à l'industrie sous certains aspects). La notion de programmation par contrat, formalisée par Bertrand Meyer avec Eiffel, a amené la création d'une extension au langage Ada, SPARK (en), pour lui faire supporter des notations permettant d'exprimer des assertions contractuelles dans les spécifications. La programmation par contrat (des sous-programmes ou des types d'objets) est finalement intégrée dans la version Ada 2012.
Ada a inspiré le langage PL/SQL dans le domaine des bases de données, ainsi que le langage VHDL pour les architectures matérielles.
Le langage Ada est également à la base de la conception des différents langages de la norme CEI 61131-3, en particulier la partie déclarative commune à tous les langages et le langage ST (texte structuré).
"Hello, world!" en Ada 95 ou Ada 2005
modifierUn exemple courant pour montrer la syntaxe d’un langage est le programme Hello world :
with Ada.Text_IO; -- Bibliothèque
-- Déclaration de la procédure "Hello"
procedure Hello is
begin
-- Imprimer "Hello, world!" à l'écran
Ada.Text_IO.Put_Line("Hello, world!");
end Hello;
Il existe des raccourcis pour Ada.Text_IO.Put_Line
nécessitant moins de caractères, mais ils ne sont pas utilisés ici pour des raisons de compréhension. Pour des explications plus détaillées, vous pouvez consulter Wikibooks:Ada Programming/Basic.
Bref historique
modifier- 1974 : le département de la Défense américain s'aperçoit qu’il gaspille énormément d’argent en utilisant grosso modo un langage de programmation par application, et en entretenant des programmes écrits dans des langages obsolètes endémiques ou exotiques. Certaines sources avancent le chiffre de 500 langages de programmation employés en ces lieux.
Le résultat de cette prise de conscience est l’élaboration, en trois ans, du cahier des charges d’un langage unique, suffisamment souple et puissant pour remplacer tous les autres, que ce soit pour le guidage de missiles ou les travaux sur l’intelligence artificielle en passant par les applications de gestion. - 1977 : le département lance un appel d’offres, remporté par une équipe dirigée par le Français Jean Ichbiah.
- 1980 : Jean Ichbiah fonde la compagnie Alsys (anglais : Ada Language Systems).
- 1983 : Ada83 est normalisé aux États-Unis par l’ANSI (ANSI/MIL-STD-1815A-1983).
- 1987 : Ada83 fait l’objet de la norme internationale ISO 8652:1987.
- 1990 : à partir des améliorations apportées par les différents développeurs de compilateurs, l’Ada Joint Program Office lance un projet de révision du langage.
- 1991 : Alsys est revendu à Thomson-CSF et devient TSP (Thomson Software Products).
- 1992 : un contrat est passé entre le comité de révision (Ada9X Program Office) et l’Université de New York pour le développement d’un compilateur de référence pour le nouveau langage, qui sera librement disponible. Ce compilateur, GNAT, est basé sur la technologie GCC de GNU.
- 1994 : la société Ada Core Technologies (it) (aujourd’hui AdaCore (it)) est fondée par les membres du projet GNAT pour poursuivre la maintenance du compilateur et en assurer la commercialisation et le support.
- 1995 : la révision tant attendue arrive à son terme, Ada95 voit le jour. Une norme révisée est publiée, ISO/CEI 8652:1995. Ada95 est le premier langage mettant en œuvre la programmation orientée objet à faire l’objet d’une norme ISO. Le compilateur GNAT couvre l’intégralité de la norme Ada95, y compris l’ensemble de ses annexes optionnelles.
- 1996 : TSP devient Aonix[7].
- 2000 : l’Ada Conformity Assessment Authority (ACAA) publie un ensemble de corrections mineures accumulées au cours des cinq années précédentes : le Technical Corrigendum 1.
- 2003 : un rapport du Software Engineering Institute (en) prédit la mort du langage Ada malgré sa supériorité sur les autres[8].
- 2007 : l'ISO publie l'Amendement 1 au langage qui introduit de nouvelles fonctions et officialise de nombreuses améliorations proposées initialement par les différents développeurs de compilateurs. Cette version du langage porte le nom d'Ada 2005, année durant laquelle l'Amendement fut figé pour publication par l'ISO.
- 2012 : l'ISO publie une nouvelle révision de la norme (Ada 2012), qui apporte notamment des facilités syntaxiques, la programmation par contrat, le support des architectures multi-cœurs, et une extension de la bibliothèque prédéfinie.
- 2016 : Parution d'un corrigendum technique à Ada 2012
- 2023 : l'ISO publie une nouvelle révision de la norme (Ada 2022)[9],[10]. Cette nouvelle révision apporte notamment des facilités pour paralléliser des instructions (en particulier les boucles) et réaliser des réductions ; elle améliore des contrats, les conteneurs, le temps-réel (par exemple avec le Deadline floor protocol) et apporte un certain nombre de précisions et d'améliorations techniques (par exemple, les agrégats de tableaux, de conteneurs et par différences (delta), les littéraux définis par l'utilisateur, le signe @ à droite du signe d'affectation pour désigner la partie gauche de l'affectation, l'arithmétique sur des nombres arbitrairement grands…)[11],[12].
Voir aussi
modifierArticles connexes
modifierLiens externes
modifier
- (en) Site officiel
- Notices dans des dictionnaires ou encyclopédies généralistes :
- (en) Ada Information Clearinghouse : les documents normatifs et bien d'autres choses encore.
- (en) Ada Conformity Assessment Authority : ce groupe indépendant supervise la vérification de conformité des mises en œuvre du langage (autrefois appelé « validation ») et pilote le processus d’amendement et d’amélioration de la définition du langage.
- Ada France : cette association organise un concours tous les ans avec des prix élevés (1 500 € pour le premier prix).
- (en) Les pages libres d’AdaCore : AdaCore propose ici en téléchargement ses outils GPL notamment le compilateur GNAT et l’environnement de développement GPS.
- Developpez : diverses ressources sur Ada.
- un cours Ada95 complet (sauf temps réel)
- (en) MIL-STD-1815A, Ada Programming Language
- (en) Site d'information sur Ada 2012
Bibliographie
modifier- John Barnes (en) (trad. Hugues Fauconnier), Programmer en ADA 95 [« Programming in Ada 95 »], Paris, Vuibert, , 772 p. (ISBN 978-2-711-78651-0)
- (en) John Barnes (en), Programming in Ada 2005, Harlow, England New York, Addison-Wesley/Pearson Education, , 828 p. (ISBN 978-0-321-34078-8)
- (en) Alan Burns (en) et Andy Wellings (en), Concurrency in ADA, Cambridge New York, Cambridge University Press, , 2e éd., 390 p. (ISBN 978-0-521-62911-9, OCLC 38904027, lire en ligne)
- Pierre Breguet et Luigi Zaffalon, Programmation séquentielle avec ADA 95, Lausanne, Presses polytechniques et universitaires romandes, coll. « Informatique », , 384 p. (ISBN 978-2-880-74404-5, OCLC 42893613, lire en ligne)
- Luigi Zaffalon et Pierre Breguet, Programmation concurrente et temps réel avec ADA 95, Lausanne, Presses polytechniques et universitaires romandes, coll. « Informatique », , 559 p. (ISBN 978-2-880-74408-3, OCLC 42893625, lire en ligne)
- Léa-Linux : Introduction au langage Ada.
- Simon Descarpentries, Ada95 et GTK+, le duo gagnant ? Article paru dans GNU/Linux Magazine France
- Jean-Pierre Rosen, Méthodes de génie logiciel avec Ada (WikiBook)
Notes et références
modifier- « What About Ada? The State of the Technology in 2003 »(Archive.org • Wikiwix • Archive.is • Google • Que faire ?).
- (en) Jean D. Ichbiah, Bernd Krieg-Brueckner, Brian A. Wichmann et John G. P. Barnes, « Rationale for the design of the Ada programming language », ACM SIGPLAN Notices, vol. 14, no 6b, , p. 1–261 (ISSN 0362-1340 et 1558-1160, DOI 10.1145/956653.956654, lire en ligne, consulté le )
- (en) J. D. Ichbiah, « Preliminary Ada reference manual », ACM SIGPLAN Notices, vol. 14, no 6a, , p. 1–145 (ISSN 0362-1340 et 1558-1160, DOI 10.1145/956650.956651, lire en ligne, consulté le )
- Maurice Arvonny, « Parlez-vous l'Ada ? », Le Monde, , p. 15
- « Enseigner Ada (pourquoi ?, à qui ?, comment !) », sur d.feneuille.free.fr (consulté le ).
- C'est le cas au sein de l'école d'ingénieur française INSA de Toulouse. Voir le programme détaillé « Copie archivée » (version du sur Internet Archive).
- Greffe du tribunal de commerce de Nanterre, 380 249 003 RCS Nanterre
- [PDF] rapport.
- « ISO/IEC 8652:2023 », sur ISO, (consulté le )
- Luís Miguel Pinho, « From the Editor’s Desk », Ada letters, vol. XLIII, no 1, (ISSN 1094-3641, lire en ligne [PDF])
- (en) Ada Core, « What's New in Ada 2022 » (consulté le )
- (en) Jeff Cousins, « Overview of Ada 2022, Version 63e – An Ada 2022 Language Enhancement Guide » [PDF], (consulté le )