Ada (lenguaje de programación)

Adaes unlenguaje de programaciónorientado a objetosyfuertemente tipadode forma estática que fue diseñado porJean IchbiahdeCII Honeywell Bullpor encargo delDepartamento de Defensa de los Estados Unidos. Es un lenguaje multipropósito,orientado a objetosyconcurrente, pudiendo llegar desde la facilidad dePascalhasta la flexibilidad deC++.
Fue diseñado con la seguridad en mente y con una filosofía orientada a la reducción de errores comunes y difíciles de descubrir. Para ello se basa en un tipado muy fuerte y en chequeos en tiempo de ejecución (desactivables en beneficio del rendimiento). La sincronización de tareas se realiza mediante la primitivarendezvous.
Ada se usa principalmente en entornos en los que se necesita una gran seguridad y fiabilidad, como la defensa, laaeronáutica(Boeing y Airbus), lagestión del tráfico aéreo(comoIndraen España) y la industriaaeroespacialentre otros.
El lenguaje fue diseñado bajo encargo de swerk.  Durante los años 1972-1975, este departamento tenía proyectos en una infinidad delenguajesy estaba gastando mucho dinero ensoftware. Para solucionarlo se buscó un lenguaje único que cumpliese unas ciertas normas recogidas en el documentoSteelman. Después de un estudio de los lenguajes existentes en la época se decidió que ninguno las cumplía totalmente, por lo que se hizo un concurso público al que se presentaron cuatro equipos, cuyas propuestas se nombraron con un color: rojo (Intermetrics), verde (CII Honeywell Bull), azul (SofTEch)​ y amarillo (SRI International). Finalmente, en mayo de 1979 se seleccionó la propuesta verde diseñada porJean Ichbiahde CII Honeywell Bull, y se le dio el nombre de Ada. Esta propuesta era un sucesor de un lenguaje anterior de este equipo llamado LIS y desarrollado durante los años 1970. El manual de referencia preliminar de Ada se publicó en ACM SIGPLAN Notices en junio de 1979. El manual de referencia de Military Standard se aprobó el 10 de diciembre de 1980 (cumpleaños deAda Lovelace) y recibió el número MIL-STD-1815 en honor del año de nacimiento de Ada Lovelace. En 1981,C. A. R. Hoareaprovechó suPremio Turingpara criticar a Ada por ser demasiado complejo y, por lo tanto, poco fiable.​ pero posteriormente pareció retractarse en el prólogo que escribió para un libro de texto de Ada.​
Ada atrajo mucha atención de la comunidad de programación en su conjunto durante sus primeros días. Sus patrocinadores y otros predijeron que podría convertirse en un lenguaje dominante para la programación de propósito general y no solo para el trabajo relacionado con la defensa.​ Ichbiah declaró públicamente que dentro de diez años, solo quedarían dos lenguajes de programación: Ada yLisp.​  Los primeros compiladores de Ada lucharon por implementar éste lenguaje grande y complejo, y tanto el rendimiento en tiempo de compilación como en tiempo de ejecución tendía a ser lento y las herramientas primitivas.​   Los proveedores de compiladores dedicaron la mayor parte de sus esfuerzos a aprobar el paquete de validaciónCapacidad de validación del compilador de Ada(ACVC) requerido por el gobierno, con pruebas de conformidad de lenguaje masivas, que se requería en otra característica novedosa del esfuerzo de lenguaje de Ada.​The Jargon File, un diccionario de jerga de piratas informáticos que se originó entre 1975 y 1983, señala en una entrada sobre Ada que «es precisamente lo que uno podría esperar dado ese tipo de respaldo por decreto; diseñado por el comité ... difícil para usar, y en general un desastroso despilfarro de miles de millones de dólares... Ada Lovelace... casi con certeza palidecería ante el uso que se le ha dado a su nombre últimamente; lo más amable que se ha dicho al respecto es que hay probablemente una buena lengua pequeña que grita para salir del interior de su enorme masa elefantiana».​
El nombre se eligió en conmemoración de ladyAugusta Ada Byron(1815-1852), condesa de Lovelace, hija del poeta LordGeorge Byrony la matemática, activista y aristócrataAnne Isabella Noel Byron, considerada la primera programadora de la Historia por su colaboración y relación conCharles Babbage, creador de lamáquina analítica.
El lenguaje se convirtió en un estándar deANSIen 1983 (ANSI/MIL-STD 1815) y un estándarISOen 1987 (ISO-8652:1987). Los requisitos del lenguaje de Steelman eran los que un lenguaje de programación de alto nivel para propósitos generales debería cumplir, creado por el Departamento de Defensa de los Estados Unidos en el programa de Lenguaje de Orden Superior Común del Departamento de Defensa en 1978. Los antecesores de este documento fueron llamados, en orden, «Strawman», «Woodenman», «Tinman» y «Ironman».
Los requisitos se centraron en las necesidades de las aplicaciones informáticas integradas y enfatizaron la confiabilidad, la capacidad de mantenimiento y la eficiencia. En particular, incluyeron facilidades de manejo de excepciones, verificación en tiempo de ejecución y computación paralela.
Se concluyó que ningún lenguaje existente cumplía con estos criterios en la medida suficiente, por lo que se convocó un concurso para crear un lenguaje que estuviera más cerca de cumplirlos. El diseño que ganó este concurso se convirtió en el lenguaje de programación Ada.
El lenguaje resultante siguió de cerca los requisitos de Steelman, aunque no exactamente.
La primera implementación validada de Ada fue el traductor NYU Ada/Ed,​ certificado el 11 de abril de 1983. NYU Ada/Ed se implementa en el lenguaje establecido de alto nivelSETL.​ Varias empresas comerciales comenzaron a ofrecer compiladores Ada y herramientas de desarrollo asociadas, incluidasAlsys,TeleSoft,DDC-I,Advanced Computer Techniques,Tartan Laboratories,Irvine Compiler,TLD SystemsyVerdix.​ Los fabricantes de ordenadores que tenían un negocio importante en las industrias de defensa, aeroespacial o relacionadas, también ofrecían compiladores y herramientas Ada en sus plataformas; estos incluyeronConcurrent Computer Corporation,Cray Research, Inc.,Harry puter Systems, ySiemens Nixdorf Informationssysteme AG.​
En 1991, el Departamento de Defensa de EE. UU. comenzó a exigir el uso de Ada (el «mandato de Ada») para todo el software,​ aunque a menudo se concedieron excepciones a esta regla.​  El mandato Ada del Departamento de Defensa se eliminó efectivamente en 1997, cuando el Departamento de Defensa comenzó a adoptar la tecnología comercial lista para usar (COTS).​ Existían requisitos similares en otros países de laOTAN: se requería Ada para los sistemas de la OTAN que involucran comando y control y otras funciones, y Ada era el idioma obligatorio o preferido para aplicaciones relacionadas con la defensa en países como Suecia, Alemania y Canadá.​
A finales de la década de 1980 y principios de la de 1990, los compiladores de Ada habían mejorado en rendimiento, pero aún había barreras para explotar completamente las habilidades de Ada, incluido un modelo de tareas que era diferente al que estaban acostumbrados la mayoría de los programadores en tiempo real.​
Debido a las características de soporte deseguridad críticade Ada, ahora se usa no solo para aplicaciones militares, sino también en proyectos comerciales donde un error de software puede tener graves consecuencias, por ejemplo,aviónicaycontrol de tráfico aéreo, cohetes comerciales como elAriane 4y elAriane 5,satélitesy otros sistemas espaciales, transporte ferroviario y banca.​
Por ejemplo, elsistema de gestión de información del avión, el software del sistemafly-by-wireen elBoeing 777, fue escrito en Ada.​​  Desarrollado porHoneywell Air Transport Systemsen colaboración con consultores deDDC-I, se convirtió posiblemente en el más conocido de todos los proyectos de Ada, civiles o militares.​​ El sistema de tráfico aéreo automatizado canadiense se escribió en 1 millón de líneas de Ada (recuento deSLOC). Presentabaprocesamiento distribuidoavanzado, una base de datos Ada distribuida y un diseño orientado a objetos. Ada también se utiliza en otros sistemas de tráfico aéreo, por ejemplo, el soporte de herramientas de control de área futuro provisional de próxima generación del sistema de control de tráfico aéreo del Reino Unido (iFACTS) está diseñado e implementado usandoSPARKAda.​
También se utiliza en el sistema deseñalización de cabinafrancésdeTVMen el sistema ferroviario de alta velocidadTGVy en los trenes suburbanos del metro en París, Londres, Hong Kong y Nueva York.​​
El Ada preliminar se puede encontrar enACM Sigplan Notices Vol 14, No 6, junio de 1979.
Ada se publicó por primera vez en 1980 como estándarANSIANSI/MIL-STD 1815. Como esta primera versión contenía muchos errores e inconsistencias (véaseResumen de los cambios de lenguaje de Ada), la edición revisada se publicó en 1983 como ANSI/MIL-STD 1815A. Sin más cambios, se convirtió en norma ISO en 1987,ISO 8652:1987. Esta versión del lenguaje se conoce comúnmente comoAda 83, desde la fecha de su adopción por parte de ANSI, pero a veces también se la denominaAda 87, desde la fecha de su adopción por ISO. Este es elManual de referencia de Ada 83. También hay una traducción al francés; DIN lo tradujo al alemán como DIN 66268 en 1988.
Ada 95, el estándar conjunto ISO/IEC/ANSIISO/IEC 8652:1995(véaseAda 95 RM) fue publicado en febrero de 1995, convirtiéndolo en el primer lenguaje de programación orientado a objetos estándar ISO. Para ayudar con la revisión estándar y la futura aceptación, laFuerza Aérea de los Estados Unidosfinanció el desarrollo delcompiladorGNAT. Actualmente, el compilador GNAT es parte de laGNU Compiler Collection.
Se ha continuado trabajando en la mejora y actualización de los contenidos técnicos del lenguaje Ada. En octubre de 2001 se publicó un corrección técnica deAda 95,ISO/IEC 8652:1995/Corr 1:2001(véaseAda 95 RM con TC 1), y una enmienda importante,ISO/IEC 8652:1995/Amd 1:2007(véaseAda 2005 RM) fue publicado el 9 de marzo de 2007, comúnmente conocido comoAda 2005porque el trabajo en el nuevo estándar finalizó ese año.
En la conferencia Ada-Europa 2012 en Estocolmo, Ada Resource Association (ARA) y Ada-Europa anunciaron la finalización del diseño de la última versión del lenguaje Ada y la presentación del manual de referencia alISO/IEC JTC 1/SC 22/WG 9 de laOrganización Internacional de Normalización(ISO) y laComisión Electrotécnica Internacional(IEC) para su aprobación.ISO/IEC 8652:2012(véaseAda 2012 RM) fue publicado en diciembre de 2012, conocido comoAda 2012. Se publicó un corrigendum técnicoISO/IEC 8652:2012/COR 1:2016(véaseRM 2012 con TC 1).
A pesar de los nombres Ada 83, 95, etc., legalmente solo existe un estándarAda, el del último estándar ISO/IEC: con la aceptación de una nueva versión del estándar, el anterior se retira. Los otros nombres son solo informales que hacen referencia a una determinada edición.
Otros estándares relacionados incluyenISO/IEC 8651-3:1988Sistemas de procesamiento de información—Gráficos por ordenador—Enlaces de lenguaje del Sistema de Kernel Gráfico (GKS)—Parte 3: Ada.
Un compilador de Ada muy usado esGNAT, originalmente desarrollado por laUniversidad de Nueva Yorkbajo patrocinio delDoD. Está basado en la tecnología deGCCy essoftware libre. Actualmente está mantenido por AdaCore (antes llamada Ada Core Technologies), empresa que ofrece soporte y servicios sobre el compilador.
Existen otros compiladores comerciales.
Un ejemplo común sobre la sintaxis de los lenguajes de programación es el «Hola mundo». En Ada, se realizaría así:
Ejemplo de uso de array:
Para acceder a cada uno de los huecos se accedería de la siguiente manera: