Historia del lenguaje Ada
La historia de Ada comienza en 1974 cuando el Departamento de Defensa de los Estados Unidos (DoD) se percató que estaba gastando demasiado en software. Se llevó a cabo un estudio detallado sobre la distribución de los costos y se descubrió que sobre la mitad de éstos estaba directamente relacionado con sistemas incrustados (embedded).
Se realizó un análisis de los lenguajes utilizados en diferentes áreas. Se descubrió que COBOL era el estándar para el procesamiento de datos y FORTRAN lo era para cálculos científicos y numéricos. Aunque estos lenguajes no eran modernos, el hecho que fueran uniformemente utilizados en sus respectivas áreas evitaba duplicaciones.
La situación con respecto a los sistemas incrustados era diferente. La cantidad de lenguajes utilizados era enorme. No sólo cada unidad militar tenía su lenguaje de alto nivel favorito, sino que usaban varios lenguajes assembler. En resultado era que había gastos innecesarios en compiladores y costos adicionales en entrenamiento y mantención debido a la falta de estandarización.
Se determinó que la única forma de controlar efectivamente los costos en los sistemas incrustados era estandarizar el uso de lenguajes de programación. El primer paso en esta dirección fue la generación de un documento en que se delineaban los requerimientos del lenguaje estándar. La primera versión (Hombre de Paja o Strawman) fue publicada en 1975. Después de recibir comentarios de diversas fuentes el documento fue refinado (Hombre de Madera o Woodenman). En junio de 1976 se produjo una nueva versión (Hombre de Lata o Tinman). Este era un documento más específico e identificaba la funcionalidad que se requería del lenguaje.
En esta etapa se evaluaron varios lenguajes existentes respecto a la especificación Tinman. Como se podría esperar ninguno de éstos satisfacía totalmente los requerimientos; por otro lado la impresión general era que sería necesario crear un nuevo lenguaje basado en conceptos de vanguardia en el área de la programación.
Los lenguajes existentes fueron clasificados en tres categorías:
-
No apropiados: Lenguajes obsoletos u orientados a otras áreas que no fueron considerados en las etapas siguientes. Por ejemplo, FORTRAN y CORAL 66.
-
No inapropiados: Estos lenguajes tampoco eran satisfactorios, pero tenían algunas características interesantes que podían ser tomadas como "inspiración" para enriquecer el estándar. Por ejemplo, RTL/2 y LIS.
-
Bases recomendadas: Los lenguajes Pascal, PL/I y Algol 68 fueron considerados como posibles puntos de partida para el diseño del lenguaje final.
En este punto el documento de requerimientos fue revisado y reorganizado (Hombre de Hierro o Ironman). Se llamó a propuestas para el diseño del lenguaje. Se recibieron diecisiete propuestas de las cuales se eligieron tres para que "compitieran" en paralelo. Los cuatro elegidos fueron CII Honeywell Bull (Verde), Intermetrics (Rojo), Softech (Azul) y SRI International (Amarillo). Los códigos de color se introdujeron para que la comparación se realizara anónimamente.
Los diseños iniciales aparecieron a comienzos de 1978 y fueron analizados por varios grupos alrededor del mundo. El DoD juzgó que los diseños Verde y Rojo eran más promisorios que los Azul y Amarillo y éstos últimos fueron eliminados.
Entonces, el desarrollo entró en una segunda fase y se dio a los desarrolladores un año más para refinar sus diseños. Los requerimientos también fueron mejorados a la luz de la retroalimentación recibida de los diseños iniciales (Hombre de Acero o Steelman).
La elección final del lenguaje fue hecha el 2 de mayo de 1979 cuando el "lenguaje verde" desarrollado en CII Honeywell Bull por un equipo internacional liderado por Jean Ichbiah fue declarado ganador.
Entonces el DoD anunció que el nuevo lenguaje sería conocido como Ada en honor de Augusta Ada Byron, condesa de Lovelace (1815-1852). Ada, hija de Lord Byron, fue la asistente y mecenas de Charles Babbage y trabajó en su "máquina analítica". En un cierto sentido ella fue la primera programadora de la historia.
Entonces el desarrollo de Ada entró a una tercera etapa, el propósito de la cual fue el que los eventuales usuarios hicieran sus comentarios respecto a que tan conveniente era el lenguaje para sus necesidades. Se continuó con otros estudios de los que se concluyó que Ada era un buen lenguaje, pero que en algunas áreas todavía se requerían algunos refinamientos. Después de esto (en julio de 1980) se publicó la primera versión definitiva del lenguaje y se la propuso a la ANSI (America National Standards Institute) como un estándar.
La estandarización por parte de ANSI tomó unos dos años y se le introdujeron algunos cambios a Ada. El manual de referencia del lenguaje estándar de la ANSI fue finalmente publicado en enero de 1983. A esta versión del lenguaje se le conoce como Ada 83.
Tan pronto como se comenzó a utilizar el lenguaje se iniciaron los estudios para su mejora basada en la experiencia práctica de los usuarios con el lenguaje. A la nueva versión se le denominó Ada 9X, entre las principales mejoras hechas sobre la anterior se cuenta la incorporación de mecanismo de herencia en el manejo de tipos con que contaba Ada 83, el cual, a pesar de ser muy poderoso, al carecer de herencia herencia no se adecuaba al paradigma de Orientación a Objetos. A esta segunda versión de Ada se denomina como Ada 95. La previsión es que cada 10 años se publique una revisión del estándar ISO del lenguaje Ada.
En el año 2007 se publica la versión Ada 2005 de la norma ISO Ada. La publicación del estándar por parte de la ISO se produjo en enero de 2007. A pesar de ello la definición técnica terminó en 2005. Es por esto que los miembros del grupo dudaron si comenzar a llamar a la nueva versión Ada 2006, pero finalmente acordaron promover el nombre Ada 2005. Ada 2005 no es un nombre oficial, el nombre oficial continúa siendo simplemente Ada programming language, ISO/IEC 8652:2005(E). Entre sus diversas mejoras, Ada 2005 introdujo tipos de interfaz abstractos similares a las interfaces de Java, integró las características de concurrencia con programación orientada a objetos y amplió la biblioteca predefinida con contenedores genéricos y otros paquetes.
Luego en el año 2012 se publica la versión 2012 de la norma ISO Ada. Ada 2012 agregó soporte para programación basada en contratos (precondiciones, poscondiciones, invariantes de tipo) y una serie de otras características que incluyen mejoras en el área de programación en tiempo real y soporte multinúcleo.
La última versión del estándar del lenguaje de programación Ada es Ada 2022, aprobada formalmente en 2023. Esta versión incluye nuevas características que facilitan la prueba de programas y el uso eficiente de arquitecturas multinúcleo.
A pesar de los nombres como Ada 83, 95, etc., legalmente solo existe un estándar Ada, que es la última versión ISO/IEC. Al adoptar una nueva versión, la anterior se retira.
Ada 2022 es compatible con versiones anteriores de Ada, lo que significa que el código escrito para versiones anteriores generalmente se puede compilar y ejecutar con un compilador Ada 2022.