Programmeringsspråk Ada

Oversikt

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.

Historiske Aspekt

Oppretting

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.

Inspirasjon frå og Relasjonar til Andre Språk

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.

Noverande Tilstand

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.

Syntaksfunksjonar

Sterk Typetilvising

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

Modularitet

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;

Parallellitet

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;

Unntakshandtering

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;

Objektorientert Programmering

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

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;

Enumertypar

Ada støttar enumertypar, som definerer ein type med eit sett av namngitte verdiar.

type Color is (Red, Green, Blue);

Kontrollerte Typar

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;

Attributtar

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

Mental Modell av Minne

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;

Utviklarverktøy, Kjøretid og IDE-ar

Kjøretid og Kompilatorar

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å.

Populære IDE-ar

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.

Byggje eit Prosjekt

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.

Applikasjonar av Ada

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.

Sammenlikning med Andre Språk

Sjølv om Ada deler nokre likheiter med andre programmeringsspråk, skil det seg ut for sin vekt på tryggleik og påliteligheit.

Tips for Kilde-til-Kilde Oversetting

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: