Põrgu programmeerimiskeel. Ada (programmeerimiskeel) Programmeerimine Ada

Ada programmeerimiskeel sündis 1970. aastate keskel, kui USA kaitseministeerium ja Briti kaitseministeerium otsustasid asendada sadu spetsiaalseid programmeerimiskeeli manustatud arvutisüsteemide jaoks, mida sõjalistes projektides üha enam kasutati. Ada keel loodi ainukeseks keeleks, mis saaks töötada kõigis nendes manustatud süsteemides ning samal ajal pakkuda töökindlust ja jõudlust samal tasemel kui spetsialiseeritud süsteemid.

Pärast 1995. aasta värskendust kohandati keelt üldotstarbeliste süsteemide jaoks, lisades objektorienteeritud programmeerimise, jätmata silmist usaldusväärsuse, toe lihtsuse ja tõhususe põhiväärtusi. Tänapäeval on Adas kirjutatud tarkvara aluseks mitte ainult sõjavarustusele, vaid ka avioonika ja lennujuhtimissüsteemide kommertsprojektidele. Ada kood juhib selliseid rakette nagu Ariane 4 ja 5, paljusid satelliite ja lugematuid muid süsteeme, milles väikestel tõrgetel võivad olla tõsised tagajärjed.

Võib-olla sobib Ada teie järgmises manustatud projektis kasutamiseks.

Sõjalise kvaliteedi planeerimine

Valida uus keel programmeerimisel pani Kaitseministeerium kokku sõjaväe- ja teadusekspertidest koosneva “Kõrgetasemelise keeletöörühma (HOLWG)”, mille ülesannete hulka kuulus taotluste nimekirja koostamine ja kandidaatkeelte valimine. Selle tulemusena tekkis nn "Stillmani taotlused":

Peamised taotluse punktid olid:

  • Paindlik üldotstarbeline disain, mis kohandub manustatud andmetöötlusrakenduste vajadustega.
  • Töökindlus. Keel peaks hõlbustama usaldusväärsete programmide kavandamist ja arendamist.
  • Toetamise lihtsus. Kood peab olema loetav ja tarkvaralahendused selged.
  • Tõhusa koodi loomise lihtsus. Ebaefektiivseid kujundusi peaks olema võimalik hõlpsasti tuvastada.
  • Ei mingit asjatut keerukust. Semantiline struktuur peaks olema järjepidev ja minimeerima mõistete arvu.
  • Sõltumatus masinast. Keel ei tohiks olla seotud OS-i ega riistvara üksikasjadega.
  • Täielik määratlus. Kõik keeleosad peavad olema täielikult ja üheselt määratletud.
Raport lõppes arvamusega, et esimene kaitseliin tarkvaraprobleemide vastu on takistada programmeerijate vigu. Kõrvaldades võimalused teha peeneid vigu, nagu kaudsed tüübikonversioonid või muud ohtlikud konstruktsioonid, muudame koodi automaatselt turvalisemaks ja hõlpsamini hooldatavaks.

Töörühm jõudis järeldusele, et kuigi ükski olemasolevatest keeltest ei sobinud kaitseministeeriumi vajadustele, on täiesti võimalik luua uus keel, mis sobiks kõigi nende küsimustega. Selle töö sai neli disainerit. Vahepealse valiku käigus valiti välja kaks sobivaimat töömeetodit ning lõpuks võitis konkursi ainult üks keel, mis sai nimeks “Ada”.

Vaikimisi sisseehitatud kaitse

Ada tüübisüsteem ei ole lihtsalt range – seda nimetatakse mõnikord ülirangeks, kuna see ei võimalda mingit kaudset tüübivalu. Võtke näiteks see C-koodi tükk:

Typedef uint32_t myInt; myInt foo = 42; uint32_t bar = foo;
See on kehtiv kood; see koostab, töötab ja annab ilmse tulemuse, mis näitab vastust elu, universumi ja kõige põhiküsimusele. Põrgus see ei tööta:

Tüüp MyInt on täisarv; foo: MyInt; riba: täisarv; foo:= 42; baar:=foo;
Kompilaator annab vea, sest Integer ja MyInt ei ole sama asi. Selle lähenemisviisi peamiseks eeliseks on see, et kui programmeerija hiljem tüübimääratlust muudab, ei lase tuhanded kaudsed tüübiheitmed kogu koodibaasis programmi õhku. Selle asemel peaks tüübi ülekandmine olema selgesõnaline – see edendab head koodi, vältides segadust "piisavalt sarnaste" tüüpide vahel.

Iga programmeerija, kes on sattunud standardsete C, Linuxi ja Win32 tüüpide definitsioonide segusse, mõistab, et ei pea läbi lugematul hulgal dokumentatsiooni lehekülgi ja halvasti vormindatud koodi, et aru saada, milline typedef või makro sisaldab millegi tegelikku määratlust. takistas koostamist või tuli silumise käigus välja.

Ada lisab kompileerimise ja käitamisetappide kontrollides täiendavaid kaitsekihte. Adas peab programmeerija selgelt määrama sulgemislaused plokkide ja piiride jaoks, millesse muutuja väärtus peaks mahtuma. Põrgu ei määratle standardsed tüübid nagu int või float, kuid nõuab programmeerijalt algusest peale kindla ulatusega tüüpide loomist. See kehtib ka stringide kohta – välja arvatud piiramata stringid, on kõigil stringidel kindel pikkus.

Tööfaasis saate kontrollida vigu, nagu vale juurdepääs mälule, puhvri ületäitumine, piiridest väljas, ±1 viga ja massiivi juurdepääs. Seejärel saab neid ohutult töödelda, mitte kogu rakenduse kokkujooksmist.

Ada rakendab madala taseme osutite asemel viitetüübi mudelit. Iga viitetüüpi käsitleb mälukogum, mis on määratud vaikimisi või määratletud programmeerija poolt eksootilisemate NUMA mälurakendustega töötamisel. Programmeerija ei pea kunagi otse mälule juurde pääsema, vaid peab kasutama mälukogumi töötlejat.

Lõpuks otsustab kompilaator või programm käitusajal, kuidas andmeid funktsioonile või funktsioonist edastada. Ja kuigi iga parameetri edastamise suund peab olema määratud ("sisse", "välja" või "välja"), teeb lõpliku otsuse selle kohta, kas andmeid edastatakse registrite, hunniku või viite kaudu, kompilaator või programm käitusaeg, kuid mitte programmeerija. See hoiab ära virna ülevooluprobleemid.

Ravenscari profiil ja SPARK murre on Ada alamhulgad, kusjuures viimane keskendub lepingutele. Aja jooksul kanti nende alamhulkade omadused üle põhikeele spetsifikatsioonile.

Ada programmeerimine täna

ANSI kehtestas Ada 83 spetsifikatsiooni 1983. aastal. Intel 80286 oli just välja tulnud ja Motorola 68000 protsessor oli vaid neli aastat vana. See oli koduse andmetöötluse koidik ja ka ebamugav üleminek 1970ndatest 80ndatesse, mil mikrokontrollerite populaarsus hakkas kasvama. Kujutage ette Intel 8051 mikrokontrollerit ja selle hämmastavat 4kB EPROM-i ja 128B RAM-i.

Tänapäeval populaarsed mikrokontrollerid on kordades võimsamad kui need, mis olid aastal 1983. Võid võtta mis tahes ARM, AVR, RISC-V jne. (või Lego Mindstorms NXT komplekti) ja hakake seda samade C-põhiste tööriistade abil arendama. Pole üllatav, et populaarne GNAT Ada kompilaator põhineb GCC-l. DragonEgg projekti raames arendatakse ka LLVM-il põhinevaid tööriistu.

GCC-põhistel Ada tööriistadel on kaks versiooni. Valik AdaCore on kaubanduslikult toetatud, kuid sellel on oma omadused. Free Software Foundationi versioon on loomulikult tasuta ja on funktsionaalsuselt võrreldav AdaCore'iga.

Lihtsa alguse jaoks kasutage GNAT Programming Studio IDE-d (GPS), mis on komplektis AdaCore'iga (kopeerige Githubis), või kirjutage kood tekstiredaktorisse ja kompileerige see käsitsi või Makefile'i abil. Tööriistakomplekt on veidi keerulisem kui C või C++, kuid arenduse teeb lihtsamaks utiliit gnatmake, mis sisaldab kõiki tööriistu ja töötab sarnaselt GCC-ga.

Näide väikesest, kuid mitte triviaalsest Ada projektist, mille olete kirjutanud tõeliselt käsurea argumendi parseri kujul. Sealt leiad kaustas ada/projekt asuv Makefile, mis määrab kaustad, kust võib leida paketi spetsifikatsioonifaile (.ads) ja pakette ise (.adb).

Need failid vastavad ligikaudu C ja C++ päise- ja koodifailidele, kuid neil on ka olulisi erinevusi. Erinevalt C-st pole Adal eelprotsessorit ning see ei kombineeri kompileeritud failide loomiseks koodi ja päiseid. Selle asemel on link spetsifikatsioonis määratud paketinimele. Ka .ads-faili nimi ei pea ühtima paketi nimega. See annab suurema paindlikkuse ja hoiab ära C-s levinud probleemid ringsõltuvustega või vajadusega siduda päised kindlas järjekorras.

Kuhu edasi minna

Pärast GNAT-i tööriistakomplekti allalaadimist, GPS-i või Vim/Emacsi käivitamist ja vilkuva kursori vaatamist mõnda aega tühi leht, võite küsida, kust alustada. Õnneks käsitlesime hiljuti Ada-põhist projekti, kasutades PicoRV32 RISC-V tuuma. See kasutab tavalist ICE40LP8K CPLD-d, mida toetavad avatud lähtekoodiga FPGA tööriistakomplektid, nagu Yosys.

Dokumentatsiooni osas on sissejuhatavad artiklid algajatele, mis on suunatud Java ja C++ arendajatele, AdaCore viide, viide WikiBooksis ja loomulikult Programming in Ada 2012 dokumentatsioon. Need on ehk kõige põhjalikumad saadaolevad viited, välja arvatud 945-leheküljeline Ada 2012 Language Reference Manual (LRM).

Kuigi Ada keel on kodeerimishuviliste seas mõnevõrra haruldane, on see täiesti avatud keel koos tugevate, äriliselt toetatud arendustööriistadega ning seda kasutatakse tarkvara loomiseks kõige jaoks alates ICBM-idest ja F-15-dest kuni meditsiiniseadmete püsivarani. Kuigi see on üsna keerukas keel, mis ületab põhitõdesid, peaks see kindlasti olema nende keelte loendis, mida olete kunagi oma projektides kasutanud – isegi kui see on lihtsalt selleks, et teie CV lahedam välja näeks.

Kõrgetasemeline, keskendunud kasutamiseks reaalajas süsteemides ja mõeldud protsesside ja/või seadmete haldamise ülesannete automatiseerimiseks, näiteks pardaarvutites (laev, lennundus).

Ada keel töötati välja USA kaitseministeeriumi initsiatiivil 1980. aastatel, nime sai matemaatik Ada Augusta Lovelace (1815-1851). Keele kujundamisel pöörati tähelepanu eelkõige töökindlusele ja efektiivsusele – keel loodi spetsiaalselt suurte reaalajas tarkvarasüsteemide arendamiseks manussüsteemidele, mis nõuavad kõrged nõuded usaldusväärsus; Esiteks on need süsteemid sõjaliseks otstarbeks.
Ada keel põhineb struktureeritud programmeerimise ideedel ja tagab keerukate mitme mooduli programmide arendamise, masina kõrge sõltumatuse ja kaasaskantavuse. Ada sisaldab Pascali-sarnaste keelte funktsioone, nagu tüübimääratlus, tavalised juhtimisstruktuurid ja rutiinid, aga ka pärast 1970. aastat välja töötatud programmeerimiskeeleteooria edusamme. Keel toetab loogilist modulaarsust, mille puhul andmed, tüübid ja rutiinid võivad kõik olla paketid. Füüsiline modulaarsus saavutatakse eraldi kompileerimisega. Ada keel toetab reaalajas programmeerimist paralleelstamise ja erandite käsitlemise mehhanismide kaudu. Süsteemi programmeerimine toetab juurdepääs süsteemist sõltuvatele parameetritele ja täppisjuhtimine andmete esitamisel.

1974. aastaks kasutas USA kaitseministeerium paljusid erinevaid programmeerimiskeeli. See suurendas aja- ja rahakulu uute süsteemide väljatöötamisele ja personali tehnilisele ümberõppele. Ministeeriumi juhid jõudsid järeldusele, et vaja on kasutada ühtset programmeerimiskeelt. 1975. aastal lepiti kokku sellise keele nõuete loetelu. Ükski tol ajal eksisteerinud programmeerimiskeel (nt Pascal, ALGOL-68 või PL/1) ei vastanud nõuetele. Seetõttu otsustati 1977. aastal luua uus keel ja selle arendamiseks kuulutati välja konkurss. Kõigist ettepanekutest valiti välja neli (igaüks neist oli Pascali laiendus) hilisemaks läbivaatamiseks ja täiustamiseks. Hiljem valiti nende hulgast täiendavaks selgituseks välja kaks ja finaalis valiti Cii-Honeywell Bulli esitletud projekt. Sellele keelele anti nimi Ada (keele nimi oli algselt DOD-1).

1983. aastal võeti vastu keelestandard ANSI/MIL-STD-1815A ja 1987. aastal võeti kasutusele rahvusvaheline standard ISO 8652. 1987. aastal ilmusid esimesed tõhusad Ada tõlkijad. ISO standard vaadati üle 1995. aasta alguses (ANSI/ISO/IEC 8652). Uus standard parandas paljud algkeele väljajätmised ja puudused ning täiendas seda paljude uute kasulike funktsioonidega, nagu näiteks protseduuritüübid, mis põhinevad osuti tüübid(st mittedünaamiliste objektide osutajad), hierarhilised teegid, täiendavaid vahendeid samaaegsuse kontroll, palju standardseid teeke. Lisaks tutvustas Ada-95 objektorienteeritud programmeerimise tuge.
Järgmist standardit nimetati mitteametlikult Ada-2005, hoolimata asjaolust, et seda ei olnud 2005. aastal veel vastu võetud. Ada kogukond otsustas loobuda traditsioonist, nimetades standardit mitteametlikult avaldamisaasta järgi, kuna kõik selle peamised parameetrid lepiti kokku 2005. aastal. Keel lisas mitu pärandit, eesliitega juurdepääsu objektimeetoditele, paindlikumaid viitetüüpe, täiustatud ülesannete haldust ja suure hulga uusi standardseid teeke. Lisaks vastab Ada-2005 standardile ISO/IEC 10646 (2003), mis lubab identifikaatorite (muutujate, funktsioonide nimetuste) nimedes kasutada vene ja kreeka tähestiku tähti.
Adat peetakse nii USA kui ka NATO sõjaväelaste ühiseks programmeerimiskeeleks.

Lisaks kasutatakse Adat suurte süsteemide ehitamiseks, millel on kõrged töökindlusnõuded, näiteks: juhtimine arvutisüsteemid lennunduses (sh tsiviil); suure kiirusega arvutisüsteemide juhtimine raudteed; pangasüsteemid; tööstusautomaatika ja robootika; Meditsiiniseadmed; telekommunikatsioonisüsteemid.

Ada on kasutusel USA ja Lääne-Euroopa kõrgkoolides programmeerimise õppimise alusena ning seda kasutatakse sageli teadus- ja arendustegevuses. Ada programm kontrollib juhita rongide liikumist Pariisi metroos. Paljud ettevõtted on spetsialiseerunud kompilaatorite, erinevate teekide ja tööriistade arendamisele, hõlmates laia valikut riistvaraplatvorme ja operatsioonisüsteeme. Lisaks kommertsarendustööriistadele on vabalt saadaval ka kompilaatorite versioonid, nagu ObjectAda firmalt Aonix või GNAT firmalt Ada Core Technologies.

Ada on kõige standardiseeritud programmeerimiskeel. Rahvusvaheline standard võeti vastu enne, kui tõlkijate esimesed tööversioonid olid kättesaadavad, vältides sellega vastuolusid Ada erinevate murrete vahel. Ada on SI-st ja C++-st parem andmete sisestamise ranguse, eraldi kompileerimise paindlikkuse, võime luua väga töökindlaid reaalajas süsteeme, funktsioonide parameetrite range kontrollimise vahendite olemasolu ja indeksite laiendamise üle piiride. massiivid (80% C/C++ programmide loomisel tekkivatest vigadest on just sellega seotud) ja binaarväärtuste masinast sõltumatu esitus (bititoimingute asemel tõmmatakse kirje väljad). Samal ajal on Ada semantiliselt ja süntaktiliselt läbipaistev, seega on seda lihtsam õppida kui Java.

Ada on C/C++-st madalam uute operatsioonisüsteemide toetamise, aga ka hooldus-, silumis- ja genereerimistööriistade kättesaadavuse poolest. graafilised liidesed. Kuid keelestandard sisaldab automaatselt genereeritud spetsifikatsioone teiste programmeerimiskeeltega liidestamiseks ning praktikas kasutatakse koos Adaga Fortrani matemaatilisi teeke, C-keeles kirjutatud süsteemifunktsioone ja Java-klasse Internetiga töötamiseks. Seetõttu on olemas mitmekeelsed integreeritud arenduskeskkonnad, mis toetavad muid keeli peale Ada, näiteks IBM Rational Ada Developer (C/C++/Ada).

Ada rakendab nii automaatset prügikoristust (nagu Java või C# puhul) kui ka mälu otse vabastamise võimalust (nagu C, C++, Pascal). Nagu C/C++ puhul, on ka Adas saadaval rikkalikud madalatasemelised vahendid. Sisseehitatud multitegumtöötluse tugi on Ada programmeerimiskeele ainulaadne omadus, mis eristab seda enamikust programmeerimiskeeltest. Seda tuge ei paku laiendused ega välised teegid, vaid standardiseeritud tööriistad, mis on otse programmeerimiskeelde sisse ehitatud.

Kui küsida kodumaise IT-spetsialisti käest: “Mis on Ada?”, kehitab enamik vaid üllatunult õlgu ja mõni ütleb isegi, et see on surnud keel, mille leiutas kunagi Pentagon ja mida nüüd praktiliselt ei kasutata. Tegelikult on Ada isegi tänapäeval täiesti jõukas programmeerimiskeel, mida kasutatakse aktiivselt erinevates valdkondades. Tõsi, enamik Venemaa programmeerijaid teab sellest vähe.

Tõenäoliselt olid kõik, kes pidid kasutama Pariisi metroo neljateistkümnendat liini, üllatunud, kui nägid esimest korda rongi, milles polnud juhikabiini. Rongi liikumist sellel liinil kontrollib täielikult Ada programm.

Vaatamata kõigele on Venemaa teatud tehnoloogiavaldkondades endiselt "ülejäänutest ees". Ja üks neist on amfiiblennukite projekteerimine ja tootmine. Selle valdkonna rahvusvaheliselt tunnustatud liider on oma nime saanud TANTK. G.M. Beriev. Ettevõte ostis hiljuti Ada keelel põhinevad pardatarkvara arendustööriistad, mida kasutada selle uuendamiseks uusim mudel Ole -200.

Samal ajal ei tea enamik kodumaistest IT-spetsialistidest parimal juhul ada keelest midagi ja halvimal juhul on neil adast kui koletise keelest täiesti vale ettekujutus, mille Pentagon kunagi leiutas sõjaliste süsteemide arendamiseks ja nüüd täiesti unustatud.

Natuke ajalugu

Ada programmeerimiskeele ametlikuks sünnipäevaks võib lugeda 17. veebruari 1983 – ANSI/MIL-STD-1815-A-1983 standardi kinnitamise kuupäeva.

Kaitseministeeriumi Ada loomise ja juurutamise projekti raames võetud tehnilised ja administratiivsed meetmed hoidsid täielikult ära keelemurrete tekke ja leviku. Alates 1983. aastast kuni tänapäevani toetavad kõik tööstuslikud rakendused praegust Ada standardit. Kui rääkida Ada alamhulkadest, siis need alamhulgad ei ole määratud mitte rakendamise, vaid konkreetse süsteemide klassi arendusstandardite järgi.

1987. aastal võeti ANSI standard ühegi muudatuseta üle ISO standardiks (ISO/IEC 8652) ning kui 1990. aastate alguses muutus vajadus standardi revisjoni järele, tehti revisjonitööd ka juhtimisel ja USA kaitseministeeriumi rahalised vahendid. Käivitati uus rahvusvaheline projekt, mis lõppes heakskiitmisega 1994. aasta lõpus ja avaldamisega 1995. aasta alguses. uus versioon standard ISO/IEC 8652. Just see dokument on tänapäeval Ada programmeerimiskeele määratlus.

NSV Liidus moodustati 80ndate alguses riikliku teaduse ja tehnoloogia komitee juurde programmeerimiskeele Ada töörühm. Kogu teave koguti hoolikalt ja analüüsiti avatud teave projekti kohta ning eriteenistuste jõupingutustel saadi ka salastatud teavet. Ada juurutamiseks korraldati projekte peaaegu kõikidele tol ajal kasutusel olnud arvutiarhitektuuridele ja mõned neist osutusid väga edukaks. NSV Liidu lagunemine tegi sellele tegevusele lõpu. Tänapäeval kasutavad Adat Venemaal ja SRÜs üksikud entusiastid.

Mis on Ada

Kõik kaasaegsed tööstuskeeled pakuvad sisuliselt sama põhikomplekt võimalused, mis ei erine mitte selle poolest, mida nad teil teha lubavad, vaid selles, kuidas nad seda täpselt võimaldavad. Kuid Ada laiendab tänapäevaste keelte standardset võimaluste komplekti vähemalt kahes aspektis. Esiteks pakub Ada asünkroonsete protsesside jaoks kõrgetasemelisi programmeerimistööriistu. Teiseks on see ainus keel, mida saab ilma reservatsioonideta nimetada modulaarseks.

Selline näide on lihtsalt vajalik selleks, et kummutada üsna laialt levinud müüt, et ada on suur, keeruline ja “raske” keel, mis sobib ainult ülisuurte ja ülikeeruliste süsteemide kirjutamiseks. Tegelikult saab Adat kasutada väikeste ja keskmise suurusega programmide arendamiseks sama edukalt kui tänapäevased C, Pascali, BASICu ja Java kloonid. Niisiis, klassikaline näide saatest "Tere, maailm!" Adas näeb välja selline:

On lihtne näha, et Ada kood sarnaneb selle prototüübiks valitud Pascali koodiga. Esimene rida kirjeldab selle koostatud mooduli seost teiste moodulitega – see näitab, et Hello_World rutiin tuleks kompileerida koos mooduliga Ada.Text_IO, mis on eelmääratletud teegi komponent.

Järgmine programm määratleb kaks asünkroonset protsessi:

Protseduuri Tasking_Example kohalike deklaratsioonide jaotis kirjeldab väljundtoimingut (rida 6; read 8–17 sisaldavad selle ülesande sisu). Kui juhtimine protsessis Tasking_Example, mis vastab protseduurile Tasking_Example, jõuab reale 20, käivitatakse enne selle esimese lause täitmist väljundülesandele vastav protsess, misjärel need kaks protsessi elavad ja käivituvad asünkroonselt üksteisest sõltumatult. Viivituse avalduse täitmine (read 14 ja 20) seisneb vastava protsessi peatamises määratud sekundite arvuks. Seega peatatakse protsess Tasking_Example 20 sekundiks, samal ajal kui väljundprotsess alustab järkjärguliste loendurite väärtuste printimist, peatudes pärast iga väärtuse printimist üheks sekundiks. 20 sekundi pärast määrab protsess Tasking_Example lipu Lõpetatud väärtuseks Tõene, lõpetades tsükli väljundprotsessis. Muutuja Valmis määratlemine aatomi andmeobjektina (rida 4) muudab võimatuks selle muutuja samaaegse lugemise ja väärtuse muutmise.

Allpool on funktsioonimall, mis võimaldab teil komponentide kaupa lisada kaks ühemõõtmelist massiivi. Selle malli saab määrata suvalisele tüübile, mis on ühemõõtmeline massiiv, mille komponentidel on määratletud määramis- ja liitmistoimingud (liitmine ei pea olema aritmeetiline liitmine).

Read 1-6 sisaldavad kohandatud funktsiooni deklaratsiooni ja read 8-20 sisaldavad selle sisu. Sisuliselt on seadistusparameeter suvaline ühemõõtmeline määramata indeksivahemikuga korrapärane tüüp (rida 4), mille kohta on teada vaid, et selle komponendi tüüp on suvaline, kuid omistamisoperatsioon on komponentidele defineeritud (rida 2), indeksi tüüp on suvaliselt diskreetne (rida 4) . Kuna me lisame kaks massiivi komponentide kaupa, peame teadma, milline on komponenditüübi lisamise toiming. Kuna see on suvaline tüüp, oleme sunnitud andma komponenditüübi lisamise formaalse seadistusparameetrina (rida 5).

Funktsiooni kehas kontrollime esmalt, kas operandide pikkused on samad (rida 12), muidu pole komponentide kaupa liitmist mõtet. Operandi pikkuste sobitamine ei taga indeksi vahemike sobitamist, seega peame esimese argumendi indeksi vahemiku (rida 15) tsüklis iga kord arvutama teise argumendi vastava komponendi indeksi. Me ei saa seda teha tüübi Indeks puhul, kuna me teame ainult selle kohta, et see on diskreetne, seega liigume diskreetse tüübi väärtuselt selle järgarvuni (atribuut?Pos), arvutame järgarvu jaoks vajaliku nihke ja pöörduge tagasi tüübi Indeks vastava väärtuse juurde (atribuut?Val).

Pange tähele, et (kohandatud) funktsiooni "+" parameetrid Left ja Right on deklareeritud tüüpi Arr, mille indeksi vahemik on määramata. Vasak ja parem on aga formaalsed parameetrid, mille asemele (konkretiseerimise tulemusel) funktsiooni “+” kutsumisel asendatakse kindlad teadaolevate indeksivahemikega massiivid. Funktsiooni “+” kehas kasutame massiivi atribuute (?Range, ?First, ?Length), et saada objektilt teavet selle indeksivahemiku kohta.

Miks Ada?

Varem oli tarkvaraprojekti jaoks keele valimine puhtalt tehniline küsimus. Tänaseks on sellest saanud strateegilise tähtsusega küsimus, millel on kaugeleulatuvad tagajärjed projekti edule. Loetleme mõned põhjused, miks ada keel valiti erinevate ettevõtete tarkvaraprojektide elluviimiseks või muudeti hangete raames kasutamiseks kohustuslikuks.

  • Soov tõsta arendatava süsteemi töökindlust, kuna tarkvaravigadel võivad olla tõsised tagajärjed inimeste tervisele, majandusele, keskkonnale jne. (Adal on sisseehitatud töökindlusfunktsioonid.)
  • Soov vähendada süsteemi arendamise ja hoolduse kulusid.
  • Rahvusvaheliste standardite ja keelekompilaatorite kättesaadavus peaaegu igale platvormile.
  • Tarkvaraarenduse distsiplineeritud lähenemisviisi eelised muutuvad eriti oluliseks, kui tarkvara suurus ja keerukus kasvab.
Ada ja Si

Läbiviimisel võrdlevad analüüsid Populaarsetest keeltest on nii palju koopiaid purustatud, et tänapäeval liigitatakse seda teemat sageli "ususõdadeks". Seetõttu piirdume vaid viitega tuntud artiklile, mis teeb mitmeid kõnekaid järeldusi.

  1. Ada keeles programmide arendamine maksab 60% vähem kui C-s rakendatud sarnased tarkvaraprojektid.
  2. Ada programmis on 9 korda vähem defekte kui C programmis; C++ programmil on isegi madalamad omadused kui C-programmil.
  3. eelistatakse C-le nii kogenud kui ka kogenematute programmeerijate jaoks, samuti programmeerijate jaoks, kellel on oma rühmas nii maksimaalne kui ka minimaalne reiting.
  4. Ada keele õppimise keerukus ei ole suurem kui C õppimise keerukus.
  5. Ada programmid on usaldusväärsemad kui C-programmid.

Nende järelduste illustreerimiseks toome näite lennuki C-130J pardatarkvara arendamise kohta vastavalt DO-178B standardi A taseme nõuetele. Samal ajal oli koodi kvaliteet 10 korda kõrgem kui A-taseme tarkvara puhul Tööjõu tootlikkus tõusis võrreldavate tarkvaraprojektidega võrreldes neli korda.

Ada ja Java

Microsoft oli sunnitud lisama oma operatsioonisüsteemide litsentsilepingutesse järgmise klausli ( www.microsoft.com/msdownload/ieplatform/ie/license.txt): "Märkus Java keele toe kohta... Java-tehnoloogia ei ole tõrkekindel ega ole mõeldud... kasutamiseks reaalajas juhtimissüsteemides... kus Java keele rike võib põhjustada surma, vigastusi, või raskeid kahjustusi infrastruktuurile või keskkonnale. Sun Microsystems, Inc. kohustatud Microsofti ettevõte postitage see hoiatus."

Samuti juhime tähelepanu artiklitele, mis näitavad Ada keele eeliseid Java ees.

"Põrgu" müüdid

Üsna sageli seostatakse Adat püsivate väärarusaamadega, mis takistavad nii keele levikut kui ka Ada teadlikku valikut projekti elluviimise keeleks.

Ada on surnud keel; Tegelikult hõivab Ada enesekindlalt suurte manustatud süsteemide niši, mille töökindlusnõuded on kõrged. Võrreldes Windowsi "karbis" toodetega pole sellised süsteemid nii märgatavad, kuna need on kas ühes eksemplaris (mis on metroorongide liikumist kontrolliva programmi paljundamisel) või levitatakse süsteemi osana mille nad on ehitatud (pardatarkvara).

Ada on keel, mis on mõeldud ainult sõjaliseks kasutamiseks. Ada töötati tõepoolest välja USA kaitseministeeriumi osalusel, kuid puuduvad tehnilised, administratiivsed või muud põhjused, mis takistaksid Ada kasutamist tsiviilsüsteemide arendamiseks. Sellel keelel põhinevate "tsiviilprojektide" arv on tänapäeval võrreldav "sõjaliste" projektide arvuga.

Ada on liiga suur ja keeruline keel, et seda väikeses projektis kasutada. Kõigi kaasaegsete tööstuskeelte maht ja keerukus on peaaegu samad ning selles veendumiseks piisab, kui võrrelda nende kirjelduste mahtu. See müüt pärineb 80ndate algusest, kui Adat võrreldi Pascali, Fortran 77 või BASICiga.

Vähe on programmeerijaid, kes tunnevad Adat keele nullist õppimine nõuab liigset pingutust ja aega. Tegelikult on tõeline raskus leida spetsialiste, kes mõistavad manussüsteemide eripära ja suudavad luua neile kvaliteetseid programme. Näiteks BAE, üks ada keele aktiivsetest kasutajatest, ei nõua kandidaatidelt selle keele oskust; selle asemel otsitakse inimesi, kes tunnevad manustatud süsteeme ja protsesse tööstusliku kvaliteediga tarkvara loomiseks. Pärast selliste inimeste palkamist kulub neile põrgu keele õpetamiseks vaid kaks nädalat.

Meie isiklik kogemus näitab, et mõne Pascali maitsega tuttavad programmeerijad vajavad Adas lihtsate programmide väljatöötamise alustamiseks vaid paar päeva.

Olemasolevad Ada tehnoloogiad on ebaefektiivsed; Nii tõlkijaid kui ka nende loodud koodi iseloomustab madal jõudlus. See müüt pärineb ka 80ndate esimesest poolest, kui ilmusid esimesed Ada teostused, mis tegelikult tõestasid "standardile vastava Ada tõlkija olemasolu teoreemi". Piisab lihtsate katsete seeriast, programmeerides Ada, Pascali ja C/C++ mudeliprobleemi ning seejärel võrdledes (võrreldavate kompilaatori parameetritega) kompileerimiskiirust, genereeritud koodi mahtu ja selle täitmise kiirust. kindel, et Adale iseloomulikke konkreetseid ebaefektiivsusi pole lihtsalt olemas. Samuti võib märkida, et GNAT programmeerimissüsteem, mille lähteteksti maht on üle 40 MB, on 90% ulatuses Adas juurutatud ja selle ülesehitamine lähtetekstidest (käegu jooksul kompileerib end kolm korda) võtab tänapäevasel arvutil. mitte rohkem kui pool tundi.

Olemasolevad Ada rakendused on äärmiselt kallid. See on tõsi, kuid pidage meeles, et GNAT-i programmeerimissüsteemist on olemas avalikult kättesaadav versioon, mida saab vabalt ja legaalselt hankida NYU tarkvarahoidlast ( ftp://cs.nyu.edu/pub/gnat) koos lähtetekstidega

Tasuta juust ja kuidas vältida hiirelõksu

GNAT (GNu Ada Translator) on Ada keele mitmeplatvormiline rakendus, mis eksisteerib peaaegu kõigil kaasaegsetel tööstusplatvormidel ja toetab koodi genereerimist populaarsete manustatud arhitektuuride jaoks. GNAT ( www.gnat.com) rakendab täielikult Ada standardit, sealhulgas neid teeke, mis on standardi järgi klassifitseeritud valikulisteks. Lisaks Ada tõlkijale endale sisaldab GNAT tööriistu, mis sisaldavad väljatöötatud integreeritud arendajakeskkonda ja mitmekeelset graafilist silurit, mis võimaldab muuhulgas uurida asünkroonsete protsessidega programmide käitumist. Tõlkijat ja sellega seotud tööriistu saab kasutada kas eraldi, neid käsurealt kutsudes või Ada programmide integreeritud graafilise arenduskeskkonna osana. Kõikidel GNAT-i komponentidel, sealhulgas arenduskeskkonnal, on kõigil platvormidel sama liides. Lisaks standardis kirjeldatud tööriistade täielikule rakendamisele pakub GNAT rikkalikku standardiga lubatud laienduste komplekti. GNAT on Ada rakendus gcc mitmekeelses programmeerimissüsteemis, mis koosneb erinevate sisestuskeelte esiotsa kompilaatorite komplektist koos ühise koodigeneraatoriga, mis lihtsustab oluliselt erinevates programmeerimiskeeltes rakendatud komponente sisaldavate programmide väljatöötamist.

GNAT on algusest peale välja töötatud ja levitatud GPL litsentsi all. Kahjuks on GPL-iga seotud ka palju müüte. Seetõttu usuvad paljud, et GPL-i alla kuuluvaid programme arendavad organiseerimata entusiastide rühmad ja neid levitatakse täiesti tasuta; Seetõttu jätavad nii selliste programmide töökindlus kui ka funktsionaalsus soovida ega võimalda neid kasutada tõsistes projektides. GNAT-i puhul pole see kaugeltki tõsi. Selles veendumiseks piisab, kui vaadata nimekirja ettevõtetest, kes on sõlminud oma arendajatega lepingud tehniline abi: Boeing, British Aerospace, Lockheed, Ericsson, SAAB, Avionics jne.

Demoversioonide tasuta pakkumine on paljude tarkvaraarendajate tava. GNAT erineb selle poolest, et vabalt kättesaadav avalik versioon on absoluutselt täisversioon tehnoloogiat, ilma selle kasutamise õiguslike või tehniliste piiranguteta. GNATi avalike versioonide põhjal on edukalt ellu viidud mitmeid tõsiseid projekte. Tarkvara Euroopa robotijaama Mars Express maandurist Beagle 2, suundumas Sel hetkel Marsile ( www.beagle2.com/index.htm), Vene Föderatsiooni kaitseministeeriumi automaatne dokumentaalsidejaam ( www.ada-ru.org/prj_doc.html). Avalike versioonide ainsaks puuduseks on see, et arendaja ei paku neile tehnilist tuge.

Järeldus

Kokkuvõtteks võib öelda, et Ada keel pakub arendajatele ideaalse kombinatsiooni terviklikkusest, järjepidevusest, usaldusväärsusest ja tõhususest. Keel toetab loomingulist loovust ja innovatsiooni, pakkudes samal ajal juurutamiseks vajalikku tarkvaraarenduse distsipliini ja tööstuslikku taset tarkvarasüsteemid suure tähtsusega.

Kirjandus
  1. Benjamin Brosgol, Ada 95 sissejuhatus. www.embedded.com/story/OEG20021211S0034
  2. Stephen Zeigler, C ja Ada arenduskulude võrdlemine. www.adaic.com/whyada/ada-vs-c/cada_art.html www.ada-ru.org. Veebilehelt leiab vene keeles ilmunud adakeelsete raamatute kommenteeritud bibliograafia

Teema kokkuvõte:

Ada



Plaan:

    Sissejuhatus
  • 1 Keele omadused
  • 2 "Tere, maailm!" Ada kohta
  • 3 Ajalugu
  • 4 Põrgu NSV Liidus ja Venemaal
  • 5 Kriitika
  • 6 Levitamine, väljavaated
  • 7 Ada keeles kirjutatud operatsioonisüsteemid
    • 7.1 Manussüsteemid
    • 7.2 Süsteemid arendamisel
    • 7.3 Pole enam olemasolevaid süsteeme
  • 8 Põrgu koostajat
  • 9 Tuletatud keeled
  • 10 Huvitavaid fakte
  • Märkmed
    Kirjandus

Sissejuhatus

Ada (Ada) on programmeerimiskeel, mis loodi aastatel 1979–1980 USA kaitseministeeriumi projekti tulemusena, mille eesmärk oli arendada ühtset programmeerimiskeelt manussüsteemidele (st reaalajas töötavatele automatiseeritud süsteemide juhtimissüsteemidele). Eelkõige peeti silmas sõjaliste objektide (laevad, lennukid, tankid, raketid, mürsud jne) pardajuhtimissüsteeme. Arendajad ei seisnud silmitsi universaalse keele loomise ülesandega, seega tuleks Ada autorite otsused langetada valitud ainevaldkonna eripärade kontekstis. Keel on oma nime saanud Ada Lovelace'i järgi.


1. Keele tunnused

Algsel kujul, standardiseeritud 1983. aastal, on Ada struktureeritud modulaarne programmeerimiskeel, mis sisaldab kõrgetasemelisi paralleelse protsessi programmeerimise võimalusi. Ada süntaks on päritud sellistest keeltest nagu Algol või Pascal, kuid seda on laiendatud ning muudetud ka rangemaks ja loogilisemaks. Ada on tugevasti trükitud keel, see välistab töö objektidega, millel pole tüüpe, ja automaatsed tüübiteisendused on viidud absoluutse miinimumini. 1995. aasta standardis lisati keelele põhilised objektorienteeritud programmeerimise tööriistad 2007. aasta standardis, neid tööriistu täiendati, seega on tänapäevane Ada objektorienteeritud programmeerimiskeel.

Süntaksi funktsioonide hulka kuuluvad:

  • Keel on tõstutundlik.
  • Programmid on modulaarsed, moodulitevahelise kirjelduste impordi-ekspordi juhtimise mehhanism sisaldab kahte erinevat direktiivi: üks teise mooduli ühendamiseks (koos), teine ​​selle kirjelduste importimiseks (kasutamiseks). Samuti on võimalik moodulit importimise käigus ümber nimetada (ümbernimetada) – see valik võimaldab kasutada paketi tähistamiseks programmeerijasõbralikumaid identifikaatoreid.
  • Paketid (üks moodulitüüpidest) võivad sisaldada päist ja privaatset osa – selles sisalduvat ei ekspordita ja see pole teistele moodulitele kättesaadav.
  • Toetatud on üldistatud (kohandatavate) moodulite mehhanism: paketid, protseduurid ja funktsioonid, mis võimaldavad kirjeldada üldistatud andmetöötlusalgoritme ilma konkreetset tüüpi määramata.
  • Välja töötatud tüüpide süsteem, nii sisseehitatud kui ka programmeerija loodud. Uute tüüpide loomiseks on palju võimalusi ja keel toetab kahte erinevat mõistet: "alatüüp" ja "tuletatud tüüp". Tüübi ja selle alamtüübi muutujad ühilduvad, tüübi ja selle tuletatud tüübi muutujad mitte.
  • Erandlikud käitlemisvõimalused.
  • Välja töötatud vahendid protseduuridele ja funktsioonidele juurdepääsuks: toetab sisend- ja väljundparameetreid, tegelike parameetrite edastamist suvalises järjekorras koos formaalsete nimetustega, parameetrite vaikeväärtustega.
  • Toetatud on protseduuride, funktsioonide ja operaatorite ümberdefineerimine - protseduuri, funktsiooni või operaatori mitme variandi loomine sama nimega, kuid erinevate signatuuridega (parameetrite tüübid ja arv).
  • Keelde sisseehitatud paralleelse programmeerimise tugistruktuurid: toetatud on mõisted “task” (paralleelselt täidetav programmi fragment), “task input” (paralleelselt jooksvate ülesannete sünkroonimise ja suhtlemise vahend), toetatud on “rendezvous” mehhanism ( protokoll paralleelselt töötavate ülesannete interaktsiooniks ühe neist sisendi kaudu), on operaator SELECT tingimusliku lõimedevahelise interaktsiooni korraldamiseks (valib paralleelülesande, millega suhelda, sõltuvalt kohtumisvalmidusest ja mõnest muust tingimusest ). Põhimõtteliselt piisab selles keeles saadaolevatest parsuure hulga probleemide lahendamiseks, mis nõuavad paralleelset töötlemist, kasutamata väliseid tööriistu, nagu täiendavad teegid või operatsioonisüsteemi API-d.

Usaldusväärsuse nõuete täitmiseks on keel üles ehitatud nii, et võimalikult palju vigu tuvastatakse koostamise etapis. Lisaks oli keele arendamisel üks nõue, et programmitekstid oleksid võimalikult hõlpsasti loetavad, isegi kirjutamise lihtsuse arvelt. Selle lähenemisviisi tulemuseks oli mõnevõrra "raske" süntaks ja paljud piirangud, mis puuduvad kõige levinumates tööstuskeeltes (C ja C++) ning mida professionaalsed programmeerijad tajuvad sageli üleliigsetena, näiteks sama range trükkimine. See viis ideeni Adast kui keerulisest, ebaselgest ja ebamugavast keelest.


2. "Tere, maailm!" Ada kohta

Programmi "Tere, maailm!" mitu erinevat versiooni on näha Vikiraamatutes. Erinevused tulenevad vajadusest kasutada teegi funktsiooni Put_Line – sellel keelel on kolm erinevaid viise sellise kasutamise korraldamine.

Koos Ada.Text_IO ; protseduur Tere on use Ada.Text_IO ; begin Put_Line("Tere, maailm!" ) ; lõpp Tere;

Siin imporditakse funktsiooni Put_Line kasutamiseks seda sisaldav pakett Ada.Text_IO, kasutades konstruktsiooni use, mis võimaldab funktsiooni ilma kvalifikatsioonita nime järgi kutsuda - täpsustades kõnes funktsiooni sisaldava paketi nime.


3. Ajalugu

raames viidi läbi keele arendamine rahvusvaheline võistlus, mille korraldas ja rahastab USA kaitseministeerium. Arenduse eesmärk oli saada ühtseks programmeerimiskeel, mis võiks muutuda ühtseks militaarosakonna tellimuste projektide arendamiseks, peamiselt militaarotstarbeliste manussüsteemide arendamiseks ja suurte sõjaväearvutite jaoks (alates iAPX 432 protsessori baasil). Intel). Töö algas 1975. aastal, kui koostati keelenõuete kogum, mis seda tüüpi süsteemide arendajaid täielikult rahuldaks. Esialgne nõuete loetelu koodnimetusega "Straw" esitati läbivaatamiseks paljudele organisatsioonidele ja ettevõtetele ning seda täiustati järk-järgult kahe aasta jooksul, saades lõpuks lõplikuks dokumendiks nimega "Teras".

Pärast nõuete täitmist viidi läbi analüüs, mis näitas, et ükski olemasolevatest programmeerimiskeeltest ei vastanud nõuetele piisavalt, mistõttu otsustati välja töötada uus keel. Konkurss selle loomiseks kuulutati välja 1977. aastal, kus arendajatel paluti kasutada ühte kolmest keelest: Pascal, Algol-68 või PL/1.

Konkursile laekunud 15 projektist valiti välja 4 (kõik Pascali järgi). Need projektid saadeti edasiarenduseks. Järgmises etapis valiti neljast projektist välja kaks, millest pärast edasist täpsustamist valiti välja üks. Sellele keelele pandi nimeks “Ada” – selle välja töötanud rühm prantslase Jean Ishbia juhtimisel andis keelele nime Augusta Ada King Lovelace’i (1815-1852), luuletaja J. Byroni tütre, kes selle välja arendas. programmid Babbage'i arvutile ja teda peetakse maailma esimeseks programmeerijaks.

Aastal 1983 standardiseeris keele ametlikult ANSI. Keelestandard ANSI/MIL-STD-1815-A-1983 kiideti heaks 17. veebruaril 1983. aastal. USA kaitseministeerium muutis nime “Ada” registreeritud kaubamärgiks, keelates vabastada keeletõlkeid, kes ei ole läbinud ametlikku standarditele vastavuse testimise protseduuri. Protseduur seisnes suure arvu (üle 1000) käivitamises läbi testitud kompilaatori testprogrammid(nn ACVC komplekt), mille igaühe puhul määrati üheselt testi tulemus: kas edukas koostamine või väga spetsiifilise veateate valmistamine. Testimine viidi läbi põhimõttel “kõik või mitte midagi” – kui vähemalt ühe testinäite töötlemisel ilmnes viga, loeti kompilaator testi läbikukkunuks ning testimine kehtis ainult sellel riistvaral ja tarkvaraplatvorm, millel see läbi viidi. Nii näpistati aada keele „versioonide” või „murdete” kujunemise võimalus eos.

1987. aastal standardis ada keel ametlikult ISO poolt. Sellest hetkest alates tegi USA kaitseministeerium keele avalikkusele kättesaadavaks.

1990. aastaks oli maailmas juba umbes 200 Ada keelestandardile vastavat koostajat.

1995. aastal võeti vastu uus Ada standard, mida tuntakse kui Ada95. Keelde võeti kasutusele objektprogrammeerimise vahendid. Lisaks täiendati keelt arenenumate vahenditega teistes keeltes kirjutatud programmidega suhtlemiseks.

2007. aasta märtsis avaldati Ada standardi muudatused. Peamiselt puudutasid nad objektorienteeritud programmeerimise võimalusi: tutvustati liideseid, võeti kasutusele enamiku hübriidkeelte jaoks ühine meetodi kutsumise süntaks ja tehti mitmeid muid täiendusi.


4. Ada NSV Liidus ja Venemaal

NSV Liidus 80ndatel korraldati riikliku teadus- ja tehnikakomitee juurde ada keele töörühm. Rühm uuris kõiki avatud (aga ka kuulujuttude järgi salaja luure kaudu saadud) ada keele andmeid ning uuris ada keele arendamise ja kasutamise võimalikkust ja teostatavust NSV Liidus. Selle rühma tegevus viis 80. aastate lõpuks Ada kompilaatorite väljatöötamiseni peaaegu kõigi NSV Liidus kasutatavate arvutite jaoks. Vene keeles on ilmunud mitu adakeelset raamatut.

Moskva Riiklik Ülikool töötas selle nimel, et luua oma paketid Ada tõlkijate standarditele vastavuse testimiseks. Leningradi Riiklikus Ülikoolis kasutati Ada süsteemi loomiseks varem Algol-68 juurutamiseks välja töötatud süsteemi Pallada, mis anti üle Adale. Süsteem sisaldab integreeritud arenduskeskkonda, kompilaatorit, tekstiredaktorit, silurit, teeke, versioonikontrollisüsteemi ja käsutõlki.

Pärast NSV Liidu lagunemist Ada levitamise töö praktiliselt katkes. Tõsi, kolm programmi Ada tarkvaraarenduse arendamiseks on vastu võetud (Kaitseministeeriumis, Lennundusministeeriumis ning Haridus- ja Teadusministeeriumis), kuid nende areng on aeglane ja koordineerimata. Seetõttu on ada keel Venemaal vähe tuntud; enamik tänapäeva vene programmeerijaid peab seda "surnud keeleks" ega tea sellest midagi. Adat kasutavad Venemaal ja SRÜ-s üksikud entusiastid. Keelt kasutatakse aga tööstustarkvara arendamiseks. Teada on mitmeid Adas välja töötatud ja Venemaal tegutsevaid projekte. Nende hulgas:

  • RF kaitseministeeriumi dokumentaalsidejaam. Peamine ülesanne on tagada dokumentaalse informatsiooni vahetus Kaitseministeeriumi andmevõrkudes Venemaa Föderatsioon. Tarkvara- ja riistvarakompleksi töötasid ühiselt välja tootmisorganisatsioon "Arvutitehnoloogia ja automaatika" (riistvara) ja Põhja-Kaukaasia lennujuhtimiskeskuse "Strela" off-road-sektori programmeerijate rühm. Kompleksi tarkvara on kirjutatud Ada programmeerimiskeeles kasutades GNAT kompilaatorit. Pakutakse hajutatud andmetöötluse tuge lisakomponent GLADE.
  • Vene amfiiblennuki standardsete lennu-, navigatsiooni- ja sideseadmete komplekt Beriev Be-200. Arendustööd teostas Žukovskis asuv Lennundusseadmete uurimisinstituut koos Ameerika ettevõttega Allied Signal, Florida, USA. Kasutati DDC-I Ada-süsteemide arenduskompleksi Inteli platvorm 80486.

5. Kriitika

Alates ilmumisest on Adat kritiseerinud mõned programmeerimiskeele arendamise valdkonna tunnustatud autoriteedid, eelkõige selle süntaksi keerukuse ja suure mahu tõttu. Eelkõige kritiseerisid keelt Charles Hoar ja Niklaus Wirth (kes osalesid oma projektiga sellel konkursil, kuid langesid pärast esimest etappi välja), samuti Edsger Dijkstra.

Dijkstra kahtles, kas nii keeruline keel nagu Ada saab olla jälgitav ja hallatav.

Kui Ada kavatseb standardi välja anda, soovib ta, et see oleks üheselt dokumenteeritud. Vähemalt kaks rühma on seda proovinud; selle tulemusena koostasid mõlemad umbes 600 lehekülge ametlikku teksti. Seda on palju rohkem, kui on vaja veendumaks, et on võimatu isegi kindlalt kindlaks teha, et mõlemad dokumendid määratlevad sama keele. Nende kahe dokumendi näilise kontrollimatuse süü ei seisne mitte kahes rühmas, kes need koostasid, mitte nende poolt omaks võetud formalismis, vaid ainult keeles endas: formaalset määratlust esitamata võivad nende väljatöötajad varjata tõsiasja, et nad teevad ettepaneku. kontrollimatu koletis. See, et Ada vähendab programmeerimisprobleeme ja suurendab meie disainilahenduste usaldusväärsust vastuvõetavate piirini, on vaid üks neist muinasjuttudest, mida võivad uskuda ainult sõjaväelise taustaga inimesed.

Ulme ja teaduslik tegelikkus arvutiteaduses (Edsger W. Dijkstra, EWD952)

Hoar kahetses, et "kellad ja viled on ülimuslikud töökindluse ja ohutuse põhinõuete ees" ning hoiatas "rakettide armaad, mis lähevad valele teele Ada kompilaatoris leiduva vea tõttu". Niklaus Wirth rääkis vaoshoitumalt, aga ka negatiivselt. Ta ütles: "Programmeerijale visatakse liiga palju. Ma ei usu, et pärast kolmandiku Ada õppimist saate normaalselt töötada. Kui te ei valda kõiki keele detaile, võite tulevikus nende otsa komistada ja see toob kaasa ebameeldivad tagajärjed." Ada arendusmeeskonna juht Jean Ishbia, väljendades Wirtile oma "austust ja imetlust", ei nõustunud temaga, öeldes: "Wirth usub lihtsaid lahendusi keerulised probleemid. Ma ei usu sellistesse imedesse. Keerulised probleemid nõuavad keerulisi lahendusi.

Kahtlust tekitab ka koostaja keelestandardile vastavuse kontrollimise kord testimise teel. Üldiselt on selge, et testimine võib leida ebakõlasid, kuid ei saa tagada õigsust. Selle praktiline kinnitus on tõsiasi, et sertifitseeritud kompilaatorid avastasid erinevate testide komplektiga testimisel standardile mittevastavuse.

Ada pooldajad väidavad, et ainuke alternatiiv suurele ja keerulisele keelele suurtes projektides on mitme kompaktse keele kasutamine, mis paratamatult tekitab ühilduvusprobleeme, millest vabanemiseks Ada leiutati. Samuti märgivad nad, et idee Adas arendamise keerukusest peab paika vaid osaliselt: lihtsa programmi kirjutamine Adas võtab rohkem aega kui teistes vähem formaalsetes keeltes, nagu C, kuid programmide silumine ja hooldamine on eriti oluline. suured ja keerulised, on oluliselt lihtsustatud. Stephen Zeigeri sõnul Rational Software Corporationist on Adas tarkvaraarendus üldiselt 60% odavam ning väljatöötatud programmil on 9 korda vähem defekte kui C-keele kasutamisel.


6. Jaotus, väljavaated

Praktikas selgus, et Ada, olles hõivanud oma kavandatud niši sõjalises ja sellega seotud manustatud süsteemide arendustegevuses, ei väljunud sellest nišist kunagi ei läänes, NSV Liidus ega postsovetlikus ruumis. Sellel on palju põhjuseid. Keele vastased keskenduvad selle keerukusele ja puudustele. Huvitav arvamus S.I. Rybinilt, Moskva Riikliku Ülikooli Teadusuuringute Arvutuskeskuse vanemteadur, AdaCore EU konsultant, ada keele ekspert töögrupp ISO keelestandard. Ta usub, et Ada võlgneb ebaõnnestumises kahel peamisel põhjusel:

  • Keele kujundamisel eeldas Pentagon, et kogu uus tarkvara luuakse ainult Adas. Seetõttu sai Ada väga primitiivsed vahendid teiste keelte programmidega suhtlemiseks. Praktikas selgus, et kõige ada keeles kirjutamine oli ebareaalne (kui ainult sellepärast, et oli vaja suhelda teiste keelte valmisarendustega). Seetõttu eelistasid nad tööstusharudes, kus ei olnud ranget nõuet "ainult ada keeles kirjutada", teisi keeli, mis olid mitmekeelse keskkonna jaoks rohkem kohandatud. 1995. aasta standard lahendas teiste keeltega koostalitlusvõime probleemi, kuid aeg läks kaotsi.
  • Paradoksaalsel kombel takistas Ada levikut Pentagoni rahaline ja organisatsiooniline toetus. Sõjaväe jaoks kirjutatud Ada programmid töötasid kõige võimsamatel arvutitehnoloogia, mis oli saadaval, nii et kompilaatorite arendajad hoolisid ennekõike ACVC-testide läbimisest ning alles seejärel kompilaatori ja selle toodetava koodi tõhususest. 1980. aastate alguses algas mikroarvutite buum ja tavakeelte (Pascal, C, BASIC) tõlkijad optimeeriti kiiresti vähese energiatarbega süsteemide jaoks. Ada jaoks polnud stiimulit selliseks moderniseerimiseks, mistõttu jäid personaalarvutid, millest sai mõni aasta hiljem maailma arvutipargi põhiosa, ilma kvaliteetse Ada tõlkijata. Loomulikult kaotas Ada selle turusegmendi. Alles suhteliselt hiljuti ilmus GNAT-i kompilaator, kvaliteetne ja produktiivne, kuid ka siin läks aeg kaotsi.

Praegu on Ada suurte, suurema töökindlusega manustatud süsteemide väljatöötamisel üsna kindlalt juurdunud, siin pole tal praktiliselt ühtegi tugevat konkurenti. Keelekasutus suureneb järk-järgult, kuigi üsna aeglaselt. Mõnede ettevaatlike prognooside kohaselt [ ], odavama riistvara ja keeruka tarkvaraga manussüsteemide levikuga võib Ada programmide turg oluliselt kasvada, samuti kasvab keelekasutus.

Lisaks on Ada rakendus kõrghariduses, kuigi väga piiratud. Ada-teemalisi erikursusi õpetatakse Moskva Riiklikus Ülikoolis ja Harkovi Ülikoolis. Samas S.I. Rybini sõnul

... nüüd on postsovetlikus ruumis tarkvaratööstuse ja hariduse vallas välja kujunenud ilmselge nõiaring: tööstuses nad Adast praktiliselt ei tea, seega ei taotleta ka tööstusest haridust. koolitada Ada spetsialiste ja ülikoolidest tuleb tööstusesse uusi inimesi, kes ei tea Adast praktiliselt midagi.


7. Ada keeles kirjutatud operatsioonisüsteemid

7.1. Manussüsteemid

  • MARTE
  • RTEMS on avatud lähtekoodiga OS, mille on välja töötanud USA kaitseministeeriumi DARPA
  • Ravenskar
  • RTOS-32 - patenteeritud OS

7.2. Süsteemid arendamisel

  • AuroraUX (projekt OpenSolarise tuuma ja seejärel DragonFly BSD ümberkirjutamiseks Ada keelde)
  • Lovelace ( operatsioonisüsteem tuumal L4)

7.3. Pole enam olemasolevaid süsteeme

  • BiiN™
  • Pulse™
  • AdaOS

8. Põrgu koostajad

Nimi Ettevõte Versioon operatsioonisüsteem Veebileht
AdaMagic SofCheck Ada 95 ? www.sofcheck.com
AdaMULTI Green Hillsi tarkvara Ada 83, Ada 95, C, C++, Fortran Solaris SPARC, GNU/Linux x86, Windows www.ghs.com
DEC Ada Hewlett Packard Ada 83 OpenVMS h71000.www7.hp.com
GNAT AdaCore Ada 83, Ada 95, Ada 2005, Si Solaris SPARC, Linux x86/x86-64, Windows ja teised libre.adacore.com
ICC Irvine Compiler Corporation Ada 83, Ada 95 DEC VAX/VMS, HP 9000/700, Solaris SPARC, DEC Alpha OSF/1, PC Linux, SGI IRIX, Windows www.irvine.com
Janus/Ada RR tarkvara Ada 83, Ada 95 SCO, UnixWare, Interactive, MS-DOS, Windows www.rrsoftware.com
MAXada Samaaegne Ada 95 Linux/Xeon, PowerPC www.ccur.com
ObjectAda Aonix Ada 95 Solaris SPARC, HP-UX, IBM AIX, Linux, Windows www.aonix.com
PowerAda OC süsteemid Ada 83, Ada 95 Linux, AIX (Ada 95); IBM System 370/390 (Ada 83) www.ocsystems.com
Ratsionaalne tipp IBM Rational Ada, C, C++ Solaris SPARC, Linux www-01.ibm.com
SKORE DDC-I Ada 83, Ada 95, C, Fortran Solaris SPARC, Windows www.ddci.com
XD Ada SWEP-EDS Ada 83 OpenVMS Alpha/VAX www.swep-eds.com
XGC Ada XGC tarkvara Ada 83, Ada 95, Si Solaris SPARC, PC Linux, Windows (Cygwin) www.xgc.com

Välja arvatud GNAT ja XGC (mõnede platvormide puhul), on ülaltoodud kompilaatorid tasulised. Mõned ettevõtted, näiteks Aonix, pakuvad tasuta demoversioone, mille kasutusaeg või funktsionaalsus on piiratud.

NetBeansi ja Eclipse'i arenduskeskkondadel on Adaga töötamiseks pistikprogrammid.


9. Tuletatud keeled

Ada keele süntaksit kasutatakse sellistes keeltes nagu:

  • PL/SQL

10. Huvitavad faktid

  • Formaalselt oli Ada loomisega lõppenud keelearenduskonkurss anonüümne - arendusmeeskonnad esitasid oma projektid koodnimede all, et konkursikomisjon ei saaks võitja valikul arendajate isikuid arvestada. Kuid praktikas, nagu üks komisjoni liige kirjutas, olid arendajate maitsed nii erinevad, et projekti autorit polnud raske kindlaks teha.
  • Kõik selle konkursi lõppvooru jõudnud keeled põhinesid Pascalil. Sellega seoses võib Adat tinglikult iseloomustada kui Pascalit, mis on välja töötatud antud viit põhinõuet arvesse võttes. Samas läksid autorid peamiselt Pascali uute elementidega laiendamise teed. Tulemuseks oli oluliselt keerulisem keel.
  • Vene keeles leidub nalju, mis on seotud väljendi “Põrgu keel” mitmetähenduslikkusega, sealhulgas nalju, mis põhinevad paralleelidel vene algoritmilise keelega, mida tuntakse ka “TAEVA keelena”. Programmeerimisfolkloori on jõudnud ka nõukogude propagandisti Melor Sturua artikli järeldus (1984):

Pentagoni keel on rahu vaenlane. “Ada” keel on termotuumapõrgu hääl... “Ada” keeles on kuulda inimsoo needust.


Märkmed

  1. Ada keele teatmik 83. Peatükk 1.3. Arengu eesmärgid ja allikad - www.ada-ru.org/arm83/ch01s03.html
  2. Vadim Stankevitš. Lady Ada – www.kv.by/index2006451104.htm
  3. Värskendatud standard saidil iso.org – www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=45001
  4. Bryabrin V. M. Tarkvara personaalarvutitele. M.: Nauka, 1988.
  5. 1 2 Intervjuu S.I. Rybiniga – www.ada-ru.org/wiki/rybin
  6. , Objektorienteeritud programmeerimiskeeled, NET platvormi programmeerimiskeeled, Ada, Artiklid Ada koodinäidetega.
    Tekst on saadaval Creative Commonsi Attribution-ShareAlike litsentsi alusel.