**Ada** je robustní silně typovaný programovací jazyk vyvinutý v 70. a 80. letech na objednávku amerického ministerstva obrany. Je primárně určen pro programování velkých a *mission-critical* projektů, přesto se jedná o univerzální programovací jazyk. Aktuální verze, Ada 95, již obsahuje podporu pro <wikipedia:cs:objektově%20orientované%20programování>.

Byl pojmenován po „historicky první programátorce“ <wikipedia:cs:Ada%2C%20Lady%20Lovelace>.

## Hlavní rysy ##

{{TODO|Zatím jen heslovitě.}}

### Čitelnost ###

### Silný typový systém ###

### Programování ve velkém ###

Toto není ani tak rys, jako spíš cíl. Rysy, které se jej snaží naplnit jsou **zapouzdření** a **separátní kompilace**. Zapouzdření se Ada snaží dosáhout nejen uplatňováním stejnojmenné zásady OOP, ale už od své první verze prostřednictím tzv. balíků (*packages*), které komunikují prostřednictvím jasně vymezeného rozhraní.

### Datová abstrakce ###

### Objektově orientované programování ###

### Paralelismus (''tasking'', vícevláknovost) ###

### Generické typy (šablony) ###

### Portabilita a bezpečnost ###

Toto jsou také spíš cíle. Nejsou reprezentovány jednou konkrétní vymožeností jazyka, naopak bylo na ně myšleno při návrhu všech rysů Ady. Dobrá přenositelnost je zajištěna například způsobem zachazení s typy a možnostmi při jejich definici nebo zahrnutím podpory paralelismu. Bezpečnost je podporována množstvím jednak běhových kontrol a zejména pak kontrol při kompilaci.

## Historie ##

### Motivace ###

V polovině 70. let si americké ministerstvo obrany začalo uvědomovat, že utrací příliš mnoho prostředků na vývoj a údržbu softwaru. Jednou z příčin bylo to, že použitý programovací jazyk se často lišil projekt od projektu, například proto, že se psalo hodně programů pro tzv. vestavěné (*embedded*) systémy (*systémy, které jsou součástí nějakého většího celku, například chemičky, rychlovlaku nebo atomové bomby*). Ministerstvo se tedy rozhodlo nahradit co nejvíce techto jazyků jediným jazykem, žádného vhodného kandidáta splňujícího všechny jejich požadavky však nenašlo, a proto bylo rozhodnuto o vývoji nového jazyka, Ady.

### Vývoj a současnost ###

Základním požadavkem pro použití ve vestavěných systémech byla portabilita, neméně důležitými požadavky byla bezpečnost, spolehlivost a podpora softwarového inženýrství (zejména tvorba "znovu-použitelných" komponent a snadná údržba stávajícího kódu).

Vývoj probíhal nejdříve paralelně formou výběrového řízení, poté byl dopracováván vítězný návrh. Tím byl návrh skupiny ze společnosti <wikipedia:Groupe%20Bull> pod vedením francouze jménem <wikipedia:Jean%20Ichbiah>. Vývoj vyústil v roce 1983 v podobě standardu ANSI, který později adoptovala i organizace ISO. Tato první verze bývá označována jako Ada 83.

Ada 83 byla obsáhlým a velmi dobře přenositelným jazykem, ale na některé specializované úkoly ještě nestačila, proto byla v devadesátých letech vyvinuta nová verze, Ada 95. Aby se předešlo nadměrnému růstu specifikace jazyka, bylo definováno jádro jazyka (*Core language*) a několik specializovaných nadstaveb (*specialized annexes - Systems Programming, Real-Time Systems, ...*). Implementace těchto nadstaveb je volitelná. Další podstatné změny byly cíleny na zlepšení flexibility. Byla přidána podpora pro objektově orientované programování, dále byly vylepšeny možností sdílení dat při paralelním programování. Ada 95 zůstává, až na velmi řídké případy, kompatibiliní s předchozí verzí.

Ada se v současnosti [používá](http://www.seas.gwu.edu/%7Emfeldman/ada-project-summary.html) k vývoji softwaru pro dopravní a vojenská letadla, systémy řízení letecké a vlakové dopravy a mnohých dalších systémů s požadovanou vysokou integritou, ale jako univerzální programovací jazyk se moc neprosadila. V této souvislosti a vzhledem k motivaci pro vznik jazyka se někdy o Adě mluví jako o <wcs:Esperanto> programování, neboť do značné míry sdílejí svůj osud.

### Historie v datech ###

* 1974 – DoD (*<wikipedia:United%20States%20Department%20of%20Defense>*) zamýšlí vyvinout nový jazyk
* 1983 – vydána Ada 83 – ANSI standard
* 1987 – vydán odpovídající ISO standard
* 1988 – zahájen projekt vývoje nové verze Ada 9X
* 1995 – vydána Ada 95 – ANSI/ISO standard – {*přidáno: OOP, specializované moduly, ...*}
* 2006 – Ada 2006 – {*bude přidáno: podpora Unicode (i ve zdrojovém kódu), rozhraní (*interfaces*) ala java, ...*}

## Detaily ##

{{TODO|}}

## Kritika ##

Ada, jakožto univerzální jazyk, se navzdory mnohým výborným vlastnostem příliš nerozšířila. Následující nevýhody tomu mohly dopomoci:

* Kontrola integritních omezení při překladu dělá problémy zejména začínajícím programátorům, kteří ji považují za obtěžující
* Vyžaduje znalost relativně velké části jazyka i pro psaní poměrně jednoduchých programů malého rozsahu
* Podpora OOP není zrovna nejsilnější a má nezvyklou syntaxi i sémantiku

## Literatura ##

*John Barnes, **Programming in Ada 95**, 2nd edition (Addison-Wesley 1998, ISBN 0-201-34293-6)

:*(v knihovně na Malé Straně jich mají asi pět)*

## Externí odkazy ##

### Česky ###

**Miniseriál na rootu:**

1. [Bezpečné programování ala Ada](http://www.root.cz/clanky/bezpecne-programovani-ala-ada/) – úvod, typový systém, integritní omezení
1. [Příjemné programování ala Ada](http://www.root.cz/clanky/prijemne-programovani-ala-ada/) – atributy typů a jiných objektů, pole, vstupní a výstupní parametry procedur a funkcí
1. [Copaté programování](http://www.root.cz/clanky/copate-programovani/) (ala Ada) – paralelní programování z pohledu Ady a jeho podpora v jazyce

### Anglicky ###

*Wikipedia: <wikipedia:Ada%20programming%20language>
*Tutorial na wikibooks: <wikibooks:Programming:Ada>
