Ada er et højniveau, struktureret programmeringssprog, der primært er designet til systemprogrammering og realtidsapplikationer. Det blev opkaldt efter Ada Lovelace, som ofte krediteres som en af de første computerprogrammører. Ada er kendt for sin stærke typning, modularitet og støtte til samtidige programmering, hvilket gør det velegnet til kritiske systemer i industrier som luftfart, bilindustrien og forsvar.
Ada blev skabt i slutningen af 1970'erne under et projekt finansieret af det amerikanske forsvarsministerium (DoD) for at imødekomme behovet for et standardiseret programmeringssprog til indlejrede og realtidssystemer. Sproget blev designet af et team ledet af Jean Ichbiah og blev officielt udgivet i 1983. Et af de primære mål var at reducere mangfoldigheden af programmeringssprog, der blev brugt i forsvarssystemer, hvilket dermed forbedrede vedligeholdelse og pålidelighed.
Ada henter inspiration fra flere programmeringssprog, herunder Pascal, C og ALGOL. Dets design inkorporerer funktioner fra disse sprog, såsom stærk typning og struktureret programmering. Adas udvikling svarede også på de udfordringer, som C præsenterede, især med hensyn til typesikkerhed og systemniveau programmeringsstøtte.
Siden sin oprettelse har Ada gennemgået flere revisioner, hvor Ada 83 blev efterfulgt af Ada 95, Ada 2005 og den seneste standard, Ada 2012. Disse revisioner introducerede nye funktioner, såsom objektorienteret programmering og forbedret støtte til realtidssystemer. I dag vedligeholdes Ada af Ada Resource Association og fortsætter med at blive brugt, især i kritiske systemer, hvor sikkerhed og pålidelighed er altafgørende.
Ada håndhæver streng typekontrol, hvilket hjælper med at fange fejl ved kompileringstid snarere end ved kørselstid.
type Integer_Type is range 0 .. 100;
variable Count : Integer_Type;
Count := 50; -- Dette er gyldigt
Count := 150; -- Dette vil forårsage en kompileringstid fejl
Sproget understøtter modulær programmering gennem brug af pakker, som indkapsler relaterede typer, data og procedurer.
package Geometry is
type Point is record
X : Float;
Y : Float;
end record;
procedure Move(Point : in out Point; DeltaX, DeltaY : Float);
end Geometry;
Ada har indbygget støtte til samtidig programmering via opgaver, hvilket muliggør udførelsen af flere processer samtidigt.
task My_Task is
begin
-- opgavekode
end My_Task;
Ada tilbyder robuste undtagelseshåndteringsmekanismer, der gør det muligt for udviklere at håndtere runtime-fejl på en elegant måde.
begin
-- kode der kan rejse en undtagelse
exception
when Constraint_Error =>
-- håndter fejlen
end;
Ada understøtter objektorienteret programmering med funktioner som arv og polymorfi.
type Vehicle is tagged null record;
type Car is new Vehicle with record
Doors : Integer;
end record;
procedure Display(V : Vehicle) is
begin
-- kode til at vise køretøjsinformation
end Display;
Generiske tillader udviklere at skrive fleksibel og genanvendelig kode ved at definere parametrede typer og underprogrammer.
generic
type Item_Type is private;
package Container is
procedure Add(Item : Item_Type);
end Container;
Ada understøtter enumerationstyper, som definerer en type med et sæt navngivne værdier.
type Color is (Red, Green, Blue);
Kontrollerede typer tillader finjusteret kontrol over oprettelse og destruktion af objekter.
type My_Controlled_Type is new Ada.Finalization.Controlled with record
Value : Integer;
end record;
Ada tilbyder attributter, der kan bruges til at få information om typer eller objekter.
X : Integer := 10;
Size : Natural := X'Size; -- Få størrelsen af et heltal
Ada lægger vægt på konceptet hukommelsesstyring gennem eksplicit kontrol over datalagring og tildeling.
declare
type Record_Type is record
A : Integer;
B : Float;
end record;
My_Record : Record_Type;
end;
Ada kan kompileres ved hjælp af forskellige kompilatorer, hvor GNAT er en af de mest anvendte. GNAT er en del af GNU Compiler Collection (GCC) og tilbyder en gratis og open-source måde at kompilere Ada-kode på.
Der findes flere integrerede udviklingsmiljøer (IDE'er) tilgængelige for Ada, såsom GNAT Studio, AdaGIDE og GPS (GNAT Programming Studio). Disse værktøjer tilbyder funktioner som syntaksfremhævning, kodefuldførelse og fejlfinding.
For at bygge et Ada-projekt ved hjælp af GNAT, ville man typisk skrive Ada-kildekoden og derefter bruge følgende kommandoer i terminalen:
gnatmake my_program.adb
Denne kommando kompilerer Ada-kildefilen og genererer et eksekverbart program.
Ada bruges primært i sikkerhedskritiske systemer, som inkluderer, men ikke er begrænset til:
Dets pålidelighed og vedligeholdelighed gør det til et foretrukket valg i disse sektorer.
Selvom Ada deler nogle ligheder med andre programmeringssprog, skiller det sig ud for sin vægt på sikkerhed og pålidelighed.
Når man arbejder med kilde-til-kilde oversættelse, er der specifikke værktøjer, der kan hjælpe med at konvertere Ada-kode til andre programmeringssprog. For eksempel kan værktøjer som Gnat2Go bruges til at oversætte Ada-kode til Go. Dog skal der tages hensyn til at sikre, at funktionaliteten og sikkerhedsfunktionerne i den oprindelige Ada-kode bevares under oversættelsesprocessen.
Nogle almindelige værktøjer til kilde-til-kilde oversættelse inkluderer: