# Ada (programmeertaal)

Ada is een gestructureerde programmeertaal. De taal is in 1979 in opdracht van het Amerikaanse ministerie van defensie ontworpen door Jean Ichbiah van Honeywell Bull.
Ada is naar Lady Ada Lovelace genoemd, de wiskundig geschoolde assistente van Charles Babbage, die halverwege de 19e eeuw een uitgeschreven plan formuleerde voor het gebruik van diens analytische machine voor het berekenen van Bernoulligetallen en op grond daarvan als 's werelds eerste computerprogrammeur wordt beschouwd.

## Eigenschappen

Ada was van origine bedoeld voor embedded systemen en wordt hiervoor nog steeds veel gebruikt. De Ada 95 revisie, door Tucker ontworpen tussen 1992 en 1995, bevat een verbeterde ondersteuning voor numerieke en financiële mogelijkheden.
Er is in Ada type checking geïmplementeerd en gedistribueerd programmeren is mogelijk. Objectgeoriënteerd programmeren is sinds Ada 95 geïmplementeerd.
Ada implementaties gebruiken meestal geen garbage collection voor hun geheugenbeheer. Ada voorziet in een beperkte vorm van region-based storage management dat gebruikt kan worden om sommige gevallen waarin niet-gealloceerd geheugen wordt aangesproken te detecteren tijdens de compilatie. Ada bevat run-time checks op het gebruik van niet-gealloceerd geheugen en bufferoverloop. Deze checks kunnen als dat nodig is worden uitgeschakeld, bijvoorbeeld om de verwerking efficiënter te doen verlopen.
De taal bevat faciliteiten die helpen bij het verifiëren van een programma. Om deze redenen wordt Ada bijvoorbeeld veel in de luchtvaarttechniek gebruikt, waar geen fouten mogen voorkomen.
De definitie van Ada is vrij beschikbaar, wat ongewoon is voor een standaard van de Internationale Organisatie voor Standaardisatie. Een van de gevolgen hiervan is dat het standaard document, bekend als de Reference Manual, het gebruikelijke naslagwerk voor Ada-programmeurs is. Voor veel andere computertalen Is het gewenst of noodzakelijk een leerboek te gebruiken.

## Geschiedenis

Het Amerikaanse ministerie van defensie was in de jaren 70 bezorgd over het grote aantal verschillende programmeertalen dat voor militaire projecten werd gebruikt. Er werd daarvoor in 1975 een werkgroep gevormd met de opdracht om een manier te vinden dit aantal te verminderen.
De werkgroep schreef een serie documenten met eisen waaraan een standaardtaal moest voldoen. Er werden veel verschillende talen onderzocht, maar in 1977 concludeerde de werkgroep dat er geen bestaande taal was die aan alle eisen voldeed.
Er werd een aanbesteding uitgeschreven voor een nieuwe programmeertaal en vier bedrijven werden ingehuurd om hun voorstellen verder uit te werken. Het voorstel, ontworpen door Jean Ichbiah van Honeywell Bull, werd in mei 1979 gekozen. Het kreeg naam Ada. De gebruikershandleiding werd op 10 december 1980 goedgekeurd, de verjaardag van Ada Lovelace.
Het Amerikaanse ministerie van defensie eiste voor ieder project dat zij financierden, dat wanneer er meer dan 30% nieuwe code uit zou komen, er in Ada werd geprogrammeerd. Er werden vaak uitzonderingen op deze regel toegestaan. De regel werd in 1997 afgeschaft.
De taal werd in 1983 een ANSI-standaard en in 1987 een ISO-standaard. Deze versie van 1983 is bekend als Ada 83, naar het jaar dat het een ANSI-standaard werd. Ada 95, de gecombineerde ISO/ANSI-standaard is de nieuwste Ada-standaard. Om de nieuwe standaard te bevorderen financierde de Amerikaanse luchtmacht de ontwikkeling van de GNU-Ada-compiler GNAT.
Het oorspronkelijke doel om het aantal door het Pentagon gebruikte programmeertalen te verminderen is overigens gehaald. Het jaar dat Ada werd geïntroduceerd, in 1983, waren er meer dan 450 hogere programmeertalen in gebruik, dat aantal was in 1996 teruggelopen tot 37.
* 1 2 (en) GCC Wiki. GNAT - Ada compiler, part of GCC. Gearchiveerd op 1 november 2021.
* ↑ Higher Order Language Working Group
* ↑ ANSI/MIL-STD 1815
* ↑ ISO-8652:1987
* ↑ ISO-8652:1995
ABAP · ABC · ActionScript · Ada · Algol · APL · assembleertalen · AWK · B · BASIC · BCPL · C · C++ · C# · Clean · Clipper · COBOL · COMAL · Curry · D · Eiffel · Erlang · F# · Forth · Fortran · Go · Haskell · Icon · J# · Java · Julia · Kotlin · Lisp · Logo · Lua · m4 · ML · Modula-2 · Oberon · Object Pascal · Objective-C · Ocaml · Oz · Pascal · Perl · PHP · PL/I · PL/SQL · Prolog · Prova · Python · Rexx · RPG · Ruby · Rust · SAS · Scala · Scheme · Self · Simula · Smalltalk · Swift · TCL · TypeScript · Vala · Visual Basic · Zig ·