Ada este un limbaj de programare deosebit de bun. Doriți să știți totul. ADA TONGUE PRIMUL PROGRAMAREA ADULUI

Dacă cereți unui specialist IT intern: "Ce este iadul?" Majoritatea va ridica doar surpriza, iar cineva chiar va spune că acesta este un limbaj mort, o dată inventată de Pentagon și acum practic nu a fost folosit. De fapt, CEE și astăzi este destul de prosperă și utilizată în mod activ în diferite domenii ale limbajului de programare. Adevărat, majoritatea programatorilor ruși știu puțin despre asta.

Probabil, toți cei care trebuiau să se bucure de linia de paisprezecea a metroului Paris, se întrebă, după ce a văzut trenul, în care nu există cabină de cabină. Mișcarea trenului pe această linie este controlată complet de programul AD.

În ciuda tuturor lucrurilor, în anumite domenii ale tehnologiei, Rusia este încă "înaintea planetei." Și unul dintre ei este proiectarea și producția de avioane amfibiene. Liderul recunoscut în lume în acest domeniu este ratat. G.M. Beriev. Recent, această companie a achiziționat dezvoltarea software-ului on-bord pe baza limbajului Iadului pentru a fi utilizat atunci când modernizează ultimul său model BE-200.

Între timp, majoritatea profesioniștilor IT naționali nu știu nimic despre limba iadului, în cel mai rău lucru - au o idee complet greșită de herde ca limbă de monstru, a inventat odată de Pentagon pentru dezvoltarea sistemelor militare , și acum uitat în cele din urmă.

Un pic de istorie

Ziua de naștere oficială a limbajului de programare a iadului poate fi luată în considerare la data de 17 februarie 1983 - aprobarea datei standardului ANSI / MIL-STD-1815-A-1983.

Măsurile tehnice și administrative luate de Ministerul Apărării ca parte a proiectului de a crea și implementa ADA au împiedicat complet apariția și diseminarea dialectelor lingvistice. Din 1983 până în prezent, toate implementările industriale susțin standardul ADA actual. Când vine vorba de subseturile anunțurilor, aceste subseturi nu sunt determinate de neaplicuare, ci standardele pentru dezvoltarea unei clase specifice de sisteme.

În 1987, standardul ANSI a fost aprobat ca un standard ISO (ISO / IEC 8652), iar atunci când este necesară, de asemenea, necesitatea revizuirii standardului, lucrările la revizuire, sub administrația Ministerului Apărării a Statelor Unite la începutul anilor 1990 . Un nou proiect internațional a început, care sa încheiat cu declarația de la sfârșitul anului 1994 și publicarea la începutul anului 1995 versiune noua Standard ISO / IEC 8652. Acesta este acest document și servește astăzi prin definirea limbajului de programare al iadului.

În URSS, la începutul anilor '80, un grup de lucru a fost format din programul de programare în cadrul Comisiei de Stat pentru Știință și Tehnologie. A fost adunată cu atenție și a analizat toate informațiile deschise despre proiect, iar informațiile închise au fost exploatate de eforturile serviciilor speciale. Proiectele de implementare a ușilor au fost organizate pentru aproape toate arhitecturile EMM utilizate, iar unele dintre ele s-au dovedit a fi foarte reușite. Prăbușirea URSS a pus la sfârșitul acestei activități. Astăzi, iadul este folosit în Rusia și CSI de către entuziaștii individuali.

Ce este iadul

Toate limbile industriale moderne oferă, în esență, unul și același set de oportunități de bază, distingând faptul că acestea vă permit să faceți, altfel le permit să facă acest lucru. Cu toate acestea, iadul, cel puțin în două aspecte, extinde standardul pentru limbile moderne un set de caracteristici. În primul rând, Iadul oferă mijloace de nivel înalt de programare a proceselor asincrone. În al doilea rând, este singura limbă care poate fi numită modular fără rezerve.

Un exemplu este doar necesar pentru a respinge un mitiu destul de comun, iar iadul este un limbaj mare, complex și "greu", potrivit numai pentru scrierea sistemelor super-ridicate și ultra-dimensiuni. De fapt, iadul poate fi folosit pentru a dezvolta programe mici și mijlocii cu același succes ca și clonele moderne C, Pascal, Beysika și Java. Deci, exemplul clasic al programului "Bună ziua, Lumea!" Se pare că ADE după cum urmează:

Este ușor să vedem că codul din iad este similar cu codul de pe Pascal, care a fost ales ca prototip. Prima linie descrie conexiunea acestui modul compilat cu alte module - Se indică faptul că subrutina Hello_World trebuie să fie compilată împreună cu modulul Ada.Text_io, care este o componentă a unei biblioteci predefinite.

Următorul program definește două procese asincrone:

În secțiunea Anunțuri locale, procedura Tasking_Example descrie sarcina de outputter (linia 6, rândurile de la 8 la 17 conțin corpul acestei sarcini). Atunci când controlați în procesul corespunzător procedurii de tasking_example, vine vorba de linia 20, înainte de a efectua această primă declarație, procesul corespunzător sarcinii de outputter este pornit, după care trăiesc două procese și au fost efectuate asincron independent unul de celălalt. Execuția operatorului de întârziere (rândurile 14 și 20) constă în suspendarea procesului corespunzător la numărul specificat de secunde. Astfel, procesul Tasking_Example este întrerupt timp de 20 de secunde și, în acest moment, procesul de depășire începe să se imprimă valorile creșterii contorului pe unitate, suspendând o secundă după ieșirea fiecărei valori. După 20 de secunde, procesul Tasking_Example stabilește steagul finit către steagul "Adevăr", ciclul din procesul de depășire este finalizat. Specificația variabilei finite ca obiect de date atomice (string 4) face imposibilă citirea și modificarea simultană a valorii acestei variabile.

Următorul este un șablon de funcții care vă permite să păstrați două matrice unic dimensionale. Acest șablon poate fi configurat la un tip arbitrar, care este o matrice unidimensională, pentru componentele cărora se determină cesiunea și operațiile de adiție ("adăugarea" nu este necesară pentru a fi aditivă aritmetică).

Rândurile 1-6 conțin o funcție setată de anunțuri, iar șirurile 8-20 sunt corpul său. Conținut, parametrul de setare este un tip regulat arbitrar unicimensional, cu o gamă de index nespecificată (string 4), care este cunoscută doar că tipul de component este arbitrar, cu toate acestea, operația de atribuire este definită pentru componente (linia 2), Tipul de index este un discret arbitrar (șir 4). Din moment ce trebuie să fim inoperant să fugim două matrice, trebuie să știți care este operațiunea de adăugare pentru tipul de componente. Deoarece acesta este un tip arbitrar, suntem forțați să transmitem adăugarea pentru tipul de component ca parametru de setare formală (linia 5).

În corpul funcției, verificăm mai întâi dacă lungimile operanților sunt coincis (linia 12), altfel nu are sens să compliceze în alt mod adăugarea. Prin urmare, coincidența lungimilor operandului nu garantează coincidența intervalelor indexului, prin urmare, în buclă la intervalul index al primului argument (linia 15), trebuie să calculam indicele componentei corespunzătoare a celui de-al doilea argument. Suntem lipsiți de ocazia de a face acest lucru pentru tipul de index, după cum știm despre el numai că este discret, deci mergeți de la valoarea tipul discret La numărul său de secvență (atribut? POS), calculați schimbarea necesară pentru numărul de secvență și reveniți la valoarea corespunzătoare a tipului de index (atributul? Val).

Rețineți că parametrii (personalizabili) Funcția "+" Stânga și dreapta sunt declarate ca având un tip ARR, dintre ele nu este specificată. Cu toate acestea, stânga și dreapta sunt parametrii formali, în locul căruia, atunci când apelați (rezultatul concretizării), funcția "+" va fi substituită cu matrice specifice cu benzi index cunoscute. Suntem în corpul funcției "+" folosind atributele de matrice (? Interval ,? mai întâi, de lungime) pentru a obține informații despre gama de index din obiect.

De ce iad?

Alegerea limbii pentru proiectul Program a fost anterioară Întrebare tehnică. Astăzi a devenit o chestiune de importanță strategică care are consecințe importante pentru succesul proiectului. Să enumerăm câteva dintre motivele pentru care Iadul a fost ales pentru a implementa proiecte de program de către diverse companii sau este obligatoriu pentru utilizare în oferte.

  • Dorința de a crește fiabilitatea sistemului este dezvoltată, deoarece defectele software pot avea consecințe grave pentru sănătatea oamenilor, economiei, ecologiei etc. (ADA are facilități de asigurare încorporate).
  • Dorința de a reduce costul dezvoltării și menținerii sistemului.
  • Prezența standardelor internaționale și prezența compilatoarelor lingvistice este aproape pentru orice platformă.
  • Avantajele unei abordări disciplinate a dezvoltării software, care devin deosebit de semnificative ca volumul și complexitatea software-ului crește.
Iad și S.

Când efectuați analize comparative ale limbilor populare, există atât de multe copii care astăzi acest subiect este adesea referit la categoria "războaie religioase". Prin urmare, ne limităm la trimiterea la un articol binecunoscut în care se fac o serie de concluzii elocvente.

  1. Dezvoltarea programelor în limba iadului costă 60% mai ieftin decât proiectele software similare implementate pe C.
  2. Programul în limba de anunț are de 9 ori mai mici defecte decât programul de la C; Programul de pe C ++ are și mai mic decât programul C, caracteristicile.
  3. este preferabil să SCH atât pentru programatori experimentați, cât și pentru cei neexperimentați, precum și pentru programatori care au atât ratingul maxim și minim în grupul lor.
  4. Complexitatea studierii limbii iadului nu este mai mare decât complexitatea studiului C.
  5. Programele de pe ADE sunt mai fiabile decât programele SI.

Ca o ilustrare a acestor concluzii, oferim un exemplu de dezvoltare a software-ului de la bord pentru aeronavele C-130J, în conformitate cu cerințele nivelului A al standardului DO-178B. În același timp, a fost menționată calitatea codului, de 10 ori media pentru nivelul software-ului A. Productivitatea muncii a crescut patru dintre toate cele relativ la proiecte software comparabile.

Iad și java.

Microsoft a fost forțat să includă în acordurile de licențiere pentru sistemele lor de operare următoarele elemente ( www.microsoft.com/msdownload/ieclatform/ie/ licență.txt.): "Notă privind sprijinul limbajului Java ... Tehnologia Java nu este rezistentă la eșecuri și nu este destinată ... Pentru a fi utilizate în cadrul sistemelor de management din timp real ..., în care limba Java eșecul poate implica moartea, rănirea sau infrastructura grea sau mediul înconjurător. Sun Microsystems, Inc. Am comandat compania Microsoft să pună acest avertisment. "

De asemenea, indicăm articole și demonstrând beneficiile limbii iadului peste Java.

Miturile "Hellish"

Destul de des, un set de concepții greșite sustenabile care împiedică atât diseminarea limbii, cât și alegerea conștientă a doctrinei ca limbă de implementare a proiectului sunt asociate cu ADO.

Iadul este o limbă moartă, nimeni nu-i programe acum. De fapt, iadul are în mod încrezător o nișă de sisteme încorporate mari, cu cerințe sporite de fiabilitate. Comparativ cu produsele "Box Centres" pentru Windows, astfel de sisteme nu sunt la fel de vizibile, deoarece există într-o singură instanță (care este punctul de replicare a programului care controlează mișcarea trenului metroului) sau distribuită ca parte a sistemului la care sunt construite -În software-ul lateral).

Ada este o limbă concepută exclusiv pentru aplicațiile militare. Iadul a fost într-adevăr dezvoltat cu participarea Departamentului de Apărare al SUA, dar nu există motive tehnice, administrative sau de alte motive care să împiedice utilizarea anunțurilor pentru dezvoltarea sistemelor civile. Numărul de proiecte "civile" bazate pe această limbă este comparabil astăzi cu numărul de proiecte "militare".

Iadul este prea mare și complex, pentru ao folosi într-un proiect mic. Volumul și complexitatea tuturor limbilorilor industriale moderne sunt aproape la fel și pentru a vă asigura că este suficient să comparați pur și simplu volumul descrierilor lor. Acest mit se întoarce la începutul anilor '80, când naiba a fost comparată cu Pascal, Fortran 77 sau Baisik.

Programatorii care știu iad, puțin, învățând o limbă de la zero, necesită eforturi excesive și timp. De fapt, dificultatea reală reprezintă găsirea de specialiști care înțeleg specificul sistemelor încorporate și capabile să creeze programe de calitate pentru ei. Deci, de exemplu, Bae, unul dintre utilizatorii activi ai limbii iadului, nu necesită cunoașterea acestei limbi de la candidați; În schimb, oamenii familiarizați cu sistemele încorporate și prelucrarea software-ului de calitate industrială sunt căutate. După angajarea unor astfel de oameni aveți nevoie doar de două săptămâni pentru a-și învăța limba de iad.

Experiența noastră personală arată că programatorii familiarizați cu unul sau alt tip de Pascal sunt obligați doar câteva zile pentru a începe dezvoltarea de programe necomplicate pe ADE.

Tehnologiile ad-existente sunt ineficiente; și traducătorii, iar codul generat de acestea, diferă în performanța scăzută. Acest mit se datorează, de asemenea, în prima jumătate a anilor '80, când au apărut primele implementări ale ușilor, de fapt, dovedit doar "teorema existenței unui ad-traducător corespunzător standardului". Este suficient să efectuați o serie de experimente simple, programate o anumită sarcină de model pe ADE, Pascal și Si / C ++ și compararea (cu parametrii compilatoare comparabili), apoi viteza de compilare, cantitatea de cod generat și viteza de viteză Execuția sa pentru a vă asigura că orice ineficiență specifică inerentă în iad, pur și simplu nu există. Se poate observa, de asemenea, că sistemul de programare GNAT cu volumul textelor sursă este mai mare de 40 MB, 90% este implementat pe ADE și construirea acesteia din textele sursă (în cursul său se compilează de trei ori) la un modern PC-ul nu durează mai mult de o jumătate de oră.

Implementările existente sunt extrem de costisitoare. Acest lucru este adevărat, dar ar trebui să se țină cont de faptul că există o versiune publică disponibilă a sistemului de programare GNAT, care este liberă și pe motive legale complet pot fi luate de la Universitatea din New York Repository ( fTP://cs.nyu.edu/pub/gnat.) Împreună cu textele sursă

Brânză gratuită și cum să evitați mousetrap

Gnat (GNU ADA Translator) este o implementare multi-platformă a unui limbaj de anunțuri care există aproape pe toate platformele industriale moderne și generarea de coduri de susținere pentru arhitecturi populare încorporate. Gnat ( www.gnat.com.) Implementează integral standardul ADA, inclusiv bibliotecile care sunt clasificate ca opționale. În plus față de ad-traducătorul în sine, GNAT include setul de instrumente în care se dezvoltă mediul dezvoltator integrat și un depanator grafic multilingv, care permite, de a investiga comportamentul programelor cu procese asincrone. Traducătorul și uneltele conexe pot fi utilizate ca fiind separat, determinându-le linie de comandași în cadrul mediului grafic integrat pentru dezvoltarea programelor AD. Toate componentele Gnat, inclusiv mediul de dezvoltare, au aceeași interfață pe toate platformele. În plus față de implementarea completă a GNAT descrisă, GNAT oferă un set bogat de extensie permis. Gnat este implementarea medicilor din sistemul de programare multilingvă CMC constând dintr-un set de compilatoare de plante pentru diferite limbi de intrări cu un generator de coduri generale, care simplifică în mod semnificativ dezvoltarea de programe care conțin componente implementate în diverse limbi de programare.

Gnat a fost dezvoltat și distribuit sub licența GPL. Din păcate, masa miturilor este, de asemenea, asociată cu GPL. Deci, mulți cred că programele de la GPL sunt dezvoltate de grupuri anorganizate de entuziaști, absolut gratuit; Ca urmare, fiabilitatea și funcționalitatea unor astfel de programe lasă mult de dorit, nu le permiteți să le utilizeze în orice proiecte grave. În cazul lui Gnat, acest lucru nu este așa. Pentru a vă asigura că este suficient să vedeți lista companiilor care au încheiat contractele pentru dezvoltatorii săi suport tehnic: Boeing, aerospațial britanic, Lockheed, Ericsson, Saab, avionic etc.

Furnizarea gratuită de versiuni demonstrative este practica obișnuită a multor dezvoltatori de software. Gnat este caracterizat de faptul că versiunea publică este în acces liber este o versiune absolut completă a tehnologiei, fără restricții juridice sau tehnice privind utilizarea sa. O serie de proiecte grave au fost implementate cu succes precis pe baza versiunilor publice Gnat. Beagle 2-europeni automate Marte Express Automat Station Marte Express este trimis în prezent la Marte ( www.beagle2.com/index.htm.), stația documentară automată a Ministerului Apărării al Federației Ruse ( www.ada-ru.org/prj_doc.html.). Singurul dezavantaj al versiunilor publice este că dezvoltatorul nu oferă sprijin tehnic pentru ei.

Concluzie

Rezumarea, se poate spune că limba iadului oferă dezvoltatorilor combinația perfectă de integritate, secvență, fiabilitate și eficiență. Limba sprijină creativitatea creativă și inovația, oferind în același timp disciplina și nivelul industrial de dezvoltare software necesară pentru implementarea unor sisteme de mare importanță.

Literatură
  1. Benjamin Brosgol, Introducere în ADA 95. www.embedded.com/story/oeg20021211s0034.
  2. Stephen Zeigler, comparând costurile de dezvoltare ale C și ADA. www.adaic.com/whyada/ada-vs-c/cada_art.html www.ada-ru.org.. Bibliografia adnotată a cărților în limba iadului, publicată în limba rusă, poate fi găsită pe site

Rezumat pe subiect:

Ada.



Plan:

    Introducere
  • 1 Caracteristicile limbajului
  • 2 "Bună ziua, lumea!" pe naiba
  • 3 Istorie
  • 4 Iadul în URSS și Rusia
  • 5 critici
  • 6 Distribuție, perspectivă
  • 7 Sisteme de operare scrise în iad
    • 7.1 Sisteme încorporate
    • 7.2 Sisteme de dezvoltare
    • 7.3 Nu mai există sisteme existente
  • 8 compiuri AD.
  • 9 Limbi derivate
  • 10 Fapte interesante
  • Notează
    Literatură

Introducere

Anunț (Ada.) - Limba de programare creată în 1979-1980 ca urmare a proiectului realizat de Departamentul Apărării al SUA pentru a dezvolta un singur limbaj de programare pentru sistemele încorporate (adică sistemele de control ale complexelor automate care operează în timp real). În primul rând, au fost utilizate sisteme de control la bord pentru obiecte militare (nave, avioane, rezervoare, rachete, cochilii etc.). Dezvoltatorii nu au avut sarcini de a crea un limbaj universal, deci deciziile luate de autori ale anunțurilor ar trebui percepute în contextul caracteristicilor domeniului selectat. Limba este numită după Lamplaisul iadului.


1. Caracteristicile limbii

În realizarea originală, o standardizată în 1983, o limbă de programare structurală, modulară care conține mijloace la nivel înalt de programare a proceselor paralele. Sintaxa a fost moștenită din limbile de tip algol sau pascal, dar extinsă și, de asemenea, a făcut mai stricte și mai logice. Ada este o limbă cu scriere strictă, este eliminată prin lucrul cu obiectele care nu au tipuri, iar transformările automate de tip sunt reduse la un minim absolut. În standardul anului 1995, au fost adăugate facilitățile de bază ale programului orientat pe obiecte în limba, în standardul 2007, aceste fonduri au fost completate, prin urmare, anunțul modern este un limbaj de programare orientat pe obiecte.

Din caracteristicile de sintaxă, puteți nota:

  • Independent de limbă independent.
  • Programele modulare, mecanismul de control al importurilor și exporturilor de descrieri între module include două directive diferite: una pentru a conecta un alt modul (cu), altul - pentru a importa descrierile sale (utilizare). De asemenea, este posibil să redenumiți modulul atunci când importați (redenumire) - această opțiune vă permite să utilizați mai convenabil un programator de identificatori convenabil pentru a desemna un pachet.
  • Pachetele (unul dintre tipurile de module) pot conține un antet și o parte personală - ceea ce este cuprins în acesta nu este exportat și alte module nu sunt disponibile.
  • Mecanismul modulelor generalizate (personalizabile) este acceptat: pachete, proceduri și funcții care permit descrierea algoritmilor de prelucrare a datelor generalizate fără a specifica un tip specific.
  • Un sistem de tip dezvoltat, atât încorporat, cât și programator generat. Există multe modalități de a crea noi tipuri, limbajul suportă două concepte diferite: "subtip" și "tip derivat". Variabilele tipului și subtipului sunt compatibile, variabile de tip și tipul derivat - nr.
  • Excepții înseamnă procesarea mijloacelor.
  • Tratamente dezvoltate la proceduri și funcții: parametrii de intrare și ieșire sunt acceptați, transmiterea parametrilor reali într-o ordine arbitrară indicând numele parametrilor formali, cu valori implicite.
  • Procedurile de suprascriere, funcțiile și operatorii sunt acceptate - crearea mai multor opțiuni pentru procedură, funcții sau operator cu același nume, dar semnături diferite (tipuri și număr de parametri).
  • Suport de proiectare încorporat pentru programarea paralelă: suportă "sarcina" (paralel cu fragmentul programului), "introducerea sarcinilor" (instrument de sincronizare și comunicare în paralel cu sarcinile de funcționare), mecanismul Rendezvu (protocolul de interacțiune în sarcini paralele efectuate prin intrare Dintr-unul dintre ele), există un operator selectat de selecție pentru organizarea interacțiunii de interpostare condiționată (selectarea unei probleme paralele cu care trebuie să interacționați, în funcție de pregătirea pentru întâlniri și alte condiții). În principiu, în limba instrumentelor de programare paralele, este suficient să rezolvăm o clasă mare de sarcini care necesită procesare paralelă fără acces la mijloace externe, cum ar fi biblioteci suplimentare sau API din sistemul de operare.

Pentru a îndeplini cerințele de fiabilitate, limba este construită astfel încât cât mai multe erori pot fi detectate la etapa de compilare. În plus, una dintre cerințele pentru dezvoltarea limbii a fost cea mai ușor de citire a textelor text, chiar și în detrimentul celei mai ușoare de scriere. Rezultatul acestei abordări a fost o sintaxă oarecum "greoaie" și multe restricții lipsesc în cele mai frecvente limbi industriale (C și C ++) și frecvent percepute de programatori profesioniști ca exces, de exemplu, aceeași tastare strictă. Acest lucru a condus la formarea ideii ADE ca limbă complexă, low-touch și incomodă.


2. "Bună ziua, lumea!" pe naiba

Câteva variante diferite ale programului "Bună ziua, Lumea!" Puteți vedea în co-cartea Viki (engleză). Diferențele se datorează necesității de a utiliza funcția Biblioteca Put_line - în această limbă există trei moduri diferite de a organiza o astfel de utilizare.

Cu ada.text_io; Procedura Bună ziua este folosită Ada.Text_io; Începeți put_line ("salut, lume!"); Sfârșitul Hello;

Aici, pentru a utiliza funcția Put_line, pachetul care conține pachetul său .Text_io este importat utilizând designul de utilizare, ceea ce face posibilă apelarea unei funcții după nume fără calificare - instrucțiuni în apelul unui nume de pachete care conține o funcție.


3. Istorie

Dezvoltarea limbii a fost realizată în cadrul concursului internațional organizat și finanțat de Departamentul Apărării al SUA. Scopul dezvoltării a fost obținerea unui limbaj de programare care ar putea fi unit pentru a dezvolta proiecte la comenzile departamentului militar, în principal pentru a dezvolta sisteme militare încorporate și pentru computerele militare mari (pe baza procesorului IAPX 432 de la Intel). Lucrarea a început în 1975, cu formarea unui set de cerințe pentru limba, care să satisfacă pe deplin dezvoltatorii sistemelor de tipul specificat. Lista inițială a cerințelor emise sub denumirea de cod "Sollar" a fost supusă unui număr de organizații și firme, timp de doi ani specificați în mod consecvent, transformând în cele din urmă într-un document final numit "oțel".

După finalizarea formării cerințelor, a fost efectuată o analiză, care a arătat că niciuna dintre limbile de programare existente nu îndeplinește cerințele suficient, deci sa decis să se dezvolte o nouă limbă. Concurența pentru creația sa a fost anunțată în 1977, dezvoltatorii au fost propuși să se bazeze pe una din cele trei limbi: Pascal, Algol-68 sau PL / 1.

Din cele 15 proiecte prezentate pentru concurs, 4 au fost selectate (totul se bazează pe Pascal). Aceste proiecte au fost trimise la rafinament ulterior. În etapa următoare, dintre care două au fost selectate din 4 proiecte, dintre care, după o altă revizuire, unul a fost selectat. Această limbă a primit numele "Iadul" - care și-a dezvoltat grupul sub conducerea francezului Jean Ishbia a dat un nume de limbă în onoarea anunțurilor Ogasta Regele Lavleis (1815-1852), fiica poetului J. Bairon, care a fost angajat În dezvoltarea de programe pentru mașina de calcul Babbja și este considerat primul programator din lume.

În 1983, limba a fost standardizată oficial standardizată. Limba de limbă ANSI / MIL-STD-1815-A-1983 a fost aprobată la 17 februarie 1983. Statele Unite au făcut numele "ADA" printr-o marcă înregistrată, forțând traducătorii de limbă care nu au adoptat procedura oficială de testare pentru respectarea standardelor. Procedura a constat într-o cursă prin compilatorul testat un numar mare (Mai mult de 1000) programe de testare (așa-numitul kit ACVC), pentru fiecare dintre care rezultatul testului a fost definit în mod unic: fie o compilație reușită, fie emiterea unui mesaj de eroare complet specific. Testarea a fost efectuată pe principiul "tuturor sau a nimic" - în cazul unei erori în procesarea cel puțin unui exemplu de testare, compilatorul a fost considerat a nu trece testul, iar testarea a fost valabilă numai pe platforma hardware și software care a fost efectuată. Astfel, posibilitatea formării "versiunilor" sau a "dialectelor" limbii a fost suprimată în embrion.

În 1987, limba iadului a fost oficial standardizată ISO. Din acel moment, SUA a dat o limbă într-o ordine publică.

Până în 1990, au existat deja aproximativ 200 de compilatori în lume, care corespund limbii iadului.

În 1995 a fost adoptat nou standard Ada, cunoscută sub numele de ADA95. Limba programului de programare a obiectului a fost introdusă în limba. În plus, limba a fost completată de mijloace mai dezvoltate pentru a interacționa cu programele scrise în alte limbi.

În martie 2007, modificările sunt publicate în standardul ADDA. Au atins, în principal, capabilități de programare orientate pe obiecte: au fost introduse interfețe, metoda de a apela metoda este obișnuită pentru majoritatea limbajelor hibride, se fac o serie de adaosuri.


4. Iadul în URSS și în Rusia

În URSS, în anii 1980, a fost organizat un grup de lucru pe limba iadului în cadrul Goskomit privind știința și tehnologia. Grupul studiază toate datele deschise (precum și zvonurile minate de inteligență închise) date despre limba iadului și a investigat posibilitatea și fezabilitatea dezvoltării și utilizării ADA în URSS. Activitatea acestui grup a condus la sfârșitul anilor '80 la dezvoltarea compilatoarelor de anunțuri pentru aproape toate computerele utilizate în URSS. Mai multe cărți în limba iadului au fost eliberate în limba rusă.

La Universitatea de Stat din Moscova, a fost efectuată lucrări la crearea propriilor pachete de testare pentru ad-traducători pentru respectarea standardelor. În LSU pentru a crea un sistem ad-dezvoltat anterior pentru implementarea sistemului Algola-68 Pallada, care a fost transferat în iad. Sistemul conține un mediu de dezvoltare integrat, compilator, editor de text, Debugger, Bibliotecă, Versiuni Control Sistem și interpret de comandă.

După prăbușirea URSS, lucrarea de răspândire a ușilor a fost practic întreruptă. Adevărat, au existat trei programe de dezvoltare a dezvoltării de software pe Ade (la Ministerul Apărării, Ministerul Aviației Civile și Ministerului Educației și Științei), dar dezvoltarea acestora este lentă și necodată. Ca rezultat, în Rusia, limba iadului este puțin cunoscută, majoritatea programatorilor moderni ruși consideră că este vorba despre el o "limbă moartă" și nu știu nimic despre el. Ada este utilizată în Rusia și CSI de entuziaști individuali. Cu toate acestea, limba este utilizată pentru dezvoltarea software-ului industrial. Este cunoscut oarecum dezvoltat pe proiectele ADE care lucrează în Rusia. Printre ei:

  • Stația documentară a Ministerului Apărării al Federației Ruse. Principala sarcină este de a asigura schimbul de informații documentare în rețelele de transfer ale Ministerului Apărării al Federației Ruse. Complexul de software și hardware a fost dezvoltat în comun de organizația de producție "echipamente de calcul și mijloace de automatizare" (hardware) și un grup de programatori din sectorul din afara centrului de trafic aerian din Caucazul de Nord "Strela". Software-ul complex este scris în limba de programare ADA utilizând compilatorul Gnat. Suportul pentru calculele distribuite se efectuează printr-o componentă suplimentară de glazură.
  • Un complex de echipamente de aeronave și de navigație standard pentru avioanele rusești amfibiene Beriev Be-200. Dezvoltarea a fost realizată de Institutul de Cercetare a Echipamentelor Aviației din Zhukovsky, împreună cu Societatea Allied American Company, Florida, SUA. A fost utilizat un complex de dezvoltare a sistemelor ad-sisteme DDC-I de pe platforma Intel 80486.

5. Critica

De la apariția ADA, a fost criticată de unele autorități recunoscute în dezvoltarea limbilor de programare, în primul rând, complexitatea sintaxei și un volum mare. În special, limba a criticat Charles Hoar și Niklaus Wirth (participând cu proiectul lor în acest concurs, dar retras după prima etapă), precum și Edsger Diacstra.

Dyacstra sa îndoit că limbajul unei astfel de complexități ca iadul poate fi previzibil și gestionat.

Dacă ADA va da standardul, este de dorit ca acesta să fie documentat fără ambiguitate. Cel puțin două grupuri au încercat să o facă; Ca rezultat, ambele au emis aproximativ 600 de pagini de text formal. Este mult mai mult decât este necesar să se asigure că imposibilitatea de a stabili cel puțin ferm că ambele documente determină aceeași limbă. Eroarea necontrolării evidente a acestor două documente nu se află în două grupuri, nu în formalismul lor, ci numai în limba: fără a asigura o definiție formală, dacă dezvoltatorii săi pot ascunde că oferă un monstru neangajat. Faptul că ADA va reduce problemele de programare și va crește fiabilitatea evoluțiilor noastre la limitele acceptabile este doar unul dintre acele basme în care pot crede numai persoanele cu educație militară.

Ficțiune științifică și realitate științifică în domeniul informaticii (Edsger W. Dijkstra, EWD952)

Har, și-a exprimat regretul că "zgomotele și jafurile au predominat asupra cerințelor fundamentale ale fiabilității și securității" și avertizează de la "Armada Rockets, care nu zboară acolo din cauza greșelilor care nu au fost găsite în compilatorul de hazel". Niklaus Wirth a vorbit mai bine restrâns, dar și negativ. El a spus: "Prea multă dintre totul cade pe programator. Nu cred că, după ce am studiat o treime din anunțuri, puteți lucra în mod normal. Dacă nu stăpâniți toate detaliile limbii, puteți continua să vă împiedicați și acest lucru va duce la consecințe neplăcute ". Jean Ishbia, șeful dezvoltatorilor ADA, exprimându-și "respectul și admirația" lui de virută, nu a fost de acord cu el, spunând: "Wirth crede în soluții simple la probleme complexe. Nu cred în astfel de miracole. Problemele complexe necesită soluții complexe. "

Cauzează îndoieli și proceduri de verificare a compilaterii compilatorului standard de limbă prin testare. Din considerente generale, este clar că testarea poate găsi o discrepanță, dar nu poate garanta corectitudinea. Confirmarea practică a acestui fapt este faptul că compilatoarele certificate, fiind testate pe un alt set de testare, a găsit o nerespectare a standardului.

Suporterii ușilor susțin că singura alternativă la un limbaj mare și complex în proiecte mari este utilizarea mai multor limbi compacte, care generează în mod inevitabil probleme cu compatibilitatea, pentru a scăpa de care a fost inventat de iad. Ei observă, de asemenea, că ideea complexității dezvoltării pe AD este adevărată numai în parte: scrierea unui program simplu pe ADE necesită într-adevăr mai mult timp decât pe alte limbi mai puțin formale, de tip Si, dar depanarea și întreținerea programelor , în special mare și complex, este foarte simplificată. Potrivit lui Stephen Cerager de la Rational Software Corporation, dezvoltarea de software pe ADE costă 60% mai ieftin, iar programul dezvoltat are de 9 ori mai mici defecte decât atunci când se utilizează limba SI.


6. Distribuție, perspective

În practică, sa dovedit că iadul, luând o nișă destinată ei în evoluțiile militare și legate de sistemele încorporate și nu au ieșit din această nișă, nici în Occident, nici în URSS sau în post-sovietic spaţiu. Există multe motive pentru acest lucru. Non-adversarii limbii se bazează pe complexitatea și dezavantajele sale, susținătorii spun, în primul rând, în circumstanțele obiective ale apariției limbii și a părților negative ale procesului de implementare. Interesant, avizul lui S.I. Rybin, un cercetător senior al Universității de Stat din NIVZ Moscova, consultantul ADACORE UE, expert în limba Grupului de lucru ISO privind standardul de limbă. El crede că eșecurile Iadului sunt obligate în două motive principale:

  • În timpul designului limbajului Pentagon, acesta a presupus că tot ceea ce software nou va fi creat numai pe ADE. Din cauza acestui iad, a primit mijloace extrem de primitive de interacțiune cu programele în alte limbi. În practică, sa dovedit că totul a fost scris în iad în general - ireal (cel puțin pentru că a fost nevoie să interacționeze cu evoluțiile gata făcute în alte limbi). Prin urmare, în industriile în care nu a existat o cerință dificilă de a scrie alte limbi, mai adaptate mediului multilingv. În 1995, a fost rezolvată problema interacțiunii cu alte limbi, dar timpul sa dovedit a fi ratat.
  • Paradoxal, distribuția anunțurilor a împiedicat sprijinul financiar și organizațional pentru Pentagon. Programele de pe Ade, scrise pentru armate, au lucrat la cea mai puternică tehnologie de calcul, care a fost disponibilă, astfel încât dezvoltatorii de compilatori au avut grijă de primul pasaj al testelor ACVC și numai atunci - cu privire la eficiența compilatorului și codul creat de acesta. La începutul anilor 1980, a început boom-ul microcomputerelor, iar traducătorii pentru limbi comune (Pascal, C, Baysik) au fost optimizate cu promptitudine pentru sistemele cu putere redusă. Pentru stimularea anunțurilor într-o asemenea modernizare, nu a fost, ca rezultat, în câțiva ani, masa principală a parcului global de computere, computerele personale s-au dovedit a fi fără traducător adeziv de înaltă calitate. Bineînțeles, Iadul a pierdut acest segment de piață. Numai un relativ recent a apărut compilatorul Gnat, de înaltă calitate și productiv, dar și timpul a fost ratat aici.

În prezent, iadul suficient de stabilit suficient în dezvoltarea unor sisteme mari încorporate de fiabilitate ridicată, aici nu are aproape nici un concurent puternic. Aplicarea limbii crește treptat, deși destul de lentă. Potrivit unor previziuni precaute [ ], Odată cu reducerea echipamentului și distribuția sistemelor încorporate cu dificultăți de comercializare a programelor de programe, se poate dezvolta considerabil, iar utilizarea limbii va crește, de asemenea.

În plus, iadul are, deși foarte limitat, utilizați în domeniul învățământului superior. În Universitatea de Stat din Moscova și Universitatea Kharkov citesc cursuri speciale în naibii. Cu toate acestea, potrivit aceluiași S. I. Rybina,

... Acum, în spațiul post-sovietic din domeniul industriei de software și formarea a existat un cerc vicios evident: în industrie practic nu știu despre iad, respectiv, din partea industriei nu există nicio cerere de Educația pentru pregătirea specialiștilor de anunțuri și oameni noi provin din universități la industrie, care practic nu știu nimic despre iad.


7. Sisteme de operare scrise în iad

7.1. Sisteme încorporate

  • Marte.
  • RTME - OS Open Source, Darpa SUA a fost dezvoltată de DARPA
  • Ravenskar.
  • RTO-32 - OS Proprietar

7.2. Sisteme de dezvoltare

  • Auroraux (proiectul de rescriere de bază OpenS0ARS, și apoi Dragonfly BSD în limba Hell)
  • Lovelace (sistem de operare pe kernel L4)

7.3. Nu mai există sisteme existente

  • Biin ™.
  • Pulse ™.
  • ADAOS.

8. ADM COMITERE AD.

Nume Companie Versiune Sistem de operare Website
Adamagic. SofCheck. HELL 95. ? www.sofcheck.com.
Adaumulti. Green Hills Software. Ada 83, Ada 95, Si, C ++, Fortran Solaris Sparc, GNU / Linux X86, Windows www.ghs.com.
Dec Ada. Hewlett Packard Ada 83. OpenVMS. h71000.www7.hp.com.
Gnat. Adacore. HELL 83, Iad 95, iad 2005, si Solaris Sparc, Linux X86 / X86-64, Ferestre, Altele libre.adacore.com.
ICC. Irvine Compiler Corporation. HELL 83, Iad 95 Dec Vax / VMS, HP 9000/700, Solaris Sparc, Dec Alpha OSF / 1, PC Linux, SGI IRIND, Windows www.irvine.com.
Janus / Ada. RR software. HELL 83, Iad 95 Sco, Unixware, Interactive, MS-DOS, Windows www.rrsoftware.com.
Maxada. Concurent. HELL 95. Linux / Xeon, PowerPC www.ccur.com.
Objectada. Aonix. HELL 95. Solaris SPARC, HP-UX, IBM Aix, Linux, Ferestre www.aonix.com.
Powerada. OC Systems. HELL 83, Iad 95 Linux, AIX (ADA 95); Sistemul IBM 370/390 (ADA 83) www.ocsystems.com.
Apex rațional. IBM Rational. Iad, c, c ++ Solaris Sparc, Linux www-01.ibm.com.
Scor DDC-I. HELL 83, ADA 95, SI, FORTRAN Solaris Sparc, Ferestre www.ddci.com.
XD ADA. Swep-eds. Ada 83. OpenVMS Alpha / Vax www.swep-eds.com.
Xgc Ada. Xgc software. HELL 83, HELL 95, SI Solaris Sparc, PC Linux, Ferestre (Cygwin) www.xgc.com.

Cu excepția Gnat și XGC (pentru unele platforme), compilatoarele de mai sus sunt plătite. Unele firme, cum ar fi Aonix, oferă versiuni de demonstrație gratuite, limitate fie de timpul de utilizare, fie prin funcționalitate.

Mediile de dezvoltare Netbeans și Eclipse au pluginuri pentru a lucra cu iadul.


9. Derivați

Sintaxa limbajului iadului este utilizată în astfel de limbi ca:

  • PL / SQL.

10. Fapte interesante

  • În mod oficial, concurența pentru dezvoltarea unei limbi, ca rezultat al limbii de iad, a fost anonimă - Grupurile de dezvoltatori au prezentat proiectele lor sub numele de coduri, astfel încât comisia de concurență să nu poată lua în considerare identitatea dezvoltatorilor atunci când alegerea unui câștigător. Dar, în practică, ca unul dintre membrii Comisiei a scris, gusturile dezvoltatorului au fost atât de diferite încât nu este dificil să se identifice autorul asupra proiectului.
  • Toate limbile care au coborât la ultimele runde ale acestui concurs au fost bazate pe Pascal. În acest sens, iadul poate fi caracterizat anterior ca Pascal, dezvoltat cu contabilitatea celor cinci cerințe de bază date. În același timp, autorii au mers în principal pe calea expansiunii Pascal cu elemente noi. Ca rezultat, sa dovedit un limbaj semnificativ mai complex.
  • În limba rusă, există glume asociate cu ambiguitatea expresiei "Bună ziua", inclusiv cele bazate pe paralele cu un limbaj algoritmic rus, cunoscut și ca "Limba paradisului". Folclorul programator include încheierea articolelor de propagandist sovietic al Malore Stura (1984):

Pentagon Limba - Inamicul lumii. Limbajul "anunțurile" - vocea termonuclearului este ... în limba "Anunțuri", blestemul rasei umane este auzit.


Notează

  1. Ghid de referință pentru AD HE 83. Capitolul 1.3. Obiective și surse de dezvoltare - www.ada-ru.org/arm83/CH01S03.HTML
  2. Vadim Stankevich. Lady Iad - www.kv.by/index2006451104.htm
  3. Actualizat standard pe iso.org - www.iso.org/iso/en/cataloguetailpage.cataloguetail?csnumber\u003d45001
  4. Bryabrin V. M. Software-ul personal ECM. M.: Science, 1988.
  5. 1 2 Interviu S. I. Rybina - www.ada-ru.org/wiki/rybin
  6. , Limbi de programare orientate pe obiecte, NET, ADA Platformă Limbi de programare, articole cu exemple de cod ADA.
    Textul este disponibil sub licența Creative Commons Attribution-ShareAlike.

Sergey Bobrovsky.

Istoria acestei limbi începe de la 1975, când Departamentul de Apărare al SUA (Mo) a decis să înceapă să dezvolte un singur limbaj de programare pentru forțele armate americane și în viitor și pentru toți NATO. Povestea lui începe cu numele, pentru iad - numele lui Augustus Auu Lavleis, care este considerat primul programator, fiica poetului englez al lui Bairon și unii Anabella Milbank, cu care soțul sa despărțit pentru totdeauna la o lună după nașterea Fiica, care a apărut pe 10 decembrie 1815. În general, istoria cibernetice este învăluită într-un mister sumbru, și numai pentru faptele fragmentare se poate judeca că diferite mistici și ocultiști în ultimele două sute de oameni au fost în ultimii două sute de ani, din august de Morgana, unul dintre profesori de ADDA și se încheie cu suportorii lui Norbert Wiener, care au studiat metodele de formare opinia publică și manipularea acestora.

După ce Charles Babbage și-a construit mașina de calcul mecanică, ADA a scris pentru primul program pentru a calcula coeficienții Bernoulli. În viitor, ea a dezvoltat o teorie reală de programare, a introdus conceptul de ciclu și mai mulți termeni-cheie, care sunt aproape literalmente învățarea astăzi studenți de facultăți cibernetice! Astăzi, Iadul este cunoscut tuturor ca primul programator - și numai, dar este surprins de faptul că tânăra are astfel de abilități unice? Ea însăși ea însăși răspunse sincer în această întrebare: "Jur că diavolul că nu ar fi de 10 ani, așa cum am văzut o anumită sumă de sânge vital din misterele universului și, deoarece nu ar fi capabil să facă moartea obișnuită și Buzele. Nimeni nu știe ce energia și puterea teribilă se află încă neutilizată în creatura mea flexibilă mică ... ". Cu toate acestea, sponsorii de pe proiectul mașinii de calcul nu au fost găsite - rachetele nucleare nu au fost încă acolo, iar iadul, pierzându-și toată statul și lovind istoria murdară, a murit la vârsta de 37 de ani, ca tatăl ei faimos.

Prin urmare, dacă americanii au atât de mult pentru a exija ca dracu, folosind numele ei ca nume pentru un astfel de proiect ambițios, întrebarea este foarte controversată.

Dar înapoi la istoria limbii în sine. La cinci ani de la începerea proiectului, sute de experți au fost selectați dintre cele 17 opțiuni, singurul care satisface cerințele MO, limba dezvoltată de un grup mic sub îndrumarea unui om de știință talentat Jean Ishbia. Versiunea finală a standardului internațional ISO 8652: 1987 a fost publicată în 1987. Potrivit rapoartelor oficiale, toți cei mai buni specialiști din domeniul programării au participat la crearea și rafinamentul acestei limbi, ceea ce, totuși, este discutabil. Acest lucru, de exemplu, este confirmat de lipsa conceptului de obiect în versiunea originală a anunțurilor și neparticiparea, din motive evidente, în acest proiect de programatori sovietici.

Zeci de miliarde de dolari au fost investite în dezvoltarea infrastructurii ADU din întreaga lume. Acest lucru a dus la apariția unor declarații ambițioase de tip "secolul al XX-lea va fi sub semnul anunțurilor", totuși, ca de obicei, viața toate înființează în locul său.

Din păcate, pentru Statele Unite (și, în consecință, din fericire pentru "potențialii adversari" ai Americii), dezvoltarea unui standard clar pentru această limbă și crearea unor compilatoare eficiente au fost finalizate doar la acel moment (începutul anilor '80), când este era deja în curs de dezvoltare la orizontul industriei de software Noua limbă C ++ cu ideologia obiectului. Este acum dificil să spunem că Comitetul dezvoltatorilor ADA a experimentat modul în care popularitatea C ++ și o paradigmă veche, bine uitată, este în creștere. Dar fondurile dedicate au fost deja cheltuite, standardul a fost creat și nu a existat niciun drum de întoarcere.

Structura ADA este foarte asemănătoare cu Pascal, și chiar mai precis, pe modul. Sintaxa celor mai mulți operatori și descrieri este practic identică cu modulele de sintaxă, deși a apărut aproape în același timp cu iadul și este greu de spus cine a influențat și dacă are un impact deloc. În naiba, în special, au fost adăugate destul de multe extensii diferite, atât de compacte, în comparație cu același Pascal, această limbă nu poate fi numită în nici un fel. Prin numărul de oportunități, acesta va reaminti mai degrabă PL / 1. Dar, deoarece accentul principal al creatorilor ușilor au fost făcute pentru respectarea dorințelor "primelor departamente" americane, atunci mijloacele de închidere (vizibilitate) a datelor și capacitatea de a crea blocuri individuale folosind numai specificații (descrieri de interfață de module) ale altor dezvoltatori pentru timpul lor cel mai perfect. De exemplu, un programator, de fapt, scrie codul pentru calcularea calea de zbor al rachetei înaripate, nici măcar nu și-a imaginat unde și în ce scopuri vor fi utilizate modulul său, deși a avut acces la specificațiile cerute ale altor angajați și ar putea să-și abordeze cu ușurință Codul de cod fără probleme. Datorită distincției stricte a accesului la diferite niveluri de specificații, uneori este imposibil să se determine pentru care această procedură va fi numită. Cu toate acestea, o astfel de dorință de dezvoltare a programului independent a condus la foarte mult sistem complex Relația dintre specificațiile modulelor și apariția unor "găuri" capabile să provoace efecte secundare, prezența căreia, totuși, Statele Unite au considerat chiar utile.

Elementele consolidate semnificativ de tastarea datelor și tipurile în sine sunt mai formalizate. Toate funcțiile asociate introducerii au fost excluse din sintaxa standard, iar prelucrarea situațiilor excepționale a devenit o parte integrantă a limbii. În plus, a fost adusă la limita de putere a structurilor de control, care au făcut-o cea mai avansată printre alte limbi de pasageri.

Borland a lansat în curând Turbo Pascal, care a fost construit în conceptul modulului și a adus versiunea lui Pascal cât mai mult posibil, dar în viitor încercările de a crea lectură limbile de programare ale celei de-a treia generații, destinate dezvoltării Proiectele super-înalte, din fericire, nu au fost întreprinse. Prin urmare, iadul a pus un punct îndrăzneț într-un șir lung de limbi simple procedurale, începând cu Fratran și Algola. De fapt, tot ceea ce ar putea fi inventat în cadrul ideologiei programării structurale a fost încorporat în ADE. Apoi, programarea obiectului a fost înflorită rapid, iar iadul sa mutat în fundal.

Cu toate acestea, această limbă încă ocupă o nișă în care nu există egal cu el. În plus față de compilarea separată a modulelor și asigurarea secretului ierarhic al specificațiilor, o astfel de proprietate a fost implementată în acest limbaj ca o programare paralelă susținută. S-au încheiat la un nivel mai mult sau mai puțin înalt în Algole-68, apoi dezvoltat în modulul 2, a fost încorporat în agenți foarte puternici ai comorilor, așa-numitele sarcini care pot fi efectuate independent unul de celălalt pe computerele paralele. Acest lucru a condus la nașterea unei ideologii întregi de programare pe baza sarcinilor care ar putea fi efectuate "pseudo-paralele" - pe un computer cu un procesor. În același timp, sarcina solidă în sine a fost împărțită într-un set de proceduri simultan de lucru, interacționând independent unul cu celălalt. Acest lucru este puțin reamintit calea de a rezolva problema pe prolog: o anumită lume virtuală este descrisă pur și simplu și apoi va fi "a început" să funcționeze, iar soluția este situată.

În mod deosebit în mod surprinzător, Statele Unite pentru un motiv sau altul abandonat ideologia obiectului, perfect încorporată

60 în Simul 67 și, probabil, a regretat-o \u200b\u200bde mai multe ori. Adevărat, o înlocuire patetică a unui număr de capabilități oferite de programarea orientată pe obiecte a fost introdusă în limba cum ar fi programarea orientată pe obiecte - așa-numitele șabloane, adică proceduri cu parametrii de tipuri incerte. Dar totuși principalele avantaje ale ușilor, permițându-i astăzi să reziste la fața unor limbi mai dezvoltate, să apară, pe lângă finanțarea puternică, sprijinul încorporat pentru sarcini paralele și mijloace puternice Coordonarea interacțiunii lor. Trebuie remarcat faptul că orientarea principală a ADA nu este în nici un caz un sistem de automatizare a contabilității în SUA și misiuni de combatere pur, de exemplu, de exemplu, cum ar fi navigația cu microprocesor în racheta de auto-dispersie în timp real, unde Este necesar să se proceseze în același timp informații, continuu de intrare dintr-o varietate de senzori mai diverși.. Anterior, aceste sarcini au fost scrise pe un asamblator, ceea ce a condus la o varietate de erori și dificultăți de acompaniament. Pentru astfel de sarcini de iad, bineînțeles, adecvate, deoarece este imposibil.

Cu toate acestea, Iadul continuă să fie poziționat și ca un instrument bun pentru dezvoltarea mare complexe de software. Adevărat, acum vocile din sprijinul acestei limbi sunt deja mai silențioase, aproximativ astfel: "Iadul cel puțin nu mai rău decât Si". MO USA, ținând seama de principalele sale greșeli - absența obiectelor, în conformitate cu cerințele moderne pentru tehnologia de dezvoltare a programului a elaborat un nou standard ISO / IEC 8652: 1985 (e). Acesta descrie versiunea limbii ADA95 (sau ADA9X). Cel mai interesant lucru este că această versiune este primul sistem de programare orientat spre obiect, pe care este introdus standardul internațional, aparent, într-o bază de comandă (cu C ++ până în prezent se dovedește). În plus, limba vizibilității datelor în caietul de module a fost îmbunătățită în limba și mijloacele de creștere a eficienței funcționării problemelor paralele.

Statele Unite se referă destul de jeinicos la creierul său dragi și chiar au înregistrat cuvântul "Ada" ca marcă comercială. Adevărat, ulterior, în loc de marcă comercială, MO a decis să utilizeze "ADA" ca semn certificat intern. Fără o mare bucurie, SUA se referă la apariția unor versiuni comerciale ale acestei limbi. Desigur, nimeni nu are dreptul să vă interziceți să vă scrieți compilatorul, dar că el primește recunoașterea comercială, respectarea acesteia este necesară pentru standardul militar, iar testarea se efectuează numai de către Comitetul AJPO cu US MO, care verifică foarte strict Compilatorul compilatorului pentru multe cerințe, inclusiv politice evident și pur.

Cu toate acestea, diferitele versiuni ale faptelor pot fi obținute, așa cum se întâmplă de obicei cu limbile de programare, adică, vreau să spun un cadou, doar nu un mod pirate, ci doar versiunea freeware și, desigur, pentru bani.

Din versiunile gratuite, în primul rând este necesar să se evidențieze compilatorul Gnat - GNU ADA95. Ca parte a proiectului GNU (distribuit liber), acesta poate fi obținut în textele sursă. Poate funcționa pe un computer cu un procesor, numai este necesar ca sistemul de operare să suporte multitasking. Aceasta poate fi, de exemplu, un fel de versiune UNIX sau OS / 2. În ceea ce privește dosul dos - ghiciți-vă singur. Cu toate acestea, dacă doriți cu adevărat să conduceți o sută de alte procese paralele asupra personalului dvs. sub dos DOS 6.x, este foarte posibil să încercați ADA / ED - compilatorul și interpretul versiunii lingvistice din 1987, care, Cu toate acestea, este complet incompatibil cu standardul și nu are o serie de elemente esențiale.

Dacă există bani, situația, desigur, este facilitată. În cadrul salariului lunar al programatorului rus intermediar, puteți achiziționa, de exemplu, FirstAda și scrieți un sistem de control al frigiderului. Sisteme mai scumpe pentru Windows, OS / 2 sau UNIX, certificate de SUA, puteți încerca să achiziționați direct de la firmele dezvoltatorilor, există aproximativ o duzină.

Interesant, standardizarea nu a fost doar limba în sine, ceea ce a făcut posibilă crearea unor programe ușor portabile, ci și un set de ajutoare pentru dezvoltatori - diverse biblioteci I / O și organizarea interfeței grafice, preprocesoare, verificatori, generatoare de cod, analizoare ale Codul sursă logic, compilatoarele programelor de testare etc. Desigur, există pachete mari care includ toate mijloacele standardizate de dezvoltare, dar sunt cel mai probabil foarte scumpe.

Ar fi foarte interesant să știți dacă URSS lucra la limbile destinate rezolvării unor sarcini militare similare. Sau specialiștii noștri scriu numai pe asamblare?

Limba lui iad este mai mult sau mai puțin întotdeauna pe audiere. Pe banca școlii am râs de numele său, în programul universitar, a fost menționat uscat ca o limbă dezvoltată la cererea Departamentului Apărării al SUA, dar numai programatorii rari au ajuns direct la sintaxă sau aplicație. De aici a existat o opinie eronată că limbajul ADA funcționează numai pe echipamentul trecut, iar nevoia de a dispărea împreună cu upgrade-uri naturale.

Și este foarte departe de adevăr.

Aspect

În anii '70 ai secolului al XX-lea, în mijlocul războiului rece, Departamentul de Apărare al SUA a aranjat o competiție internațională, pe baza rezultatelor cărora a fost necesară alegerea unui limbaj de programare pentru uz militar. Cu toate acestea, niciuna dintre limbile existente a aranjat membrii Comisiei, prin urmare, printr-o alegere lungă și mai multe îmbunătățiri ale luminii, a apărut limba iadului, numită astfel în onoarea adu Lavleis. Apoi, un magician pe termen lung cu standardizare, înregistrare comercială, interdicții pentru traducători personalizați și alte acțiuni care au bătut dorința publicului de masă pentru a lucra cu iadul.

La ieșire, sa dovedit destul de o limbă de nișă concepută pentru complexă sisteme de calcul Cu cerințe de securitate sporite. Din nou, datorită cerințelor Pentagonului și a standardelor stricte, interacțiunea cu alte limbi de programare este extrem de dificilă, deci până de curând, pentru a trece la piața de masă a iadului aproape că nu a existat practic nici o șansă. Dar, cu ieftinirea tehnologiei și complicația tehnologiilor utilizate, apare o astfel de șansă.

Sintaxă

Inițial, ADA este un limbaj de programare modulară, cu o scriere strictă a sintaxei moștenite din Pascal și Algol. Dacă ați învățat primul la școală sau institut, uitați-vă la "Bună ziua, lumea!" Trebuie să experimenteze nostalgia:

cu ada.text_io;

Procedura Hello este.
Utilizați Ada.text_io;
Începe.
Put_line ("salut, lume!");
Sfârșitul Hello;

Una dintre cerințele principale pentru limba a fost fiabilitatea utilizării sale. În consecință, aceasta a implicat restricții stricte asupra structurii, a tipurilor, a scrisului și a multor. În plus, aproape toate erorile de aici sunt urmărite la etapa de compilare.

O altă cerință a fost lizibilitatea maximă a codului în formă tipărită, care a dus la înălțimea limbajului rezultat și flexibilitatea scăzută.

Standardele ulterioare au rezolvat parțial aceste probleme, dar din motive evidente, ei nu au făcut al doilea python din iad.

Iadul astăzi

Contrar opiniei publicului larg, limba iadului este încă folosită în mod activ, nu numai în Statele Unite și nu numai în industria militară. Deci, de exemplu, parte peste avionul amfibian BERIV BE-200 este scris doar pe iad. Trenurile de metrou fără un șofer care rulează în multe orașe importante (Paris, Londra, New York, etc.), echipamente cu limbaj militar american, de asemenea, utilizați echipamente.

Și da, desigur, printre "clienții", a fost aviație militară și civilă (în special Boeing 777), rachete, transferuri, sateliți - în general, aproape întreaga listă de produse americane infinit de scumpe care implică cel mai înalt grad de securitate.

Perspective

Limba adezivă a fost criticată la momentul apariției și când a devenit clar că planurile grandioase ale Grandeei nu se potrivesc cu realitatea și chiar mai mult acum. Motivul pentru aceasta este un limbaj incomod, complexitatea standardelor scrise în 1983 și 1995, precum și de scurtă durată a dezvoltatorilor care au privat limba iadului publicului.

Cu toate acestea, aproape 40 de ani utilizare activă Se confirmă faptul că, probabil, cu sarcina sa principală, limba ADA a fost copiată - cu ea, este încă posibilă crearea unui cod fiabil pentru sistemele cu cerințe de securitate îmbunătățite. În același timp, dacă vă uitați la tendințele moderne, numărul de astfel de produse crește în mod constant: mașini cu autopilot și motoare hibride, nave spațiale private și aeronave mici, trenuri de mare viteză, precum și un număr mare de sisteme încorporate. Toate acestea reprezintă un câmp potențial pentru activitatea iadului. Adăugați aici faptul că standardul a fost redactat în mod serios și modernizat în 2012, instrumentele de lucru ies și actualizate și actualizate.

Astfel, iadul este un fragment de la cel mai plăcut trecut și unul dintre instrumentele pentru construirea unui viitor luminos. Și cu siguranță nu se va pensiona.

(Idea 2005), Eiffel (ADA 2012)

C ++, Capela, "Drago". , Eiffel, Griffin. , Java, Nim, zburați pe un parașut pentru o barcă, PL / SQL, PG / PGSQL, Ruby, Seed7, "Sparforte". , Sparkel, SQL / PSM, VHDL

Caracteristicile ADA includ: imprimare puternică, mecanisme de modularitate (pachete), în timpul verificării, procesării paralele (sarcini, mesagerie sincronă, obiecte protejate și operatori de selecție netetectistică), excludere și prelucrare generică. ADA 95 a adăugat suport pentru programarea orientată pe obiecte, inclusiv dispecerarea dinamică.

Sintaxa ADA minimizează alegerea metodelor de efectuare a operațiunilor de bază și preferă cuvintele cheie engleze (de exemplu, "sau" și "și apoi") în simboluri (cum ar fi "||" și "&&"). Iadul folosește principalii operatori aritmetici "+", "-", "*" și "/", dar evită utilizarea altor caractere. Blocurile de cod sunt limitate de cuvinte, cum ar fi "declararea", "Start" și "End", unde "capăt" (în majoritatea cazurilor) identificatorul blocului se închide (de exemplu, dacă sfârșitul, dacă ... , buclă ... sfârșitul ciclului). În cazul blocurilor condiționate, evită a vorbit înapoi Ce poate cădea cu incorect imbricate dacă expresii în alte limbi, cum ar fi C sau Java.

Iadul este conceput pentru a dezvolta sisteme software foarte mari. Pachetele ADA pot fi colectate separat. Specificația pachetului ADA (interfața pachetului) poate fi, de asemenea, compilată separat fără a verifica conformitatea. Acest lucru vă permite să detectați problemele într-o etapă timpurie la etapa de proiectare înainte de începerea implementării.

Un număr mare de verificări în timpul compilării este acceptat pentru a evita erorile care nu vor fi detectate înainte de timpul de execuție în alte limbi sau necesită verificări explicite care vor fi adăugate la codul sursă. De exemplu, sintaxa necesită un nume explicit de închidere a blocului pentru a preveni erorile datorate markerului finit inconsistent. Conformitatea cu tastarea strictă vă permite să detectați prezența erorilor software standard (parametri incorecți, tulburări de gamă, link-uri nevalide, tipuri necorespunzătoare etc.) sau în timpul compilației sau altfel în timpul executării. Deoarece paralelismul face parte din specificația limbii, compilatorul poate, în unele cazuri, să detecteze impastrii potențiali. De asemenea, compilatoarele verifică de obicei erorile de ortografie de identificatori, vizibilitatea pachetelor, declarațiile redundante etc. și pot furniza avertismente și sfaturi utile cu privire la modul de corectare a erorii.

ADA acceptă, de asemenea, verificarea verificărilor pentru a proteja împotriva accesului la memoria reținută, depășirea tamponului de eroare, tulburările de gamă, din erorile, erorile de acces și alte erori detectabile. Aceste verificări pot fi dezactivate în interesul eficienței performanței, dar pot fi adesea colectate eficient. De asemenea, include fonduri pentru a ajuta la verificarea programului. Din aceste motive, Iadul este utilizat pe scară largă în sistemele critice, în care orice anomalie poate duce la consecințe foarte grave, de exemplu, moartea dintr-un accident, rănire sau pierdere financiară severă. Exemple de sisteme în care ADA sunt utilizate includ avionice, departamente de poliție, căi ferate, bancare, militare și nave spațiale.

Gestionarea memoriei anunțurilor dinamice este un nivel ridicat și sigură de tip. Iadul nu are comună sau inepipită; Și nu declarați implicit niciun tip de indicator. În schimb, toată distribuția și eliberarea dinamică a memoriei ar trebui să aibă loc prin anunțarea explicită tipuri de acces . Fiecare tip de acces are cea corespunzătoare piscină de stocare a datelor care procesează detalii privind gestionarea memoriei la nivel scăzut; Un programator poate utiliza fie un bazin de stocare implicit, fie să definească nou (acest lucru este valabil mai ales pentru accesul la memorie neuniformă). Puteți chiar să declare mai multe tipuri diferite Accesați, care desemnează același tip, dar utilizează diferite baze de stocare. În plus, limba oferă verificări de accesibilitate ca în timpul compilației și în timpul executării, care garantează acest lucru costul accesului Nu poate fi urât de tipul de obiect, indică.

Deși semantica limbii vă permite să colectați automat gunoiul de obiecte inaccesibile, majoritatea implementărilor nu îl susțin în mod implicit, deoarece acest lucru va duce la un comportament imprevizibil în sistemele în timp real. Iadul susține forma limitată a zonei pe baza gestionării memoriei; În plus, utilizarea creativă a bazinelor de stocare poate oferi o formă limitată de asamblare automată a gunoiului, deoarece distrugerea bazinului de stocare distruge, de asemenea, toate obiectele din piscină.

istorie

Lucrul continuă să îmbunătățească și să actualizeze conținutul tehnic al limbajului de programare ADA. Corecția tehnică a AU 95 a fost publicată în octombrie 2001, iar principalul amendament, ISO / IEC 8652: 1995 / AMD 1: 2007 a fost publicat la 9 martie 2007 în Conferințele ADA-Europa 2012 din Stockholm, ADA Association Resurse (ARA ) Și -Europe a anunțat finalizarea designului ultima versiune ADA Programarea limbajului și a ghidului de referință pentru aprobarea Organizației Internaționale pentru Standardizare (ISO). ISO / IEC 8652: 2012 a fost publicată în decembrie 2012.

Alte standarde relevante includ ISO 8651 -3: 1988 Sisteme de procesare a informațiilor grafică de calculator, Sistemul de bază grafic (GKS) Legarea limbii Partea 3: iad .

Structuri lingvistice

"Salut Lume!" în Ada.

Un exemplu tipic al unei astfel de limbi în Sintaxa este HI Momentul Mondial: (Hello.Adb)

cu ada.text_io; Utilizați Ada.text_io; Procedura Bună ziua este incepe put_line ("salut, lume!"); Sfârșitul Hello;

Acest program poate fi preparat utilizând compilatorul GNAT distribuit gratuit de Open Source.

gnatmake hello.adb.

Tipuri de date

Sistemul ADA nu se bazează pe un set de tipuri primitive predefinite, ci permite utilizatorilor să-și declare propriile tipuri. Această declarație, la rândul său, nu se bazează pe vederea internă a tipului, ci pe descrierea obiectivului care ar trebui realizat. Acest lucru permite compilatorul să determine dimensiunea corespunzătoare a memoriei pentru acest tip și să verifice prezența unei încălcări de determinare a tipului în timpul compilării și a timpului de execuție (adică intervalul, depășirea tamponului, tipul de consistență etc.). ADA acceptă tipuri numerice definite în intervalul de modul de tipuri, tip agregat (înregistrări și matrice), precum și tipul de listare. Tipurile de acces determinând legătura cu instanța de tip specificată; Indicatorii ineditați nu sunt permise. Tipuri speciale furnizate în tipurile de sarcini și speciile protejate.

De exemplu, data poate fi reprezentată ca:

tipul de zi_type este intervalul 1. 31; Tipul lunar_type este intervalul 1 .. 12; Tipul Anului_type este intervalul 1800 .. 2100; Orele de tip sunt MOD 24; Tipul săptămânii este (luni, marți, miercuri, joi, vineri, sâmbătă, duminică); Data tipului este ziua înregistrării: Day_type; Luna: luna_type; An: an_type; Înregistrarea finală;

Tipurile pot fi rafinate prin declararea subtipurilor:

subtipul de lucru_hours este orele de ore 0 .. 12; - cel mult 12 ore pentru a lucra o zi Subtipul Working_Day este gama săptămânii luni .. Vineri; - Zilele la Working_load: Array Constant (Working_Day) de Working_Hours - Declarație de tip implicită: \u003d (Vineri \u003d\u003e 6, luni \u003d\u003e 4, altele \u003d\u003e 10); - tabel de căutare pentru orele de lucru cu inițializare

Tipurile pot avea modificatori, cum ar fi limited, abstract, privat etc. Tipurile private pot fi accesibile, iar tipurile limitate pot fi modificate sau copiate numai în pachetul care le definește numai. Ada 95 adaugă caracteristici suplimentare pentru expansiunea tip orientată pe obiecte.

Structuri de control

Iadul sugerează, de asemenea obiecte protejate Pentru o excepție reciprocă. Obiectele protejate reprezintă un monitor ca un design, dar, de asemenea, să utilizeze protectoare în loc de variabile condiționate pentru alarmă (zone critice condiționate). Obiectele protejate combină încapsularea datelor și o excepție reciprocă sigură de la monitoare, precum și o gardă de intrare din zonele critice condiționate. Principalul avantaj comparativ cu monitoarele clasice este că variabilele condiționate nu sunt necesare pentru a transmite semnale, evitând impasurile potențiale datorate semanticii incorecte de blocare. Pe lângă sarcină, obiectul protejat este un tip limitat construit și are, de asemenea, o declarație de parte și un organism.

Obiectul protejat constă din date personale încapsulate (care pot fi disponibile numai în cadrul obiectului protejat), precum și procedurile, funcțiile și înregistrările garantate că sunt exclusive reciproc (cu singura excepție a funcțiilor necesare pentru a fi o parte laterală efect în acest mod și poate funcționa simultan cu alte funcții). Sarcina de a apela obiectul protejat este blocată dacă cealaltă sarcină este efectuată în prezent în același obiect protejat și este eliberat atunci când această altă sarcină părăsește obiectul protejat. Activitățile blocate sunt în așteptare pe obiectul protejat al timpului de sosire ordonat.

Datele protejate ale obiectului sunt similare cu procedurile, dar, în plus, au gardian . Dacă garda este estimată ca falsă, sarcina de apel este blocată și se adaugă la coada de așteptare a acestei înregistrări; Acum, o altă sarcină poate fi permisă unui obiect protejat, deoarece niciuna dintre sarcini nu se desfășoară în prezent în cadrul obiectului protejat. Gărzile sunt supraevaluate ori de câte ori sarcina iese din obiectul protejat, deoarece acesta este singurul moment în care evaluarea gardienilor poate fi schimbată.

Apelurile înregistrate pot fi requeed. Pentru alte înregistrări cu aceeași semnătură. Sarcina care a fost blocată și adăugată la coadajul țintă; Aceasta înseamnă că obiectul protejat este eliberat și vă permite să primiți o altă sarcină.

Alege Operatorul din ADA poate fi utilizat pentru a implementa apelurile de intrare necomabile și primește, nu este determinată de selectarea înregistrărilor (și cu securitatea), timpul de așteptare și întreruperile.

Următorul exemplu ilustrează unele concepte de programare paralelă în ADA.

cu ada.text_io; Utilizați Ada.text_io; Procedura traficului este tipul Airplane_ID este intervalul 1 .. 10; - 10 avioane tip de activitate de avion (ID: Airplane_id); - sarcina reprezentând avioane, cu parametrul ID ca parametru de inițializare Tipul Airplane_ACcess este avionul de acces; - tipul de referință la pista de tip protejat avionului este - pista comună (protejată pentru a permite accesul concurent) Intrare asignată_aircraft (ID: Airplane_id); - toate intrările sunt garantate reciproc exclusive Intrarea Cleared_Runway (ID: Airplane_id); Intrare wait_for_clear; Privat clar: boolean: \u003d adevărat; - Date private protejate - General mai mult decât un pavilion ... Pista de capăt; Type Rheway_ACcess este accesul tuturor pistei; - Sarcina controlorului de trafic aerian ia cererile de decolare și aterizare Task Type Controller (My_Runway: runway_access) este - intrări de sarcini pentru trecerea mesajului sincron Intrare solicitare_takeoff (ID: în avionul_id, decolare: Out Runway_ACcess); Intrare solicitare_approach (ID: în Airplane_id; Abordare: Out Runway_ACcess); Controler final; - Alocarea de instanțe Runway1: Pista de alianță; - Instantiatul unui controler de piste1: Controler (accesul la Runway1 "); - și un controler pentru ao gestiona ------ Implementările tipurilor de mai sus ------ Pista protejată a corpului este de intrare asignată_aircraft (ID: Airplane_id) când este clar - sarcinile de gardă de intrare sunt blocate până când starea este adevărată Începeți clar: \u003d FALSE; PUT_LINE (AIRPLANE_ID "Imagine (ID) &" pe pista "); Sfârșit; Intrare Cleared_Runway (ID: Airplane_id) Când nu este clar, începe clar: \u003d TRUE, PUT_LINE (AIRPLANE_ID" Imagine (ID) și "Cleared Right"); Sfârșit; Intrare wait_for_clear atunci când este clar este null; - Nu este nevoie să faceți nimic aici - o sarcină poate intra numai dacă "Clear" este adevărat Sfârșit; Pista de capăt; Controlerul corpului de sarcini este începe cu buclă My_Runway. Wait_for_clear; - așteptați până când pista este disponibilă (blocarea apelului) SELECTAȚI - așteptați ca două tipuri de solicitări (oricare dintre acestea sunt runnabile mai întâi) Când solicitați_Aplicați "Count \u003d 0 \u003d\u003e - Declarația de pază - acceptați numai dacă nu există sarcini de așteptare la cerere_Approach Acceptați Solicitare_takeOff (ID: în Airplane_id; Dayoff: Out Runway_Access) Do - Începerea părții sincronizate My_Runway. Asignați_aircraft (ID); - pista de rezervă (eventual blocare apel dacă obiectul protejat ocupat sau gardă de intrare falsă) Decolare: \u003d my_runway; - Atribuiți valoarea parametrului "OUT" pentru a le spune avionului care pista End solicitare_takeoff; - sfârșitul părții sincronizate Sau acceptați solicitare_approach (ID: în Airplane_id; Abordare: Out Runway_ACcess) Do my_runway. Asignați_aircraft (ID); Abordare: \u003d my_runway; End cerere_approach; Sau. - Terminați dacă nu au mai rămas sarcini cine ar putea apela Termina; Selectați Selectați; Farfurie; Sfârșit; Avionul corpului de sarcini este RWY: runway_access; Începeți controlerul1. Solicitare_takeoff (ID, RWY); - acest apel blochează până când sarcina controlerului acceptă și completează blocul de acceptare PUT_LINE (AIRPLANE_ID "Imagine (ID) &" Luarea ... "); Întârzie 2.0; RWY. Cleared_Runway (ID); - Apelul nu va bloca ca "clar" în rwy este acum fals și nici o altă sarcină shold să fie în interiorul obiectului protejat Întârzierea 5.0; - Fly in jurul unui pic ... Loop Selection - Încercați să solicitați un controler de piste1. Solicitare_approach (id, rwy); - Acesta este un apel de blocare - va rula pe controler atingerea blocului de acceptare și revenirea la finalizare Ieșire; - Dacă sunați s-a returnat, vom șterge pentru aterizare - Lăsați Selectați blocul și continuați ... sau întârziere 3.0; - Timeout - Dacă nu răspunde în 3 secunde, faceți altceva (totul în blocul următor) PUT_LINE (AIRPLANE_ID "Imagine (ID) &" în model "); - Pur și simplu imprimați un capăt de mesaje Selectați; Lovitură de sfârșit, întârziere 4.0; - Abordarea de aterizare ... Put_line (Airplane_id" Imagine (ID) și "a atins în jos! "); RWY. Cleared_Runway (ID); - Notificați pista pe care am făcut-o aici aici. Sfârșit; New_airplane: avionul_access; Începeți pentru i în avionul "buclă - Creați câteva sarcini de avion Nou_airplane: \u003d noul avion (i); - va începe să ruleze imediat după creație Întârzierea 4.0; Farfurie; traficul final;

Pragma.

PRAGMA este o directivă de compilator care transmite informații compilatorului astfel încât o manipulare specifică a produselor compilate. Unele pseudocomgării sunt construite în limba și alte implementări.

Exemple de utilizare generală a compilatorului PRAGM vor dezactiva anumite funcții, cum ar fi verificarea timpului de sincronizare sau indicele matricei, verificarea limitei sau încredințarea compilatorului pentru a introduce codul obiect în loc să apeleze funcția (în C / C + + face funcția).

  • APSE - Specificații pentru mediul de programare pentru a sprijini dezvoltarea de software în ADA
  • Profilul RAVENSCAR este un subset al funcțiilor ADA Multitasking, destinat să asigure siguranța calculului critic în timp real
  • Spark (limba de programare) - limba de programare constând dintr-un subset foarte limitat al ADA adnotat cu meta-informație care descriu comportamentul dorit al componentei și cerințele individuale în timpul executării