# Programación en Ada/La biblioteca
## La biblioteca Ada (unidades y subunidades)

La biblioteca Ada es la piedra angular de este lenguaje en la construcción de sistemas grandes, pero fiables.
Los programas grandes deben ser descompuestos en subsistemas, cada uno de ellos con su propia estructura interna. La respuesta a este requerimiento en Ada es la biblioteca Ada y tiene las siguientes características:
* Integrado en el lenguaje.
* Facilita la creación y mantenimiento de un subsistema, actuando como repositorio estructurado de todos sus componentes.
* Ofrece a los programas que hacen uso de un subsistema un interfaz fácil de utilizar y que es selectivo a componentes internos.
Los compiladores de Ada toman el código fuente y la biblioteca referenciada y producen un código objeto y, además, una biblioteca actualizada con dicho código objeto. Es como si la biblioteca Ada "recordara" las compilaciones que se realizan en el sistema. A diferencia de los compiladores de otros lenguajes, que únicamente generan el código objeto sin incorporarlo a ninguna biblioteca.
El concepto de incorporación a la biblioteca no está definido por el lenguaje Ada, sino por el propio compilador. Por ejemplo, en la implementación de Ada de GNU denominada GNAT, la biblioteca se implementa sobre un sistema de ficheros. La compilación de un fichero que contiene, por ejemplo, un procedimiento, produce un fichero objeto y una colección de enlaces al resto de la biblioteca (fichero con la extensión .ali de Ada Library Information), dentro del mismo directorio. El compilador puede tener ahora dos "vistas" diferentes de la biblioteca Ada, una con el procedimiento incorporado y otra sin él.
La estructura formal de un programa Ada es la siguiente:
* Un programa es un conjunto de compilaciones. El concepto de compilación no está especificado por el lenguaje Ada, pero suele ser un fichero fuente.
* Una compilación es una secuencia de unidades de compilación. Por ejemplo, una compilación con seis unidades de compilación puede ser un fichero con cuatro procedimientos y dos paquetes. El número de unidades de compilación en una compilación puede estar limitado por la implementación. Por ejemplo, el compilador GNAT únicamente permite una unidad de compilación por cada compilación.
* Una unidad de compilación puede ser bien una unidad de biblioteca o bien una subunidad.
* Una unidad de biblioteca es la declaración o cuerpo de un procedimiento o de un paquete.
* Una subunidad es una parte de una unidad de biblioteca que se desea separar y compilar por separado.
La biblioteca se alimenta de los programas, que no son más que un conjunto de unidades de compilación que se suman a la biblioteca cuando se compila el programa. Cuando un programa está correctamente construido, se incorpora a la biblioteca. Los programas nuevos utilizan el material compilado ya disponible en la propia biblioteca.
Hay que tener presente que los programas se escriben por partes que son compiladas por separado y luego se enlazan para dar el resultado final. Ada proporciona dos mecanismos para ello:
* Unidades de biblioteca: mecanismo ascendente.
* Subunidades: mecanismo descendente.

### Subsecciones

* Unidades de biblioteca
* Unidades hijas
* Subunidades
* Compilación separada y dependiente