Ada es un lenguaje de programación
orientado a objetos y
fuertemente tipado de forma estática que fue diseñado por Jean Ichbiah de CII
Honeywell Bull por encargo del Departamento de Defensa de los Estados Unidos.
Es un lenguaje multipropósito, orientado a objetos y concurrente, pudiendo
llegar desde la facilidad de Pascal hasta 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
rendezvous.
Ada se usa principalmente en entornos en los que se necesita una
gran seguridad y fiabilidad como la defensa, la aeronáutica (Boeing o Airbus),
la gestión del tráfico aéreo (como Indra en España)
y la industria aeroespacial entre otros. 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. 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 por Jean Ichbiah de 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 nombre se eligió en
conmemoración de Ada Lovelace (Lady
Ada Augusta Byron King (1815-1852) Condesa de Lovelace), hija del poeta Lord
George Byron, a quien se considera la primera programadora de la Historia, por
su colaboración y 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 DoD 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). Ada ha sido utilizado por la NASA en sistemas VAX. Ada
es un lenguaje de programación orientado a objetos y fuertemente tipado de
forma estática que fue diseñado por Jean Ichbiah de CII Honeywell Bull por
encargo del Departamento de Defensa de los Estados Unidos. Es un lenguaje
multipropósito, orientado a objetos y concurrente, pudiendo llegar desde la
facilidad de Pascal hasta 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 Rendezvous. Ada se usa principalmente
en entornos en los que se necesita una gran seguridad y fiabilidad como la
defensa, la aeronáutica (Boeing o Airbus), la gestión del tráfico aéreo (como
Indra en España) y la industria aeroespacial entre otros. La sintaxis,
inspirada en Pascal,
es bastante legible incluso para personas que no conozcan el lenguaje. Es un
lenguaje que no escatima en la longitud de las palabras clave, en la filosofía
de que un programa se escribe una vez, se modifica decenas de veces y se lee
miles de veces (legibilidad es más importante que rapidez de escritura). Es
indiferente el uso de mayúsculas y minúsculas en los identificadores y palabras
claves, es decir es un lenguaje case-insensitive. En Ada, todo el programa es
un único procedimiento, que puede contener subprogramas (procedimientos o
funciones). Cada sentencia se cierra con end qué_cerramos. Es un modo de evitar
errores y facilitar la lectura. No es necesario hacerlo en el caso de subprogramas, aunque todos los
manuales lo aconsejan y casi todos los programadores de Ada lo hacen. El
operador de asignación es :=, el de igualdad =. A los programadores de C y similares les puede confundir este
rasgo inspirado en Pascal.
La sintaxis de atributos predefinidos es Objeto'Atributo (o Tipo'Atributo)
(nota: esto sólo aplica a atributos predefinidos por el lenguaje, ya que no es
el concepto de atributo típico de OOP).
Se distingue entre "procedimientos" (subrutinas que no devuelven
ningún valor pero pueden modificar sus parámetros) y "funciones"
(subrutinas que devuelven un valor y no modifican los parámetros). Muchos
lenguajes de programación no hacen esta distinción. Las funciones de Ada
favorecen la seguridad al reducir los posibles efectos colaterales, pues no
pueden tener parámetros in out.
Legibilidad
Los programas profesionales se leen
muchas más veces de las que se escriben, por tanto, conviene evitar una
notación que permita escribir el programa fácilmente, pero que sea difícil
leerlo excepto, quizás, por el autor original y no mucho tiempo después de
escribirlo.
Tipado fuerte
Esto asegura que todo objeto tenga un
conjunto de valores que esté claramente definido e impide la confusión entre
conceptos lógicamente distintos. Como consecuencia, el compilador detecta más
errores que en otros lenguajes.
Construcción de grandes programas
Se necesitan mecanismos de encapsulado
para compilar separadamente y para gestionar bibliotecas de cara a crear
programas transportables y mantenibles de cualquier tamaño.
Manejo de excepciones
Los programas reales raramente son
totalmente correctos. Es necesario proporcionar medios para que el programa se
pueda construir en capas y por partes, de tal forma que se puedan limitar las
consecuencias de los errores que se presenten en cualquiera de las partes.
Abstracción de datos
Se puede obtener mayor
transportabilidad y mejor mantenimiento si se pueden separar los detalles de la
representación de los datos y las especificaciones de las operaciones lógicas
sobre los mismos.
Procesamiento paralelo
Para muchas aplicaciones es importante
que el programa se pueda implementar como una serie de actividades paralelas.
Dotando al lenguaje de estos mecanismos, se evita tener que añadirlos por medio
de llamadas al sistema operativo, con lo que se consigue mayor
transportabilidad y fiabilidad.
Unidades genéricas
En muchos casos, la lógica de parte de
un programa es independiente de los tipos de los valores que estén siendo
manipulados. Para ello, se necesita un mecanismo que permita la creación de
piezas de programa similares a partir de un único original. Esto es
especialmente útil para la creación de bibliotecas.
Alfabeto
El alfabeto de Ada consta de:
§ Letras mayúsculas: A, ..., Z y
minúsculas: a, ..., z.
§ Dígitos: 0, ..., 9.
§ Caracteres especiales.
Es de destacar que en Ada 95 se admiten
caracteres como 'Ñ', 'Ç' y vocales acentuadas ya que se permiten los 256
caracteres comprendidos en ISO Latin-1 . El alfabeto de minúsculas puede usarse
en vez de o junto con el alfabeto de mayúsculas, pero se considera que los dos
son idénticos (a excepción de las cadenas de caracteres y literales tipo
carácter).
Ejemplo:
Éste es el típico "Hola Mundo" escrito en Ada:
with Ada.Text_IO;
procedure
Hola_Mundo is
begin
Ada.Text_IO.Put("¡Hola,
mundo!");
end
Hola_Mundo;
No hay comentarios:
Publicar un comentario