Ada Resource Association
Ada Overview
Ada este un limbaj de programare modern conceput pentru aplicații mari, de lungă durată-și sisteme încorporate în special – în care fiabilitatea și eficiența sunt esențiale. A fost dezvoltat inițial la începutul anilor 1980 (această versiune este în general cunoscută sub numele de Ada 83) de o echipă condusă de Dr.Jean Ichbiah la CII-Honeywell-Bull în Franța. Limbajul a fost revizuit și îmbunătățit într-un mod compatibil ascendent la începutul anilor 1990, sub conducerea domnului Tucker Taft de la Intermetrics din SUA. Limbajul rezultat, Ada 95, a fost primul limbaj orientat pe obiecte standardizat internațional (ISO). Sub auspiciile ISO, o altă revizuire (minoră) a fost finalizată ca o modificare a standardului; această versiune a limbii este cunoscută sub numele de Ada 2005. O revizuire mai semnificativă a fost finalizată (inclusiv suport pentru adnotările programului) și este cunoscută sub numele de Ada 2012. Se preconizează că o altă revizuire semnificativă va fi finalizată în 2022.
numele “Ada” nu este un acronim; a fost aleasă în onoarea Augusta Ada Lovelace (1815-1852), o matematiciană care este uneori considerată primul programator din lume datorită muncii sale cu Charles Babbage. Ea a fost, de asemenea, fiica poetului Lord Byron.
Ada se confruntă cu o utilizare semnificativă la nivel mondial în domenii de înaltă integritate / siguranță critică / securitate ridicată, inclusiv avionica aeronavelor comerciale și militare, controlul traficului aerian, sistemele feroviare și dispozitivele medicale. Cu întruchiparea principiilor moderne de inginerie software, Ada este un limbaj excelent de predare atât pentru cursurile introductive, cât și pentru cele avansate de informatică și a făcut obiectul unor cercetări universitare semnificative, în special în domeniul tehnologiilor în timp real.
Prezentare generală a limbii
Ada are mai multe fațete. Dintr-o perspectivă, este un limbaj clasic de uz general bazat pe stivă, care nu este legat de nicio metodologie specifică de dezvoltare. Are o sintaxă simplă, declarații de control structurate, facilități flexibile de compoziție a datelor, verificare puternică a tipului, caracteristici tradiționale pentru modularizarea codului (“subprograme”) și un mecanism pentru detectarea și răspunsul la condiții excepționale de rulare (“manipularea excepțiilor”).
dar, de asemenea, include mult mai mult:
intervale scalare
spre deosebire de limbile bazate pe sintaxa C (cum ar fi C++, Java și C#), Ada permite programatorului să specifice simplu și Explicit intervalul de valori care sunt permise pentru variabilele tipurilor scalare (număr întreg, virgulă mobilă, punct fix sau tipuri de enumerare). Încercarea de atribuire a unei valori în afara intervalului provoacă o eroare de execuție. Capacitatea de a specifica gama contraints face programator intenție explicit și face mai ușor pentru a detecta o sursă majoră de codificare și erori de intrare de utilizator.
programare în
designul original Ada 83 a introdus construcția pachetului, o caracteristică care acceptă încapsularea (“ascunderea informațiilor”) și modularizarea și care permite dezvoltatorului să controleze spațiul de nume care este accesibil într-o unitate de compilare dată. Ada 95 a introdus conceptul de “unități pentru copii”, adăugând o flexibilitate considerabilă și ușurând proiectarea sistemelor foarte mari. Ada 2005 a extins facilitățile de modularizare a limbii, permițând referințe reciproce între specificațiile pachetului, facilitând astfel interfața cu limbi precum Java.
șabloane generice
o cheie pentru componente reutilizabile este un mecanism pentru parametrizarea modulelor în ceea ce privește tipurile de date și alte entități de program, de exemplu un pachet de stivă pentru un tip de element arbitrar. Ada îndeplinește această cerință printr-o facilitate cunoscută sub numele de “generice”; deoarece parametrizarea se face la momentul compilării, performanța în timpul rulării nu este penalizată.
Programare orientată pe obiecte (OOP)
Ada 83 a fost bazată pe obiecte, permițând Partiționarea unui sistem în module corespunzătoare tipurilor de date abstracte sau obiectelor abstracte. Suportul OOP complet nu a fost furnizat, deoarece, în primul rând, părea să nu fie necesar în domeniul în timp real care era ținta principală a Ada și, în al doilea rând, nevoia aparentă de colectare automată a gunoiului într-un limbaj OO ar fi interferat cu performanța previzibilă și eficientă.
cu toate acestea, sistemele mari în timp real au adesea componente precum GUI care nu au constrângeri în timp real și care ar putea fi dezvoltate cel mai eficient folosind caracteristicile OOP. În parte din acest motiv, Ada 95 furnizează suport cuprinzător pentru OOP, prin facilitatea sa “Tip etichetat”: clase, polimorfism, moștenire și legare dinamică. Ada 95 nu necesită colectarea automată a gunoiului, ci mai degrabă furnizează caracteristici definitive care permit dezvoltatorului să furnizeze operațiuni de recuperare a stocării specifice tipului (“finalizare”). Ada 2005 a oferit funcții OOP suplimentare, inclusiv interfețe asemănătoare Java și notație tradițională de invocare a funcționării.
Ada este neutru din punct de vedere metologic și nu impune o “regie distribuită” pentru OOP. Dacă o aplicație nu are nevoie de OOP, atunci funcțiile OOP nu trebuie utilizate și nu există penalități de execuție.
programare concurentă
Ada furnizează o facilitate structurată, la nivel înalt, pentru concurență. Unitatea de concurență este o entitate de program cunoscută sub numele de “sarcină”.”Sarcinile pot comunica implicit prin date partajate sau Explicit printr-un mecanism de control sincron cunoscut sub numele de întâlnire. Un element de date partajat poate fi definit abstract ca un” obiect protejat ” (o caracteristică introdusă în Ada 95), cu operațiuni executate sub excludere reciprocă atunci când sunt invocate din mai multe sarcini. Interacțiunile asincrone ale sarcinilor sunt, de asemenea, acceptate, în special timeout-urile și terminarea sarcinilor. Un astfel de comportament asincron este amânat în timpul anumitor operații, pentru a preveni posibilitatea de a lăsa datele partajate într-o stare inconsistentă. Cele mai noi versiuni ale Ada includ mecanisme ușoare pentru a profita de arhitecturi multicore, permițând calculul paralel extrem de eficient, păstrând în același timp portabilitatea și rămânând în modelul de concurență Ada sigur și bine definit.
programarea sistemelor
atât în limbajul “core”, cât și în anexa de programare a sistemelor, Ada furnizează caracteristicile necesare pentru a permite programatorului să se apropie de hardware. De exemplu, puteți specifica aspectul bitului pentru câmpurile dintr-o înregistrare, puteți defini alinierea și dimensiunea, puteți plasa date la anumite adrese ale mașinii și puteți exprima secvențe de cod specializate sau critice în timp în limbajul de asamblare. De asemenea, puteți scrie manipulatoare de întrerupere în Ada, utilizând facilitatea de tip protejat.
programare în timp Real
funcțiile de tasking ale Ada vă permit să exprimați expresii comune în timp real (sarcini periodice, sarcini bazate pe evenimente), iar anexa în timp real oferă mai multe facilități care vă permit să evitați inversiunile prioritare nelimitate. Este definită o politică de blocare a obiectelor protejate care utilizează plafoane prioritare; aceasta are o implementare deosebit de eficientă în Ada (mutexurile nu sunt necesare), deoarece operațiunile protejate nu au voie să blocheze. Ada 95 a definit o politică de expediere a sarcinilor care necesită practic executarea sarcinilor până la blocare sau împiedicare, iar Ada 2005 a introdus mai multe altele, inclusiv primul termen limită.
sisteme de înaltă integritate
cu accent pe principiile de inginerie software de sunet Ada sprijină dezvoltarea de aplicații de înaltă integritate, inclusiv cele care trebuie să fie certificate în conformitate cu standardele de siguranță, cum ar fi DO-178B și standardele de securitate, cum ar fi criteriile comune. De exemplu, tastarea puternică înseamnă că datele destinate unui singur scop nu vor fi accesate prin operații necorespunzătoare; erori precum tratarea indicatoarelor ca numere întregi (sau invers) sunt prevenite. Iar verificarea limitelor matricei Ada previne vulnerabilitățile de depășire a tamponului care sunt comune în C și C++.
cu toate acestea, limbajul complet este inadecvat într-o aplicație critică pentru siguranță, deoarece generalitatea și flexibilitatea pot interfera cu cerințele de trasabilitate / certificare. Ada abordează această problemă furnizând o directivă de compilator, pragma Restrictions, care vă permite să constrângeți caracteristicile limbajului la un subset bine definit (de exemplu, excluzând facilitățile OOP dinamice).
evoluția Ada a înregistrat o creștere continuă a sprijinului pentru aplicațiile critice de siguranță și de înaltă securitate. Ada 2005 a standardizat profilul Ravenscar, o colecție de caracteristici de concurență care sunt suficient de puternice pentru programarea în timp real, dar suficient de simple pentru a face certificarea practică. Ada 2012 a introdus facilități de adnotare pentru adăugarea de pre-condiții, post-condiții și invarianți la programe. Ada 2022 le extinde cu adnotări suplimentare pentru condițiile inițiale implicite, proprietățile stabile, Neblocarea și utilizarea obiectelor globale. Acestea pot servi atât pentru verificarea timpului de rulare, cât și ca intrare la instrumentele de analiză statică.
Ada beneficii rezumat
- vă ajută să proiectați Cod sigur și de încredere
- reduce costurile de dezvoltare
- sprijină tehnologii noi și în schimbare
- facilitează dezvoltarea de programe complexe
- ajută la a face Cod ușor de citit și portabil
- reduce costurile de certificare pentru software
Rezumatul caracteristicilor Ada
- programare orientată obiect
- tastare puternică
- abstracții pentru a se potrivi domeniului programului
- programare/șabloane generice
- excepție manipulare
- facilități pentru organizarea modulară a codului
- biblioteci Standard pentru I/O, manipulare șir, calcul numeric, containere
- programare sisteme
- programare concurentă
- programare în timp Real
- programare sisteme distribuite
- procesare numerică
- interfețe cu alte limbi (c, COBOL, Fortran)
pe scurt, Ada este un limbaj standardizat la nivel internațional care combină caracteristici de programare orientate pe obiecte, facilități de concurență bine proiectate, suport în timp real și încorporat fiabilitate. Un instrument adecvat pentru abordarea problemelor reale cu care se confruntă dezvoltatorii de software de astăzi, Ada este utilizat într-o serie de industrii majore pentru a proiecta software care protejează întreprinderile și viețile.
Leave a Reply