Ada er eit høgnivå, strukturert programmeringsspråk som er designa hovudsakleg for systemprogrammering og sanntidsapplikasjonar. Det vart oppkalla etter Ada Lovelace, som ofte blir kreditert som ein av dei første dataprogrammarane. Ada er kjend for sin sterke typetilvising, modularitet og støtte for parallell programmering, noko som gjer det eigna for kritiske system i bransjar som romfart, bilindustri og forsvar.
Ada vart oppretta på slutten av 1970-talet under eit prosjekt finansiert av det amerikanske forsvarsdepartementet (DoD) for å møte behovet for eit standardisert programmeringsspråk for innebygde og sanntidssystem. Språket vart designa av eit team leia av Jean Ichbiah og vart offisielt lansert i 1983. Eit av hovudmåla var å redusere mangfaldet av programmeringsspråk som vart brukt i forsvarssystem, og dermed auke vedlikehald og påliteligheit.
Ada hentar inspirasjon frå fleire programmeringsspråk, inkludert Pascal, C og ALGOL. Designet inkorporerer funksjonar frå desse språka, som sterk typetilvising og strukturert programmering. Utviklinga av Ada svara også på utfordringane som C førte med seg, spesielt når det gjaldt typesikkerheit og støtte for systemnivå programmering.
Sidan opprettinga har Ada gjennomgått fleire revisjonar, med Ada 83 etterfølgt av Ada 95, Ada 2005, og den nyaste standarden, Ada 2012. Desse revisjonane introduserte nye funksjonar, som objektorientert programmering og betre støtte for sanntidssystem. I dag blir Ada vedlikehaldt av Ada Resource Association og fortset å bli brukt, spesielt i kritiske system der tryggleik og påliteligheit er avgjerande.
Ada håndhevar streng typetesting, som hjelper til med å oppdage feil ved kompilering i staden for ved kjøring.
type Integer_Type is range 0 .. 100;
variable Count : Integer_Type;
Count := 50; -- Dette er gyldig
Count := 150; -- Dette vil føre til ein kompilering-feil
Språket støttar modulær programmering gjennom bruk av pakkar, som innkapslar relaterte typar, data og prosedyrar.
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 innebygd støtte for parallell programmering via oppgåver, som tillèt utføring av fleire prosessar samtidig.
task My_Task is
begin
-- oppgåvekode
end My_Task;
Ada tilbyr robuste mekanismar for unntakshandtering, som gjer det mogleg for utviklarar å håndtere kjøringsfeil på ein elegant måte.
begin
-- kode som kan kaste eit unntak
exception
when Constraint_Error =>
-- håndtere feilen
end;
Ada støttar objektorientert programmering med funksjonar som arv og polymorfisme.
type Vehicle is tagged null record;
type Car is new Vehicle with record
Doors : Integer;
end record;
procedure Display(V : Vehicle) is
begin
-- kode for å vise informasjon om kjøretøyet
end Display;
Generiske typar gjer det mogleg for utviklarar å skrive fleksibel og gjenbrukbar kode ved å definere parametriserte typar og subprogram.
generic
type Item_Type is private;
package Container is
procedure Add(Item : Item_Type);
end Container;
Ada støttar enumertypar, som definerer ein type med eit sett av namngitte verdiar.
type Color is (Red, Green, Blue);
Kontrollerte typar gjer det mogleg å ha finjustert kontroll over oppretting og destruksjon av objekt.
type My_Controlled_Type is new Ada.Finalization.Controlled with record
Value : Integer;
end record;
Ada tilbyr attributtar som kan brukast for å hente informasjon om typar eller objekt.
X : Integer := 10;
Size : Natural := X'Size; -- Hente storleiken på eit heiltal
Ada legg vekt på konseptet minnehåndtering gjennom eksplisitt kontroll over datalagring og tildeling.
declare
type Record_Type is record
A : Integer;
B : Float;
end record;
My_Record : Record_Type;
end;
Ada kan bli kompilert ved hjelp av ulike kompilatorar, der GNAT er ein av dei mest brukte. GNAT er ein del av GNU Compiler Collection (GCC) og gir ein gratis og open kildekode-måte å kompilere Ada-kode på.
Det finst fleire integrerte utviklingsmiljø (IDE-ar) tilgjengelege for Ada, som GNAT Studio, AdaGIDE og GPS (GNAT Programming Studio). Desse verktøya tilbyr funksjonar som syntaksutheving, kodefullføring og feilsøking.
For å bygge eit Ada-prosjekt ved hjelp av GNAT, vil ein typisk skrive Ada-kildekoden og deretter bruke følgjande kommandoar i terminalen:
gnatmake my_program.adb
Denne kommandoen kompilerer Ada-kildefila og genererer ein kjørbar fil.
Ada blir brukt hovudsakleg i tryggleikskritiske system, som inkluderer, men ikkje er avgrensa til:
Dens påliteligheit og vedlikehaldsvennlegheit gjer det til eit føretrekt val i desse sektorane.
Sjølv om Ada deler nokre likheiter med andre programmeringsspråk, skil det seg ut for sin vekt på tryggleik og påliteligheit.
Når ein arbeider med kilde-til-kilde oversetting, finst det spesifikke verktøy som kan hjelpe til med å konvertere Ada-kode til andre programmeringsspråk. For eksempel kan verktøy som Gnat2Go brukast for å oversetje Ada-kode til Go. Det er likevel viktig å ta omsyn til at funksjonaliteten og tryggleiksegenskapane til den originale Ada-koden blir bevart under oversettingsprosessen.
Nokre vanlege verktøy for kilde-til-kilde oversetting inkluderer: