| Lista Articulos: [0-C] [C-I] [I-P] [P-Z] | Todas las categorías | Página aleatoria | Lo que enlaza aquí | ||||||
Ada es un lenguaje de programación estructurado y tipado estáticamente que fue diseñado por Jean Ichbiah de Cii Honeywell Bull por encargo del Departamento de Defensa de los EE.UU.. Es un lenguaje multipropósito, orientado a objetos y concurrente, pudiendo llegar desde la facilidad de Pascal a la flexibilidad de C++.
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 primitiva rendevouz.
Ada se usa principalmente en entornos en los que se necesita una gran seguridad y confiabilidad como la defensa, la aeronáutica (Boeing o Airbus), la gestión del tráfico aéreo (como Indra en España) y el espacio entre otros.
| Tabla de contenidos |
El lenguaje fue diseñado bajo encargo del Departamento de Defensa de los Estados Unidos (DoD). Durante los años 1970, este departamento tenía proyectos en una infinidad de lenguajes y estaba gastando mucho dinero en software. Para solucionarlo se buscó un lenguaje único que cumpliese unas ciertas normas recogidas en el documento Steelman. Ningún lenguaje de la época las cumplía 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 por Jean Ichbiah de Cii Honeywell Bull, y se le dió 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 nombre se eligió en conmemoración de la condesa Ada Lovelace, hija de Lord Byron, a quien se considera la primera programadora de la Historia, por su relación con Charles Babbage, creador de la máquina analítica.
El lenguaje se convirtió en un estándar de ANSI en 1983 (ANSI/MIL-STD 1815) y un estándar ISO en 1987 (ISO-8652:1987).
El Departamento de Defensa de los EE. UU. y los ministerios equivalentes de varios países de la OTAN exigían el uso de este lenguaje en los proyectos que contrataban (el Ada mandate). La obligatoriedad en el caso de Estados Unidos terminó en 1997, cuando el DoD comenzó a usar productos COTS (commercial off the shelf).
Hasta la fecha la ISO ha publicado dos ediciones del estándar de Ada: la original Ada 83 y la última Ada 95 (ISO/IEC 8652:1995). A diferencia de otros estándares de ISO, el de Ada es libremente reproducible [1] .
Ada 83 incluía conceptos novedosos como las excepciones y la programación genérica. Por sus capacidades de encapsulación y polimorfismo paramétrico (genéricos), se podía considerar ya en esa época un lenguaje basado en objetos.
La revisión Ada 95 fue diseñada por Tucker Taft de Intermetrics entre 1992 y 1995. Esta edición entre otras cosas añadió la capacidad de herencia y el despachado dinámico (dynamic dispatching) para completar sus características de lenguaje orientado a objetos. De hecho fue el primer lenguaje orientado a objetos estandarizado por ISO.
Actualmente se está trabajando en la siguiente revisión que seguramente se publicará durante 2005.
Un compilador de Ada muy usado es GNAT, originalmente desarrollado por la Universidad de Nueva York bajo patrocinio del DoD. Está basado en la tecnología de GCC y es software libre. Actualmente está mantenido por Ada Core Technologies, empresa que ofrece soporte y servicios sobre el compilador.
Existen otros compiladores comerciales.
El típico ejemplo de Hola mundo en Ada es:
with Ada.Text_IO; use Ada.Text_IO;
procedure Hola_Mundo is
begin
Put_Line ("Hola Mundo");
end;
Aquí debajo hay un ejemplo más elaborado (función de Ackermann) de código fuente escrito en Ada, para mostrar algunos de sus rasgos sintácticos.
with Ada.Command_Line; use Ada.Command_Line;
with Ada.Text_IO; use Ada.Text_IO;
procedure Ackermann is
function Ack (x : Integer; y: Integer) return Integer is
begin
if x = 0 then
return y + 1;
elsif y = 0 then
return Ack(x - 1, 1);
else
return Ack(x - 1, Ack(x, y - 1));
end if;
end Ack;
x, y, a : Integer;
begin
if Argument_Count = 2 then
x := Integer'Value (Argument(1));
y := Integer'Value (Argument(2));
elsif Argument_Count = 1 then
x := 3;
y := Integer'Value (Argument(1));
else
x := 3;
y := 3;
end if;
a := Ack (x, y);
Put ("Ack (" & Integer'Image (x) & ",");
Put_Line (Integer'Image (y) & ") = " & Integer'Image (a));
end Ackermann;
Entre las características que encontramos en este ejemplo se puede destacar:
Ver ADA
| Lenguajes de programación |
|---|
| Ada | Algol | Awk | Basic| C | C++ | C# | Cobol | Delphi | Eiffel | Forth | Fortran | Java | Lisp | Logo | Modula-2 | Oberon | Ocaml | Pascal | PHP | Perl | Prolog | Python | Ruby | Smalltalk | Otros lenguajes... |


