Ada (informática)

**Ada** é unha linguaxe de programación, deseñada por un equipo dirixido por Jean Ichbiah da Cii Honeywell Bull entre 1977 e 1983. Debe o seu nome a Ada Lovelace, a primeira programadora de computadoras.

## Características 
Ada foi orixinalmente concibida para servir como linguaxe multiuso para o DoD (Departamento de Defensa americano). Por iso contén características para:
* facilitar o seu uso en sistemas empotrados e en tempo real, e aínda se utiliza amplamente neses campos.
* utilizacion en aplicacións que requiren un alto nivel de seguridade (no senso de fiabilidade)
* interface con outras linguaxes

**Ada95**: A revisión Ada 95 (deseñada por Tucker Taft de Intermetrics entre 1992 e 1995) engadiu soporte para programación orientada a obxectos, incluíndo dispatch dinámico e modelos como C++. Asemade mellorou o soporte para sistemas, numérico, e a programación con fins financeiros.

As implementacións de Ada non acostuman ter recolección de lixo na xestión de almacenamento. Ada soporta unha serie limitada de formas de xestión do almacenamento baseado en rexións, o que permite detectar nalgúns casos accesos a rexións de memoria non asignadas en tempo de compilación.

**Tipado forte**: Ada caracterízase, entre outras cousas, por ser unha linguaxe fortemente tipada, con comprobacións en tempo de execución, procesamento paralelo, manexo de excepcións, e xenéricos. Ao ter un tipado forte, permite que o Ada soporte un gran número de comprobacións en tempo de compilación, o que axuda a evitar erros que non serían detectados ata a execución utilizando outra linguaxe de programación, ou que requirirían engadir no código fonte comprobacións explícitas.

**Xestión de excepcións**: Unha característica principail da linguaxe Ada é a comprobación do corrector en execución ("runtime"): Ada soporta (inclúe implicitamente) comprobacións en tempo de execución con obxecto de protexerse ante asignacions de valores fóra de rango, accesos a direccións de memoria non asignada, erros de desbordamento de buffer, erros dun paso, e outros erros evitables. Estes exames son fundamentais para acadar unha alta esixencia de fiabilidade (reliability & safety). Estas comprobacións poden ser deshabilitadas para obter unha maior eficiencia. Tamén inclúe facilidades que axudan á verificación de programas. Por esas razóns, é amplamente utilizado en sistemas críticos como en aviación, armamento e naves espaciais.

## Historia 
miniatura|Ada Lovelace (1815-1852)
Nos anos 70, o Departamento de Defensa dos Estados Unidos decatouse de que estaban a usar un gran número de linguaxes de programación diferentes nos seus proxectos, algúns dos cales eran propietarios ou estaban xa obsoletos. En 1975 formouse o Grupo de Traballo en Linguaxes de Orde máis Alta (Higher Order Language Working Group) coa intención de reducir este número e crear unha linguaxe de programación xeralmente apropiada segundo os requirimentos do departamento. O resultado foi Ada. O número total de linguaxes de programación de alto nivel utilizadas para eses proxectos foron de 450 entre 1983 e 1996.

O grupo de traballo creou unha serie de documentos de requirimentos da linguaxe: Strawman, Tinman, Ironman e Steelman. Algunhas linguaxes existentes foron revisadas formalmente, pero o equipo concluíu en 1977 que ningunha linguaxe cumpría tales especificacións.

Publicáronse peticións de propostas dunha nova linguaxe de programación, e contratouse a catro emmpresas para desenvolver as súas propostas baixo os nomes de Vermello (Red, de Intermetrics), Verde (Green, de Cii Honeywell Bull), Azul (Blue, de SofTEch) e Amarelo (Yellow, de SRI International). En maio de 1979, a proposta Verde, deseñada por Jean Ichbiah en Cii Honeywell Bull foi escollida e déuselle o nome de Ada. Esta proposta foi a sucesora da linguaxe LIS que Ichbiah e o seu grupo desenvolveran nos anos 70.

