Ada Resource Association

Ada översikt

Ada är ett modernt programmeringsspråk utformat för stora, långlivade applikationer-och inbyggda system i synnerhet – där tillförlitlighet och effektivitet är avgörande. Det utvecklades ursprungligen i början av 1980-talet (Denna version är allmänt känd som ada 83) av ett team ledt av Dr.Jean Ichbiah vid CII-Honeywell-Bull i Frankrike. Språket reviderades och förbättrades på ett uppåtkompatibelt sätt i början av 1990-talet, under ledning av Mr. Tucker Taft från Intermetrics i USA. Det resulterande språket, Ada 95, var det första internationellt standardiserade (ISO) objektorienterade språket. Under regi av ISO slutfördes en ytterligare (mindre) revision som en ändring av standarden; denna version av språket kallas Ada 2005. En mer betydande revision slutfördes (inklusive stöd för programanteckningar) och kallas Ada 2012. En annan betydande översyn förväntas vara klar 2022.

namnet ” Ada ” är inte en akronym; det valdes för att hedra Augusta Ada Lovelace (1815-1852), en matematiker som ibland betraktas som världens första programmerare på grund av sitt arbete med Charles Babbage. Hon var också dotter till poeten Lord Byron.

Ada ser betydande användning över hela världen inom områden med hög integritet / säkerhetskritisk / hög säkerhet, inklusive kommersiella och militära flygplansflygteknik, flygkontroll, järnvägssystem och medicintekniska produkter. Med sin utföringsform av moderna programvarutekniska principer är Ada ett utmärkt undervisningsspråk för både inledande och avancerade datavetenskapliga kurser, och det har varit föremål för betydande universitetsforskning, särskilt inom realtidsteknologi.

Språköversikt

Ada är mångfacetterad. Ur ett perspektiv är det ett klassiskt stackbaserat allmänt språk, inte knutet till någon specifik utvecklingsmetodik. Den har en enkel syntax, strukturerade kontrolluttalanden, flexibla datakompositionsanläggningar, stark typkontroll, traditionella funktioner för kodmodularisering (“underprogram”) och en mekanism för att upptäcka och svara på exceptionella körtidsförhållanden (“undantagshantering”).

men det innehåller också mycket mer:

Skalärområden

