La Enciclopedia Libre Universal en Español dispone de una lista de distribución pública, enciclo@listas.us.es
ADA
Artículo de la Enciclopedia Libre Universal en Español.
En computación es un lenguaje de programación diseñado por el Departamento de Defensa de los Estados Unidos de América en la década de los 70 para unificar el uso de los lenguajes de programación en los proyectos que le fuesen entregados. Es un lenguaje diseñado con la seguridad en mente y es muy personalizable, pudiendo llegar desde la facilidad de PASCAL a la flexibilidad de C.
Su principal característica es que se trata de un lenguaje destinado a la gestión de procesos en tiempo real por lo que los programas de ADA no tienen un principio y un final sino que constituyen un bucle que se ejecuta de forma continua.
Su nombre recuerda a la condesa Ada Lovelace, hija de Lord Byron, a quien se considera el primer programador de la historia, por su relación con Charles Babbage, creador de la máquina analítica. El Departamento de Defensa de los Estados Unidos y los Ministerios equivalentes de varios países europeos exigen la utilización de este lenguaje en los proyectos realizados bajo su patrocinio.
Ada ha sido diseñada de la manera que permita evitar los errores comunes y difíciles para descubrir.
Ada se usa en organizaciones como el Departamento de Defensa Americano (DoD) o Boeing por su filosofía orientada a la ausencia de errores.
Existen los estándares de Ada: más viejo Ada 83 y el nuevo Ada 95, que apoya los objectos.
Ada está apoyada por el compilador GNAT, basado en el GCC.
Abajo hay un ejemplo simple (función de Ackermann) de código fuente escrito en Ada, para monstar sus rasgos principales.
with Ada.Command_Line; use Ada.Command_Line;
with Gnat.Io; use Gnat.Io;
procedure Ackermann is
function ack (x : in integer; y: in 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 (");
Put (x);
Put (",");
Put (y);
Put (") = ");
Put (a);
New_Line;
end Ackermann;
Podemos observar que:
- Todo es case-insensitive. Ya que todo el entorno Unix es case-sensitive, a los programadores de Unix no les gusta este rasgo de Ada.
- Todo el programa es un solo procedimiento, que puede contener subprocedimientos (en este caso: la función ack).
- Para cerrar algo, conviene poner end qúe_cerramos. Es un modo de evitar errores, pero por lo general, solamente nos irrita. No es necesario hacerlo aunque todos los manuales lo aconsejan y casi todos los programas de Ada lo hacen.
- Se atribuye un valor con :=, se compara dos valores con =. A los programadores de C tampoco les gusta este rasgo.
- No existe el equivalente de la función printf, considerada como peligrosa. Aunque las funciones Put i New_Line (del módulo Gnat.Io) son más seguras, son también muy incómodas.
- elsif se escribe junto, a diferencia del C.
- La sintaxis de atributos es objeto'atributo (o clase'atributo) (nota: esto sólo se puede hacer con los objetos predefinidos), en vez de los . o :: más tradicionales. Había una sintaxis parecida en las primeras versiones del Perl.
- Se distingue entre "procedimientos" (en C las funciones que no devuelven ningún valor) y "funciones" (en C, funciones que sí devuelven un valor). Hoy día, la mayoría de lenguajes de programación no lo distingue, aunque son más seguros al impedir los efectos laterales y la distinción sigue haciéndose en el marco teórico de los compiladores.
[escribe] Referencias
Notas