O Manual de referencia do estándar militar foi aprobado o 10 de decembro de 1980, o día do aniversario de Ada Lovelace.
(ANSI/MIL-STD 1815 
O departamento de defensa requiría o uso de Ada para todo proxecto onde o código fonte supuxese máis do 30% do resultado.

## Forte estandarizacion 
**Estandarizacion da linguaxe**: A linguaxe Ada converteuse nun estándar ANSI en 1983 (ANSI/MIL-STD 1815  (1815 fora o ano de nacemento de Ada Lovelace)). Converteuse nun estándar ISO en 1987 (ISO-8652:1987). Esta versión da linguaxe e comunmente coñecida como Ada 83, polo ano da súa aceptación no ANSI.
Ada 95 é o último estándar de ADA. Foi aceptado en febreiro de 1995 (facendo de Ada 95 a primeira linguaxe de programación orientada a obxectos definida nun estándar ISO). Para axudar coa revisión do estándar e a futura aceptación a forza aérea dos Estados Unidos financiou o desenvolvemento do compilador de GNAT.

O traballo continúa mellorando e actualizando os contidos técnicos da linguaxe de programación Ada. En outubro de 2001 publicouse unha errata técnica de Ada 95. Actualmente estase a traballar para facer un engadido a Ada 95, que se espera para 2005.

**Outros estándares asociados**: á parte do estándar da linguaxe en si, existen outros asociados, tales como:
* Estandarización de probas de validez de Compiladores: existe un estándar que define que e como se comproba que un compilador de Ada cumpre todos os requisitos.
* Estandarización de Obxectos compilados: existe un estándar que permite examinar e navegar polos datos/estruturas definidas nos ficheiros resultantes da compilacion (sen ter os fontes).

## Utilización para contornas gráficas 
Existe unha librería gráfica GTKAda moderna en Ada95 que, baseada en GTK (que é utilizado pola contorna Gnome), permite definir e manexar contornas gráficas (xanelas, botóns, etc).

## "Ola, mundo!" en Ada 
Un exemplo típico para mostrar a sintaxe dunha linguaxe é o programa ¡Ola, mundo!. Existen formas de abreviar "Ada.Text_IO.Put_Line", pero non son utilizadas para facilitar a comprensión do exemplo.

```ada
with Ada.Text_Io; 
 
 procedure Ola is
 begin
    Ada.Text_Io.Put_Line("Ola mundo!");
 end Ola;
```

## Véxase tamén 
### Outros artigos 
* Ada Information Clearinghouse
* Special Interest Group on Ada
* Aunit
* GtkAda
* GNAT
* JGNAT
* GNAT Programming System (GPS)
* XML/Ada e XML4Ada95
* PolyORB
* ObjectAda
* High Integrity Systems
* SPARK
* VHDL
* Ruby

### Bibliografía 
* Jan Skansholm: *Ada 95 From the Beginning*, Addison-Wesley, ISBN 0-201-40376-5
* John Barnes: *Programming in Ada plus Language Reference Manual*, Addison-Wesley, ISBN 0-201-56539-0
* John Barnes: *Programming in Ada 95*, Addison-Wesley, ISBN 0-201-34293-6
* John Barnes: *High Integrity Ada: The SPARK Approach*, Addison-Wesley, ISBN 0-201-17517-7
* John Barnes: *High Integrity Software: The SPARK Approach to Safety and Security*, Addison-Wesley, ISBN 0-321-13616-0
* Dean W. Gonzalez: ''Ada Programmer's Handbook*, Benjamin-Cummings Publishing Company, ISBN 0-8053-2529-8
* M. Ben-Ari: *Ada for Software Engineers*, John Wiley & Sons, ISBN 0-471-97912-0
* Norman Cohen: *Ada as a Second Language*, McGraw-Hill Science/Engineering/Math, ISBN 0-07-011607-5
* Alan Burns, Andy Wellings: *Real-Time Systems and Programming Languages. Ada 95, Real-Time Java and Real-Time POSIX.*, Addison-Wesley, ISBN 0-201-72988-1
* Alan Burns, Andy Wellings: *Concurrency in Ada*, Cambridge University Press, ISBN 0-521-62911-X
* Colin Atkinson: *Object-Oriented Reuse, Concurrency and Distribution: An Ada-Based Approach*, Addison-Wesley, ISBN 0-201-56527-7
* Grady Booch, Doug Bryan: *Software Engineering with Ada*, Addison-Wesley, ISBN 0-8053-0608-0
* Daniel Stubbs, Neil W. Webre: *Data Structures with Abstract Data Types and Ada*, Brooks Cole, ISBN 0-534-14448-9
* Pascal Ledru: *Distributed Programming in Ada with Protected Objects*, Dissertation.com, ISBN 1-58112-034-6
* Fintan Culwin: *Ada, a Developmental Approach*, Prentice Hall, ISBN 0-13-264680-3
* John English, Fintan Culwin: *Ada 95 the Craft of Object Oriented Programming*, Prentice Hall, ISBN 0-13-230350-7
* David A. Wheeler: *Ada 95*, Springer-Verlag, ISBN 0-387-94801-5
* David R. Musser, Alexander Stepanov: *The Ada Generic Library: Linear List Processing Packages*, Springer-Verlag, ISBN 0-387-97133-5
* Michael B. Feldman: *Software Construction and Data Structures with Ada 95*, Addison-Wesley, ISBN 0-201-88795-9
* Simon Johnston: *Ada95 for C and C++ Programmers*, Addison-Wesley, ISBN 0-201-40363-3
* Michael B. Feldman, Elliot B. Koffman: *Ada 95*, Addison-Wesley, ISBN 0-201-36123-X
* Nell Dale, Chip Weems, John McCormick: *Programming and Problem Solving with Ada 95*, Jones & Bartlett Publishers, ISBN 0-7637-0293-5
* Nell Dale, Susan Lilly, John McCormick: *Ada Plus Data Structures: An Object-Based Approach*, Jones & Bartlett Publishers, ISBN 0-669-41676-2
* Bruce C. Krell: *Developing With Ada: Life-Cycle Methods*, Bantam Dell Pub Group, ISBN 0-553-09102-6
* Judy Bishop: *Distributed Ada: Developments and Experiences*, Cambridge University Press, ISBN 0-521-39251-9
* Bo Sanden: *Software Systems Construction With Examples in Ada*, Prentice Hall, ISBN 0-13-030834-X
* Bruce Hillam: *Introduction to Abstract Data Types Using Ada*, Prentice Hall, ISBN 0-13-045949-6
* David Rudd: *Introduction to Software Design and Development With Ada*, Brooks Cole, ISBN 0-314-02829-3
* Ian C. Pyle: *Developing Safety Systems: A Guide Using Ada*, Prentice Hall, ISBN 0-13-204298-3
* Louis Baker: *Artificial Intelligence With Ada*, McGraw-Hill, ISBN 0-07-003350-1
* Alan Burns, Andy Wellings: *Hrt-Hood: A Structured Design Method for Hard Real-Time Ada Systems*, North-Holland, ISBN 0-444-82164-3
* Walter Savitch, Charles Peterson: *Ada: An Introduction to the Art and Science of Programming*, Benjamin-Cummings Publishing Company, ISBN 0-8053-7070-6
* Mark Allen Weiss: *Data Structures and Algorithm Analysis in Ada*, Benjamin-Cummings Publishing Company, ISBN 0-8053-9055-3

### Ligazóns externas 
As seguintes ligazóns apuntan a páxinas en inglés.

* Ada Home - *The'' Web Site for Ada
* ACM SIGAda
* GNU Ada Homepage
* Ada World
* AdaPower
* Citations from CiteSeer
* [news:comp.lang.ada Forum]
* Ada Tutorial
* Projects Using Ada