till skillnad från språk baserade på C-syntax (som C++, Java och C#) tillåter ada programmeraren att enkelt och explicit ange det värdeområde som är tillåtet för variabler av skalära typer (heltal, flytpunkt, fast punkt eller uppräkningstyper). Försöket att tilldela ett out-of-range-värde orsakar ett run-time-fel. Möjligheten att ange intervall contraints gör programmerare avsikt explicit och gör det lättare att upptäcka en viktig källa till kodning och användarinmatningsfel.

programmering i den stora

den ursprungliga ada 83-designen introducerade paketkonstruktionen, en funktion som stöder inkapsling (“informationsskydd”) och modularisering, och som gör det möjligt för utvecklaren att styra namnrymden som är tillgänglig inom en viss kompileringsenhet. Ada 95 introducerade begreppet “barnenheter”, vilket gav betydligt flexibilitet och underlättade utformningen av mycket stora system. Ada 2005 utvidgade språkets modulariseringsmöjligheter genom att tillåta ömsesidiga referenser mellan paketspecifikationer, vilket gör det lättare att Gränssnitt med språk som Java.

generiska mallar

en nyckel till återanvändbara komponenter är en mekanism för att parametrisera moduler med avseende på datatyper och andra programenheter, till exempel ett stackpaket för en godtycklig elementtyp. Ada uppfyller detta krav genom en anläggning som kallas” generika”; eftersom parametreringen görs vid kompileringstiden straffas inte körtidsprestanda.

objektorienterad programmering (OOP)

Ada 83 var objektbaserad, vilket möjliggjorde uppdelning av ett system i moduler som motsvarar abstrakta datatyper eller abstrakta objekt. Fullt OOP-stöd tillhandahölls inte eftersom det för det första inte verkade krävas i realtidsdomänen som var Adas primära mål, och för det andra skulle det uppenbara behovet av automatisk sophämtning på ett OO-språk ha stört förutsägbar och effektiv prestanda.

men stora realtidssystem har ofta komponenter som GUI som inte har begränsningar i realtid och som kan utvecklas mest effektivt med OOP-funktioner. Delvis av denna anledning levererar Ada 95 omfattande stöd för OOP, genom sin “taggade typ” – anläggning: klasser, polymorfism, arv och dynamisk bindning. Ada 95 kräver inte automatisk sophämtning utan tillhandahåller definitionsfunktioner som gör det möjligt för utvecklaren att leverera typspecifika lagringsåtervinningsoperationer (“slutförande”). Ada 2005 tillhandahöll ytterligare OOP-funktioner inklusive Java-liknande gränssnitt och traditionell Drift anrop notation.

Ada är metologiskt neutral och innebär inte en “distribuerad overhead” för OOP. Om en applikation inte behöver OOP, behöver OOP-funktionerna inte användas, och det finns ingen körtid.

samtidig programmering

ada levererar en strukturerad, hög nivå anläggning för samtidighet. Enheten för samtidighet är en programenhet som kallas en ” uppgift.”Uppgifter kan kommunicera implicit via delade data eller uttryckligen via en synkron kontrollmekanism som kallas rendezvous. Ett delat dataobjekt kan definieras abstrakt som ett” skyddat objekt ” (en funktion introducerad i Ada 95), med operationer som utförs under ömsesidig uteslutning när de åberopas från flera uppgifter. Asynkrona uppgiftsinteraktioner stöds också, särskilt timeout och uppgiftsavslutning. Ett sådant asynkront beteende skjuts upp under vissa operationer för att förhindra möjligheten att lämna delade data i ett inkonsekvent tillstånd. De nyaste versionerna av Ada inkluderar lätta mekanismer för att dra nytta av multicore-arkitekturer, vilket möjliggör mycket effektiv parallell databehandling, samtidigt som portabilitet bevaras och förblir inom den säkra och väldefinierade ada-samtidighetsmodellen.

systemprogrammering

både i “core” – språket och Systemprogrammeringsbilagan tillhandahåller Ada de nödvändiga funktionerna för att programmeraren ska kunna komma nära hårdvaran. Du kan till exempel ange bitlayouten för fält i en post, definiera justering och storlek, placera data på specifika maskinadresser och uttrycka specialiserade eller tidskritiska kodsekvenser i monteringsspråk. Du kan också skriva avbrottshanterare i Ada, med hjälp av anläggningen protected type.

realtidsprogrammering

Ada: s tasking-funktioner gör att du kan uttrycka vanliga realtidsidiom (periodiska uppgifter, händelsestyrda uppgifter) och Realtidsbilagan innehåller flera faciliteter som gör att du kan undvika obegränsade prioriterade inversioner. En skyddad objektlåsningspolicy definieras som använder prioriterade tak; detta har en särskilt effektiv implementering i Ada (mutexes krävs inte) eftersom skyddade operationer inte får blockera. Ada 95 definierade en uppgiftsutdelningspolicy som i princip kräver att uppgifter körs tills de är blockerade eller förhindrade, och Ada 2005 introducerade flera andra inklusive tidigast Deadline först.

högintegritetssystem

med betoning på sunda programvarutekniska principer stöder Ada utvecklingen av applikationer med hög integritet, inklusive de som måste certifieras mot säkerhetsstandarder som DO-178b och säkerhetsstandarder som de gemensamma kriterierna. Till exempel innebär stark typning att data avsedda för ett ändamål inte kommer att nås via olämpliga operationer; fel som att behandla pekare som heltal (eller vice versa) förhindras. Och Ada: s kontroll av matrisgränser förhindrar buffertöverskridande sårbarheter som är vanliga i C och C++.

det fullständiga språket är dock olämpligt i en säkerhetskritisk applikation, eftersom generaliteten och flexibiliteten kan störa spårbarhet / certifieringskrav. Ada åtgärdar problemet genom att tillhandahålla ett kompilatordirektiv, pragma Restrictions, som låter dig begränsa språkfunktionerna till en väldefinierad delmängd (till exempel exklusive dynamiska OOP-anläggningar).

utvecklingen av Ada har sett den fortsatta ökningen av stöd för säkerhetskritiska och hög säkerhetsapplikationer. Ada 2005 standardiserade Ravenscar-profilen, en samling samtidighetsfunktioner som är tillräckligt kraftfulla för realtidsprogrammering men tillräckligt enkla för att göra certifieringen praktisk. Ada 2012 introducerade antecknings faciliteter för att lägga till pre-villkor, post-villkor, och invarianter till program. Ada 2022 utökar dessa med ytterligare kommentarer för standard initiala villkor, stabila egenskaper, icke-blockerande och global objektanvändning. Dessa kan tjäna både för run-time kontroll och som input till statiska analysverktyg.

Ada-fördelar sammanfattning

  • hjälper dig att designa säker och pålitlig kod
  • minskar utvecklingskostnaderna
  • stöder ny och föränderlig teknik
  • underlättar utveckling av komplexa program
  • hjälper till att göra kod läsbar och Bärbar
  • minskar certifieringskostnaderna för säkerhet-kritisk programvara

Ada-funktioner sammanfattning

  • objektorienterad programmering
  • stark typning
  • abstraktioner för att passa programdomän
  • Generisk programmering/mallar
  • undantag hantering
  • anläggningar för modulär organisation av kod
  • standardbibliotek för I/O, stränghantering, numerisk databehandling, Behållare
  • systemprogrammering
  • samtidig programmering
  • realtidsprogrammering
  • distribuerad systemprogrammering
  • numerisk bearbetning
  • gränssnitt till andra språk (C, COBOL, Fortran)

i korthet är Ada ett internationellt standardiserat språk som kombinerar objektorienterade programmeringsfunktioner, välkonstruerade samtidighetsanläggningar, realtidsstöd och inbyggd tillförlitlighet. Ada är ett lämpligt verktyg för att ta itu med de verkliga problemen som mjukvaruutvecklare står inför idag och används i ett antal stora branscher för att designa programvara som skyddar företag och liv.

dela och njut:
  • e-post
  • Linköping
  • Twitter
  • Facebook
  • Digg
  • RSS

Leave a Reply