Ada (langage) 27 31490978 2008-07-11T11:56:02Z Not so old lion 408119 /* Bref historique */ entreprise ayant changé de noms. {{voir homonymes|Ada}} == Présentation == '''Ada''' est un [[langage de programmation]] conçu par l’équipe de [[Compagnie internationale pour l'informatique|CII-Honeywell Bull]] dirigée par [[Jean Ichbiah]] en réponse à un cahier des charges établi par le [[Département de la Défense]] américain (DoD). Son développement a commencé au début des [[années 1980]] pour donner '''Ada 83'''. Il a été ensuite repris et amélioré au milieu des [[années 1990]] pour donner '''Ada 95''', le premier [[Programmation orientée objet|langage objet]] standardisé de manière internationale. Sous les auspices de l’[[Organisation internationale de normalisation]] (ISO), le langage dispose maintenant d’une révision appelée '''Ada 2005'''. Le nom ''Ada'' a été choisi en l’honneur d’[[Ada Lovelace]], qui est supposée avoir écrit le premier programme de l’histoire. Il est associé à la couleur verte car, lors de l’appel d’offre 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. Voici quelques particularités d’Ada : * [[typage statique]], * [[Module (programmation)|module]] par les paquetages et contrôle fin de la visibilité * [[syntaxe]] claire et non ambiguë (inspirée de celle du [[Pascal (langage)|langage Pascal]]), * [[généricité]], * traits [[temps réel]] intégrés au langage (tâches, objets protégés, interruptions), * bibliothèques standardisées, liens avec les autres langages, * annexes temps réel avec le [[Profil Ravenscar]] pour les systèmes sûrs, Il est souvent utilisé dans des [[système temps réel|systèmes temps réel]] et [[informatique embarquée|embarqués]] nécessitant un haut niveau de fiabilité et de sécurité. Actuellement ([[2008]]), il est possible de trouver des [[compilateur]]s Ada de très bonne qualité pour toutes sortes de [[système d'exploitation|systèmes d’exploitation]] (Windows, Linux, VxWorks) et d’[[Architecture Hardware|architectures]], y compris un compilateur libre ([[GNAT]], inclus dans ''[[GNU Compiler Collection]]'') compilant de l’Ada 83/95/2005. Ada est souvent utilisé en introduction aux cours de [[programmation informatique]] avancée, et parce qu'il partage les mêmes qualités pédagogiques que le [[langage Pascal|Pascal]] (dont il a hérité), Ada est même maintenant utilisé pour les cours d'introduction à la [[programmation]]. == Autres langages dans la mouvance Ada == Ada est inspiré du [[langage Pascal|Pascal]] dont il a repris tant l'esprit de la syntaxe que de l'architecture (surtout si on inclut [[Turbo Pascal]]). Le langage Ada a inspiré [[Bertrand Meyer]] pour la conception du langage [[langage Eiffel|Eiffel]], qui y ajoute des notions de programmation par contrats (mais se montre moins adapté à l'industrie sous certains aspects). La notion de [[programmation par contrainte]] formalisée par Bertrand Meyer avec Eiffel, a amené la création d'un projet d'extension d'Ada, pour lui faire supporter des notations permettant d'exprimer des assertions contractuelles dans les spécifications de package (ces extensions fonctionnent comme une surcouche, et sont traitées par un preprocesseur). == "Hello, world!" en Ada 95 ou Ada 2005 == Un exemple courant pour montrer la syntaxe d’un langage est le programme [[Hello world]] : <source lang="ada"> with Ada.Text_IO; -- Bibliothèque procedure Hello is -- Annonce de la procédure "Hello" begin -- Début de la procedure "Hello" Ada.Text_IO.Put_Line("Hello, world!"); -- Code qui imprime "Hello, world!" à l'écran end Hello; -- Fin de la procédure "Hello" </source> Il existe des raccourcis pour <tt>Ada.Text_IO.Put_Line</tt> 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 == '''[[1974]]''' – Le [[département de la Défense]] [[États-Unis|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 3 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 missile 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]] (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. '''[[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 [[logiciel libre|librement]] disponible. Ce compilateur, [[GNAT]], est basé sur la technologie [[GNU Compiler Collection|GCC]] de [[GNU]]. '''[[1994]]''' – La société [[Ada Core Technologies]] (aujourd’hui [[AdaCore]]) 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]]/[[Commission électrotechnique internationale|CEI]] 8652:1995. Ada95 est le premier langage qui implémente la [[programmation orientée objet]] à faire l’objet d’une norme internationale. Le compilateur [[GNAT]] couvre l’intégralité de la norme Ada95, y compris l’ensemble de ses annexes optionnelles. '''[[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. '''[[2004]]''' – De nos jours, Ada95 est employé bien sûr par son initiateur, mais aussi dans toutes les technologies de pointes; en France, l’automobile, les transports ferroviaires (ALSTOM, Siemens Transportation Systems, ANSALDO STS) ([[TGV]], Corail, RER, METEOR), les technologies aéronautiques ([[Thales Air Defense]],[[Thales Avionics]], [[Airbus]], [[EADS Défense et sécurité]]) et les technologies spatiales ([[Alcatel Space]], [[CNES]], [[Arianespace]]). '''[[2005]]''' – Un amendement à la norme est en préparation au sein du groupe de travail ISO responsable des normes Ada. Cet amendement introduit de nouvelles fonctionnalités et officialise de nombreuses améliorations proposées initialement par les différents développeurs de compilateurs. La révision du langage est officiellement adoptée et porte le nom d'Ada 2005. == Lien interne == * [[GNAT]] (compilateur Ada libre) == Liens externes == {{Wikilivres|Programmation Ada|Programmation Ada}} * [http://www.ada-france.org Ada France] : cette association organise un concours tous les ans avec des prix élevés (1500 € pour le premier prix). * [http://ada.developpez.com Developpez] : Diverses ressources sur Ada. * [http://www.lea-linux.org/cached/index/Dev-ada.html Léa-Linux] : Introduction au langage Ada. * [http://libre.adacore.com/ 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. * [http://www.ada-auth.org/ Ada Confirmity 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. * [[b:en:Ada Programming/Ada 2005|Ada Programming/Ada 2005]] : Un ouvrage librement disponible sur le nouvel amendement à la norme. * Série d'article Unixgarden sur Ada 95: # {{fr}} [http://www.unixgarden.com/index.php/programmation/le-langage-ada-95-%e2%80%93-7-la-genericite Le langage Ada 95 – 7 : La généricité] # {{fr}} [http://www.unixgarden.com/index.php/programmation/le-langage-ada-95-%e2%80%93-8-chaines-et-fichiers Le langage Ada 95 – 8 : Chaînes et fichiers] # {{fr}} [http://www.unixgarden.com/index.php/programmation/le-langage-ada-%e2%80%93-10-les-exceptions Le langage Ada – 10 : Les exceptions] # {{fr}} [http://www.unixgarden.com/index.php/programmation/le-langage-ada-l%e2%80%99orientation-objet Le langage Ada : l’orientation objet] # {{fr}} [http://www.unixgarden.com/index.php/programmation/le-langage-ada-types-limites-et-objets-controles Le langage Ada : Types limités et objets contrôlés] == Bibliographie == * [[John Barnes (programmeur)|John Barnes]] ([[2000]]), ''Programmer en Ada 95'', ISBN 2-7117-8651-X * [[John Barnes (programmeur)|John Barnes]] ([[2006]]), ''Programming en Ada 2005'', ISBN-13: 978-0-321-34078-8 * [[Alan Burns and Andy Wellings]] ([[1998]]), ''Concurrency in Ada - second Edition'', ISBN 0 521 62911 X {{Portail|programmation informatique}} [[Catégorie:Langage de programmation]] [[Catégorie:Langage orienté objet]] [[Catégorie:Théorie des types|Ada]] [[Catégorie:Programmation concurrente]] [[an:Luengache de programazión Ada]] [[ar:أدا]] [[az:Ada dili]] [[bg:Ada]] [[bn:অ্যাডা]] [[ca:Ada]] [[cs:Ada]] [[da:Ada (programmeringssprog)]] [[de:Ada (Programmiersprache)]] [[el:Ada]] [[en:Ada (programming language)]] [[es:Lenguaje de programación Ada]] [[fa:ایدا]] [[fi:Ada]] [[gl:Ada]] [[he:עדה (שפת תכנות)]] [[hu:Ada (programozási nyelv)]] [[id:Ada (bahasa pemrograman)]] [[it:Ada (linguaggio)]] [[ja:Ada]] [[ko:에이다]] [[nl:Ada (programmeertaal)]] [[nn:Programmeringsspråket Ada]] [[no:Ada]] [[pl:Ada (informatyka)]] [[pt:Ada (linguagem de programação)]] [[ru:Ада (язык программирования)]] [[sk:Ada (programovací jazyk)]] [[sl:Ada (programski jezik)]] [[sr:Ada (програмски језик)]] [[sv:Ada (programspråk)]] [[tg:Ада (забони барноманависӣ)]] [[th:ภาษาเอดา]] [[tr:Ada programlama dili]] [[uk:Ada]] [[vi:Ada (ngôn ngữ lập trình)]] [[zh:Ada]]