Ada on erityisen hyvä ohjelmointikieli. Ada (ohjelmointikieli) - Wikiwand Ada (ohjelmointikieli) Ada ohjelmointikieli

Jos kysyt kotimaiselta IT-asiantuntijalta: "Mikä Ada on?", Suurin osa vain kohauttaa olkapäitään yllättyneenä, ja joku jopa sanoo, että tämä on kuollut kieli, jonka Pentagon on kerran keksinyt ja jota nyt ei käytännössä käytetä. Itse asiassa Ada on nykyään varsin vauras ja aktiivisesti käytetty ohjelmointikieli eri aloilla. Totta, useimmat venäläiset ohjelmoijat tietävät hänestä vähän.

Todennäköisesti jokainen, joka joutui käyttämään Pariisin metron neljättätoista linjaa, yllättyi nähdessään junan, jossa ei ollut ohjaamoa. Junaliikennettä tällä radalla ohjaa täysin Ada-ohjelma.

Kaikesta huolimatta Venäjä on tietyillä tekniikan alueilla edelleen "edellä muita". Ja yksi niistä on amfibiolentokoneiden suunnittelu ja tuotanto. Maailmankuulu johtaja tällä alalla on TANTK im. G.M. Beriev. Yhtiö osti äskettäin Ada-pohjaiset ohjelmistokehitystyökalut käytettäväksi uusimman Be-200-mallinsa päivittämisessä.

Samaan aikaan suurin osa kotimaisista IT-asiantuntijoista ei parhaimmillaan tiedä mitään ada-kielestä, ja pahimmillaan heillä on täysin väärä käsitys adasta hirviökielenä, jonka Pentagon kerran keksi kehitystä varten. sotilaallisista järjestelmistä ja nyt kokonaan unohdettu.

Hieman historiaa

Ada-ohjelmointikielen virallisena syntymäpäivänä voidaan pitää 17. helmikuuta 1983 - ANSI / MIL-STD-1815-A-1983-standardin hyväksymispäivää.

Puolustusministeriön tekniset ja hallinnolliset toimenpiteet osana Adan luomis- ja toteutusprojektia estivät täysin kielen murteiden syntymisen ja leviämisen. Vuodesta 1983 tähän päivään kaikki alan toteutukset tukevat nykyistä Ada-standardia. Mitä tulee Adan osajoukkoon, nämä osajoukot eivät määräydy toteutuksen, vaan tietyn järjestelmäluokan kehitysstandardien perusteella.

Vuonna 1987 ANSI-standardi hyväksyttiin ISO-standardiksi ilman ainuttakaan muutosta (ISO/IEC 8652), ja kun tarve uudistamiseen kypsyi 1990-luvun alussa, tehtiin myös tarkistustyötä johdolla ja Yhdysvaltain puolustusministeriön kustannuksella. Käynnistettiin uusi kansainvälinen projekti, joka päättyi ISO / IEC 8652 -standardin uuden version hyväksymiseen vuoden 1994 lopussa ja uuden version julkaisemiseen vuoden 1995 alussa. Juuri tämä asiakirja toimii nykyään Adan määritelmänä. ohjelmointikieli.

Neuvostoliitossa 1980-luvun alussa muodostettiin Ada-ohjelmointikielen työryhmä valtion tiede- ja teknologiakomitean alaisuudessa. Kaikki hanketta koskeva avoin tieto kerättiin ja analysoitiin huolellisesti, ja turvaluokiteltu tieto hankittiin erityispalveluiden avulla. Adan toteuttamiseksi suunniteltiin projekteja lähes kaikkiin silloin käytössä oleviin tietokonearkkitehtuureihin, joista osa osoittautui erittäin onnistuneiksi. Neuvostoliiton hajoaminen lopetti tämän toiminnan. Nykyään Adaa käyttävät Venäjällä ja IVY-maissa yksittäiset harrastajat.

Mikä on Ada

Kaikki nykyaikaiset teolliset kielet tarjoavat olennaisesti samat perusominaisuudet, jotka eivät eroa siinä, mitä ne sallivat sinun tehdä, vaan siinä, miten ne antavat sinun tehdä sen. Ada kuitenkin laajentaa nykyisten kielten standardiominaisuuksia ainakin kahdessa suhteessa. Ensinnäkin Ada tarjoaa korkean tason ohjelmointityökaluja asynkronisille prosesseille. Toiseksi se on ainoa kieli, jota voidaan kutsua modulaariseksi ilman varauksia.

Esimerkki tästä on yksinkertaisesti välttämätön, jotta voidaan kumota melko yleinen myytti, että Ada on suuri, monimutkainen ja "raskas" kieli, joka soveltuu vain supersuurien ja supermonimutkaisten järjestelmien kirjoittamiseen. Itse asiassa Adalla voidaan kehittää pieniä ja keskisuuria ohjelmia samalla menestyksellä kuin nykyaikaiset C-, Pascal-, BASIC- ja Java-kloonit. Esimerkiksi klassinen esimerkki "Hei, maailma!" näyttää tältä Adassa:

On helppo nähdä, että Adan koodi on samanlainen kuin Pascalin koodi, joka valittiin sen prototyypiksi. Ensimmäinen rivi kuvaa tämän käännetyn moduulin suhdetta muihin moduuleihin - se osoittaa, että Hello_World-rutiini tulisi kääntää yhdessä Ada.Text_IO-moduulin kanssa, joka on ennalta määritetyn kirjaston komponentti.

Seuraava ohjelma määrittelee kaksi asynkronista prosessia:

Tasking_Example-proseduurin paikallinen määritysosio kuvaa Outputter-tehtävän (rivi 6, rivit 8–17 sisältävät tämän tehtävän rungon). Kun ohjaus Tasking_Example-proseduuria vastaavassa prosessissa saavuttaa rivin 20, Outputter-tehtävää vastaava prosessi käynnistetään ennen tämän ensimmäisen käskyn suorittamista, minkä jälkeen kaksi prosessia elävät ja toimivat asynkronisesti toisistaan ​​riippumatta. Viivelauseen (rivit 14 ja 20) suorittaminen koostuu vastaavan prosessin keskeyttämisestä määritetyksi sekuntimääräksi. Siten Tasking_Example-prosessi keskeytyy 20 sekunniksi, kun taas Outputter-prosessi alkaa tulostaa kasvavan laskurin arvoja pysähtyen sekunniksi kunkin arvon tulostuksen jälkeen. 20 sekunnin kuluttua Tasking_Example-prosessi asettaa Finished-lipun arvoon tosi, mikä päättää Outputter-prosessin silmukan. Muuttujan Finished määrittely atomitietoobjektiksi (rivi 4) tekee mahdottomaksi lukea ja muuttaa tämän muuttujan arvoa samanaikaisesti.

Seuraava on funktiomalli, jonka avulla voit lisätä kaksi yksiulotteista taulukkoa komponentti kerrallaan. Tämä malli voidaan asettaa mielivaltaiseen tyyppiin, joka on yksiulotteinen taulukko, jonka komponenteille on määritetty osoitus- ja summausoperaatiot ("lisäyksen" ei tarvitse olla aritmeettista yhteenlaskua).

Rivit 1-6 sisältävät mukautetun funktion ilmoituksen ja rivit 8-20 sisältävät sen rungon. Pohjimmiltaan asetusparametri on mielivaltainen yksiulotteinen säännöllinen tyyppi, jolla on määrittelemätön indeksialue (rivi 4), josta tiedetään vain, että sen komponenttityyppi on mielivaltainen, mutta osoitustoiminto on määritelty komponenteille (rivi 2), indeksityyppi on mielivaltainen diskreetti (rivi 4) . Koska aiomme lisätä kaksi taulukkoa komponentti kerrallaan, meidän on tiedettävä, mikä on komponenttityypin lisäystoiminto. Koska tämä on mielivaltainen tyyppi, joudumme syöttämään komponenttityypin summauksen muodollisena asetusparametrina (rivi 5).

Toiminnon rungossa tarkistetaan ensin, ovatko operandien pituudet samat (rivi 12), muuten komponenttikohtaisessa yhteenlaskemisessa ei ole järkeä. Operandipituuksien täsmääminen ei takaa täsmääviä indeksialueita, joten ensimmäisen argumentin indeksialueen silmukassa (rivi 15) meidän on laskettava toisen argumentin vastaavan komponentin indeksi joka kerta. Emme voi tehdä tätä Indeksi-tyypille, koska tiedämme siitä vain, että se on diskreetti, joten siirrymme diskreetin tyypin arvosta sen järjestysnumeroon (?Pos-attribuutti), laskemme järjestysluvun tarvittavan siirtymän , ja palaa vastaavaan indeksityypin arvoon (attribuutti?Val).

Huomaa, että vasen ja oikea (mukautettu) funktioparametrien "+" on ilmoitettu olevan tyyppiä Arr, jonka indeksialue on määrittelemätön. Vasen ja Oikea ovat kuitenkin muodollisia parametreja, joiden tilalle "+"-funktiota kutsuttaessa (konkretisoinnin tulos) korvataan tietyt taulukot, joilla on tunnetut indeksialueet. Käytämme taulukon attribuutteja (?Range, ?First, ?Length) "+"-funktion rungossa saadaksemme tietoa sen indeksialueesta objektista.

Miksi Ada?

Ohjelmistoprojektin kielen valinta oli aiemmin puhtaasti tekninen asia. Nykyään tästä on tullut strategisesti tärkeä asia, jolla on kauaskantoisia vaikutuksia hankkeen onnistumiseen. Tässä muutamia syitä, miksi Ada-kieli valittiin useiden yritysten ohjelmistoprojektien toteuttamiseen tai tehtiin pakolliseksi tarjouskilpailuissa.

  • Halu parantaa kehitettävän järjestelmän luotettavuutta, koska ohjelmistovirheillä voi olla vakavia seurauksia ihmisten terveydelle, taloudelle, ympäristölle jne. (Adassa on sisäänrakennettu luotettavuus).
  • Halu vähentää järjestelmän kehittämisen ja ylläpidon kustannuksia.
  • Kansainvälisten standardien läsnäolo ja kielikääntäjien saatavuus lähes kaikille alustoille.
  • Ohjelmistokehityksen kurinalaisesta lähestymistavasta saatavat hyödyt, jotka kasvavat ohjelmistojen määrän ja monimutkaisuuden kasvaessa.
Ada ja Si

Suosittujen kielten vertailevissa analyyseissä on rikottu niin monia kopioita, että nykyään tätä aihetta kutsutaan usein "uskonnollisiksi sotiksi". Siksi rajoitamme viittauksen tunnettuun artikkeliin, jossa tehdään useita kaunopuheisia johtopäätöksiä.

  1. Adassa ohjelmien kehittäminen on 60 % halvempaa kuin C:ssä toteutetut vastaavat ohjelmistoprojektit.
  2. Ada-ohjelmassa on 9 kertaa vähemmän vikoja kuin C-ohjelmassa; C++-ohjelmalla on jopa huonommat ominaisuudet kuin C-ohjelmalla.
  3. sekä kokeneet että kokemattomat ohjelmoijat sekä ohjelmoijat, joilla on sekä korkeimmat että alhaisimmat arvosanat, suosivat C:tä.
  4. Adan kielen oppimisen työlisyys ei ole korkeampi kuin C:n oppimisen työläs.
  5. Ada-ohjelmat ovat luotettavampia kuin C-ohjelmat.

Havainnollistamaan näitä johtopäätöksiä annamme esimerkin C-130J-lentokoneen sisäisen ohjelmiston kehittämisestä DO-178B-standardin tason A vaatimusten mukaisesti. Samaan aikaan koodin laatu oli 10 kertaa korkeampi kuin Tier A -ohjelmistojen keskiarvo.Työn tuottavuus kasvoi neljä kertaa vertailukelpoisiin ohjelmistoprojekteihin verrattuna.

Ada ja Java

Microsoft joutui sisällyttämään seuraavan lausekkeen käyttöjärjestelmiensä lisenssisopimuksiin ( www.microsoft.com/msdownload/ieplatform/ie/license.txt): "Huomautus Java-kielen tuesta... Java-tekniikka ei ole vikasietoinen eikä sitä ole tarkoitettu... käytettäväksi reaaliaikaisissa ohjausjärjestelmissä... joissa Java-kielen epäonnistuminen voi johtaa kuolemaan tai loukkaantumiseen tai vakavia vahinkoja infrastruktuurille tai ympäristölle. Sun Microsystems Inc. vaati Microsoftin julkaisemaan tämän varoituksen."

Osoitamme myös artikkeleita ja esittelemme Ada-kielen etuja Javaan verrattuna.

"Helvettiä" myyttejä

Melko usein Adaan liittyy joukko sitkeitä väärinkäsityksiä, jotka estävät sekä kielen leviämisen että Adan tietoisen valinnan kieleksi projektin toteuttamiseen.

Ada on kuollut kieli, kukaan ei ohjelmoi sillä nyt. Itse asiassa Ada hallitsee luottavaisesti suurten sulautettujen järjestelmien markkinarakoa, jolla on korkeat luotettavuusvaatimukset. Verrattuna "laatikollisiin" Windows-tuotteisiin nämä järjestelmät eivät ole yhtä näkyviä joko siksi, että ne ovat olemassa yhdessä kopiossa (mitä järkeä on kopioida metrojunien liikettä ohjaavaa ohjelmaa) tai koska ne on jaettu osana järjestelmää, jossa ne ovat. rakennettu (sisäänrakennettu ohjelmisto).

Ada on kieli, joka on varattu yksinomaan sotilaskäyttöön. Ada kehitettiin todellakin Yhdysvaltain puolustusministeriön osallistuessa, mutta ei ole olemassa teknisiä, hallinnollisia tai muita syitä, jotka estäisivät Adan käytön siviilijärjestelmien kehittämiseen. Tähän kieleen perustuvien "siviiliprojektien" määrä on nykyään verrattavissa "sotilaallisten" hankkeiden määrään.

Ada on liian suuri ja monimutkainen kieli käytettäväksi pienessä projektissa. Kaikkien nykyaikaisten teollisten kielten määrä ja monimutkaisuus ovat lähes samat, ja tämän näkemiseksi riittää yksinkertaisesti vertailla niiden kuvausten määrää. Tämä myytti juontaa juurensa 80-luvun alkuun, kun Adat verrattiin Pascaliin, Fortran 77:ään tai BASICiin.

Harvat ohjelmoijat tuntevat Adan, kielen oppiminen tyhjästä vaatii liikaa vaivaa ja aikaa. Itse asiassa todellinen vaikeus on löytää asiantuntijoita, jotka ymmärtävät sulautettujen järjestelmien erityispiirteet ja pystyvät luomaan niille laadukkaita ohjelmia. Esimerkiksi BAE, yksi Ada-kielen aktiivisista käyttäjistä, ei vaadi hakijoilta tämän kielen osaamista; Sen sijaan he etsivät ihmisiä, jotka tuntevat sulautetut järjestelmät ja prosessit teollisuuslaatuisten ohjelmistojen luomiseksi. Tällaisten ihmisten palkkaamisen jälkeen kestää vain kaksi viikkoa opettaa heille helvetin kieli.

Henkilökohtainen kokemuksemme osoittaa, että kestää vain muutaman päivän, ennen kuin ohjelmoijat, jotka tuntevat yhden tai toisen Pascal-maun, alkavat kehittää yksinkertaisia ​​ohjelmia Adassa.

Nykyiset Ada-tekniikat ovat tehottomia; sekä kääntäjille että niiden luomalle koodille on ominaista alhainen suorituskyky. Tämä myytti juontuu myös 80-luvun ensimmäiselle puoliskolle, jolloin Adan ensimmäiset toteutukset ilmestyivät, itse asiassa ne vain osoittivat "standardin mukaisen Ada-kääntäjän olemassaolon lauseen". Riittää, kun suoritat sarjan yksinkertaisia ​​kokeita ohjelmoimalla jokin malliongelma Adassa, Pascalissa ja C/C++:ssa ja sitten vertaamalla (vertailukelpoisilla kääntäjäparametreilla) käännösnopeutta, generoidun koodin määrää ja sen nopeutta. suoritus varmistaakseen, ettei Adalle tyypillistä erityistä tehottomuutta ole olemassa. Voidaan myös todeta, että GNAT-ohjelmointijärjestelmä, jonka lähdekoodivolyymi on yli 40 megatavua, on 90-prosenttisesti toteutettu Adassa, ja sen rakentaminen lähdekoodista (jonka aikana se kääntää itsensä kolme kertaa) nykyaikaisella PC:llä ei vaadi mitään. yli puoli tuntia.

Nykyiset Adan toteutukset ovat erittäin kalliita. Tämä on totta, mutta muista, että GNAT-ohjelmointijärjestelmästä on olemassa julkisesti saatavilla oleva versio, jonka voi ladata ilmaiseksi ja täysin laillisesti New Yorkin yliopiston ohjelmistovarastosta ( ftp://cs.nyu.edu/pub/gnat) alkuperäisten tekstien kanssa

Ilmaista juustoa ja kuinka välttää hiirenloukku

GNAT (GNu Ada Translator) on Ada-kielen monikäyttöinen toteutus, joka on olemassa lähes kaikilla nykyaikaisilla teollisilla alustoilla ja tukee koodin luomista suosituille sulautetuille arkkitehtuureille. GNAT ( www.gnat.com) toteuttaa täysin Ada-standardin, mukaan lukien ne kirjastot, jotka standardi on luokitellut valinnaisiksi. Itse Ada-kääntäjän lisäksi GNAT sisältää työkalupakin, jossa on huomioitava kehitetty integroitu kehitysympäristö ja monikielinen graafinen debuggeri, jonka avulla voidaan mm. tutkia ohjelmien käyttäytymistä asynkronisilla prosesseilla. Kääntäjä ja mukana tulevat työkalut ovat käytettävissä sekä erikseen, kutsumalla niitä komentoriviltä että osana integroitua graafista kehitysympäristöä Ada-ohjelmille. Kaikilla GNAT-komponenteilla, mukaan lukien kehitysympäristö, on sama käyttöliittymä kaikilla alustoilla. Standardin kuvaamien työkalujen täyden toteutuksen lisäksi GNAT tarjoaa laajan joukon standardin sallimia laajennuksia. GNAT on Adan toteutus gcc-monikielisessä ohjelmointijärjestelmässä, joka koostuu joukosta etupään kääntäjiä eri syöttökielille yhteisellä koodigeneraattorilla, mikä yksinkertaistaa huomattavasti eri ohjelmointikielillä toteutettuja komponentteja sisältävien ohjelmien kehitystä.

GNAT on kehitetty ja jaettu GPL:n alla alusta alkaen. Valitettavasti GPL liittyy myös moniin myytteihin. Siksi monet uskovat, että GPL:n alaisia ​​ohjelmia kehittävät järjestäytymättömät harrastajaryhmät, ja niitä jaetaan täysin ilmaiseksi; Tämän seurauksena tällaisten ohjelmien luotettavuus ja toimivuus jättävät paljon toivomisen varaa, eivätkä ne salli niiden käyttöä vakavissa projekteissa. GNATin tapauksessa tämä ei ole kaukana siitä. Tästä vakuuttumiseen riittää, kun katsot luetteloa yrityksistä, jotka ovat tehneet teknisen tuen sopimukset kehittäjiensä kanssa: Boeing, British Aerospace, Lockheed, Ericsson, SAAB, Avionics jne.

Ilmaisten demojen tarjoaminen on yleinen käytäntö monille ohjelmistokehittäjille. GNAT eroaa siitä, että vapaasti saatavilla oleva julkinen versio on täysin täydellinen versio tekniikasta, ilman laillisia tai teknisiä rajoituksia sen käytölle. Useita vakavia hankkeita on toteutettu onnistuneesti GNAT:n julkisten versioiden pohjalta. Ohjelmisto eurooppalaisen automaattiaseman Mars Expressin Beagle 2 -laskeutumisajoneuvoon, joka on tällä hetkellä matkalla kohti Marsia ( www.beagle2.com/index.htm), Venäjän federaation puolustusministeriön automatisoitu dokumenttiviestintäasema ( www.ada-ru.org/prj_doc.html). Julkisten versioiden ainoa haittapuoli on, että kehittäjä ei tarjoa niille teknistä tukea.

Johtopäätös

Yhteenvetona voidaan todeta, että Ada-kieli tarjoaa kehittäjille täydellisen yhdistelmän eheyttä, johdonmukaisuutta, luotettavuutta ja tehokkuutta. Kieli tukee luovuutta ja innovatiivisuutta ja tarjoaa samalla kurinalaisuutta ja alan standardien mukaista ohjelmistokehitystä, jota tarvitaan erittäin tärkeiden ohjelmistojärjestelmien toteuttamiseen.

Kirjallisuus
  1. Benjamin Brosgol, Johdatus Ada 95:een. www.embedded.com/story/OEG20021211S0034
  2. Stephen Zeigler, C:n ja Adan kehityskustannusten vertailu. www.adaic.com/whyada/ada-vs-c/cada_art.html www.ada-ru.org. Nettisivuilta löytyy selostettu bibliografia venäjäksi julkaistuista Adan kielen kirjoista

Tiivistelmä aiheesta:

Ada



Suunnitelma:

    Johdanto
  • 1 Kieliominaisuudet
  • 2 "Hei, maailma!" helvetissä
  • 3 Historia
  • 4 Ada Neuvostoliitossa ja Venäjällä
  • 5 Kritiikki
  • 6 Jakelu, näkymät
  • 7 Ada-kielellä kirjoitetut käyttöjärjestelmät
    • 7.1 Sisällytetty järjestelmä
    • 7.2 Järjestelmät kehitteillä
    • 7.3 Ei enää olemassa olevia järjestelmiä
  • 8 Helvetin kääntäjää
  • 9 Johdetut kielet
  • 10 Mielenkiintoisia seikkoja
  • Huomautuksia
    Kirjallisuus

Johdanto

Ada (Ada) on ohjelmointikieli, joka on luotu vuosina 1979-1980 Yhdysvaltain puolustusministeriön hankkeen tuloksena, jonka tarkoituksena oli kehittää yhtenäinen ohjelmointikieli sulautettuja järjestelmiä varten (eli automatisoitujen kompleksien reaaliaikaiset ohjausjärjestelmät). Tämä tarkoitti ennen kaikkea sotilaslaitosten (laivat, lentokoneet, tankit, ohjukset, kuoret jne.) sisäisiä ohjausjärjestelmiä. Kehittäjien tehtävänä ei ollut luoda universaalia kieltä, joten Adan tekijöiden tekemät päätökset tulisi tehdä valitun aihealueen piirteiden kontekstissa. Kieli on nimetty Ada Lovelacen mukaan.


1. Kielen ominaisuudet

Alkuperäisessä, vuonna 1983 standardoidussa muodossaan Ada on jäsennelty, modulaarinen ohjelmointikieli, joka sisältää korkean tason rinnakkaisten prosessien ohjelmointityökaluja. Adan syntaksi on peritty kielistä, kuten Algol tai Pascal, mutta sitä on laajennettu ja tehty tiukemmiksi ja loogisemmaksi. Ada on vahvasti kirjoitettu kieli, se sulkee pois työskentelyn objektien kanssa, joilla ei ole tyyppejä, ja automaattiset tyyppimuunnokset on vähennetty ehdottomaan minimiin. 1995-standardissa kieleen lisättiin olio-ohjelmoinnin perustyökalut, 2007-standardissa näitä työkaluja täydennettiin, joten moderni Ada on olio-ohjelmointikieli.

Syntaksiominaisuuksiin kuuluvat:

  • Kirjainkoolla ei ole merkitystä.
  • Ohjelmat ovat modulaarisia, moduulien välisen kuvausten tuonnin ja viennin ohjausmekanismi sisältää kaksi erilaista direktiiviä: toinen toisen moduulin liittämiseksi (kanssa), toinen sen kuvausten tuomiseksi (käyttö). On myös mahdollista nimetä moduuli uudelleen tuonnin aikana (uudelleennimeäminen) - tämän vaihtoehdon avulla voit käyttää tunnisteita, jotka ohjelmoijalle on helpompi määrittää paketin nimeämiseen.
  • Paketit (yksi moduulityypeistä) voivat sisältää otsikon ja henkilökohtaisen osan - sen sisältämää ei viedä eikä se ole muiden moduulien käytettävissä.
  • Yleistettyjen (mukautettujen) moduulien mekanismia tuetaan: paketteja, proseduureja ja toimintoja, jotka mahdollistavat yleistettyjen tietojenkäsittelyalgoritmien kuvaamisen ilman tiettyä tyyppiä.
  • Edistyksellinen järjestelmä, sekä sisäänrakennettu että ohjelmoijan luoma. On monia tapoja luoda uusia tyyppejä, kieli tukee kahta eri käsitettä: "alatyyppi" ja "johdannainen tyyppi". Tyypin ja alatyypin muuttujat ovat yhteensopivia, tyypin ja sen johdetun tyypin muuttujat eivät.
  • Poikkeukselliset käsittelytilat.
  • Edistyneet prosessien ja toimintojen kutsumiskeinot: tuetut tulo- ja lähtöparametrit, todellisten parametrien välittäminen mielivaltaisessa järjestyksessä muodollisilla nimillä, parametrit oletusarvoilla.
  • Proseduurien, funktioiden ja operaattoreiden uudelleenmäärittely on tuettu - proseduurin, funktion tai operaattorin useiden muunnelmien luominen samalla nimellä, mutta eri allekirjoituksilla (parametrien tyypit ja lukumäärä).
  • Kieleen sisäänrakennetut rinnakkaisohjelmoinnin tukirakenteet: tuetaan käsitteitä "tehtävä" (rinnakkaisesti suoritettu ohjelmafragmentti), "tehtäväsyöttö" (keino synkronoida ja kommunikoida rinnakkaisia ​​tehtäviä), tuetaan kohtaamismekanismia (protokolla vuorovaikutusta varten). rinnakkaiset tehtävät yhden niistä syötteen kautta), on SELECT-valintalauseke ehdollisen säikeiden välisen vuorovaikutuksen järjestämiseen (rinnakkaistehtävän valitseminen, jonka kanssa ollaan vuorovaikutuksessa, riippuen tapaamisvalmiudesta ja joistakin muista ehdoista). Periaatteessa kielellä saatavilla olevat rinnakkaisohjelmointityökalut riittävät ratkaisemaan suuren luokan rinnakkaiskäsittelyä vaativia tehtäviä ilman ulkopuolisia työkaluja, kuten lisäkirjastoja tai käyttöjärjestelmän API:ita.

Luotettavuusvaatimusten täyttämiseksi kieli on suunniteltu siten, että mahdollisimman paljon virheitä havaitaan käännösvaiheessa. Lisäksi yhtenä kielen kehittämisen vaatimuksista oli ohjelmatekstien mahdollisimman helppolukuisuus, jopa kirjoittamisen helppouden kustannuksella. Tämän lähestymistavan tuloksena oli jonkin verran "raskas" syntaksi ja monet rajoitukset, jotka puuttuvat yleisimmistä teollisista kielistä​​ (C ja C ++) ja joita ammattiohjelmoijat pitävät usein tarpeettomina, esimerkiksi yhtä vahvana. kirjoittamalla. Tämä johti ajatukseen Adasta monimutkaisena, epäselvänä ja hankalana käytettävänä kielenä.


2. "Hei, maailma!" helvetissä

Useita eri versioita "Hei, maailma!" löytyy Wikikirjoista. Erot johtuvat tarpeesta käyttää Put_Line-kirjastotoimintoa - tässä kielessä on kolme eri tapaa järjestää tämä käyttö.

Kanssa Ada.Text_IO ; menettely Hello on use Ada.Text_IO ; begin Put_Line("Hei, maailma!") ; loppu Hei;

Tässä Put_Line-funktion soveltamiseksi sen sisältävä paketti Ada.Text_IO tuodaan use-konstruktilla, joka mahdollistaa funktion kutsumisen nimellä ilman tarkennusta - määrittämällä kutsussa funktion sisältävän paketin nimen.


3. Historia

Kielen kehittäminen toteutettiin osana kansainvälistä kilpailua, jonka järjesti ja rahoitti Yhdysvaltain puolustusministeriö. Kehityksen tavoitteena oli saada ohjelmointikieli, josta voisi tulla yksi ainoa sotilasosaston tilaamien projektien kehittämiseen, pääasiassa sulautettujen sotilasjärjestelmien kehittämiseen ja suuriin sotilastietokoneisiin (perustuu Intelin iAPX 432 -prosessoriin ). Työ aloitettiin vuonna 1975, jolloin muodostui joukko vaatimuksia kielelle, joka tyydyttäisi täysin tämäntyyppisten järjestelmien kehittäjät. Alkuperäinen vaatimusluettelo, joka julkaistiin koodinimellä "Straw", toimitettiin tarkastettavaksi useille organisaatioille ja yrityksille, ja sitä jalostettiin johdonmukaisesti kahden vuoden aikana, ja lopulta siitä tuli lopullinen asiakirja nimeltä "Steel".

Vaatimusten muodostamisen jälkeen tehtiin analyysi, joka osoitti, että mikään olemassa olevista ohjelmointikielistä ei täytä vaatimuksia riittävästi, joten päätettiin kehittää uusi kieli. Kilpailu sen luomisesta julkaistiin vuonna 1977, ja kehittäjiä pyydettiin käyttämään yhtä kolmesta kielestä: Pascal, Algol-68 tai PL / 1.

Kilpailuun lähetetyistä 15 projektista valittiin 4 (kaikki Pascalin perusteella). Nämä projektit lähetettiin jatkokehitettäväksi. Seuraavassa vaiheessa neljästä hankkeesta valittiin kaksi, joista toisen tarkistuksen jälkeen valittiin yksi. Tätä kieltä kutsuttiin nimellä "Ada" - sen kehittänyt ryhmä ranskalaisen Jean Ishbian johtamana nimesi kielen Augusta Ada King Lovelacen (1815-1852), runoilija J. Byronin tyttären kunniaksi. Hän kehitti ohjelmia Babbagen tietokone ja sitä pidetään ensimmäisenä ohjelmoijana maailmassa.

Vuonna 1983 ANSI standardoi kielen virallisesti. Kielistandardi ANSI/MIL-STD-1815-A-1983 hyväksyttiin 17. helmikuuta 1983. Yhdysvaltain puolustusministeriö on tehnyt nimestä "Ada" rekisteröidyn tavaramerkin ja kieltää sellaisten kielten kääntäjien vapauttamisen, jotka eivät ole läpäisseet virallista standardien noudattamista koskevaa testausmenettelyä. Toimenpide koostui suuren määrän (yli 1000) testiohjelmien (ns. ACVC-sarjan) suorittamisesta testattavan kääntäjän kautta, joista jokaiselle määritettiin yksiselitteisesti testitulos: joko onnistunut käännös tai erittäin kokeen antaminen. erityinen virheilmoitus. Testaus suoritettiin "kaikki tai ei mitään" -periaatteella - jos vähintään yhden testitapauksen käsittelyssä oli virhe, kääntäjän katsottiin läpäisemättömäksi ja testaus oli voimassa vain laitteisto- ja ohjelmistoalustalla. jolla se suoritettiin. Täten mahdollisuus ada-kielen "versioiden" tai "murteiden" muodostumiseen nappasi alkuunsa.

Vuonna 1987 ISO standardoi Ada-kielen virallisesti. Siitä lähtien Yhdysvaltain puolustusministeriö on antanut kielen yleisön saataville.

Vuoteen 1990 mennessä maailmassa oli jo noin 200 Ada-kielistandardia vastaavaa kääntäjää.

Vuonna 1995 otettiin käyttöön uusi Ada-standardi, joka tunnetaan nimellä Ada95. Olioohjelmointityökalut tuotiin kieleen. Lisäksi kieltä täydennettiin edistyneemmillä työkaluilla vuorovaikutukseen muilla kielillä kirjoitettujen ohjelmien kanssa.

Maaliskuussa 2007 Ada-standardin muutokset julkaistiin. Niissä käsiteltiin pääasiassa olioohjelmoinnin mahdollisuuksia: otettiin käyttöön rajapintoja, otettiin käyttöön useimmille hybridikielille yhteinen menetelmäkutsujen syntaksi ja tehtiin useita lisäyksiä.


4. Ada Neuvostoliitossa ja Venäjällä

Neuvostoliitossa 1980-luvulla perustettiin Helvetin kielen työryhmä valtion tiede- ja teknologiakomitean alaisuuteen. Ryhmä tutki kaikkia avoimia (ja huhujen mukaan salaisen tiedustelupalvelun kautta hankittuja) adan kielen tietoja ja tutki Adan kehittämisen ja käytön mahdollisuuksia ja tarkoituksenmukaisuutta Neuvostoliitossa. Tämän ryhmän toiminta johti 80-luvun loppuun mennessä Ada-kääntäjien kehittämiseen melkein kaikille Neuvostoliitossa käytetyille tietokoneille. Adan kielestä on julkaistu useita kirjoja venäjäksi.

Moskovan valtionyliopistossa tehtiin työtä omien pakettien luomiseksi Ada-kääntäjien standardinmukaisuuden testaamiseksi. Leningradin osavaltion yliopistossa Ada-järjestelmän luomiseen käytettiin aiemmin Algol-68:n toteuttamiseen kehitettyä Pallada-järjestelmää, joka siirrettiin Adalle. Järjestelmä sisältää integroidun kehitysympäristön, kääntäjän, tekstieditorin, debuggerin, kirjastot, versionhallintajärjestelmän ja komentotulkin.

Neuvostoliiton romahtamisen jälkeen Adan jakelutyö keskeytettiin käytännössä. Adalle on tosin otettu käyttöön kolme ohjelmistokehitysohjelmaa (puolustusministeriössä, ilmailuministeriössä sekä opetus- ja tiedeministeriössä), mutta niiden kehitys on hidasta ja koordinoimatonta. Tämän seurauksena Ada-kieli on vähän tunnettu Venäjällä, useimmat nykyaikaiset venäläiset ohjelmoijat pitävät sitä "kuolleena kielenä" eivätkä tiedä siitä mitään. Adaa käyttävät Venäjällä ja IVY-maissa yksittäiset harrastajat. Kieltä käytetään kuitenkin teolliseen ohjelmistokehitykseen. Adassa on kehitetty useita projekteja, jotka toimivat Venäjällä. Heidän joukossa:

  • RF:n puolustusministeriön dokumenttiviestintäasema. Päätehtävänä on varmistaa dokumenttitietojen vaihto Venäjän federaation puolustusministeriön tiedonsiirtoverkoissa. Ohjelmisto- ja laitteistokompleksin kehittivät yhdessä tuotantoorganisaatio "Computer Engineering and Automation Tools" (laitteisto) ja ryhmä ohjelmoijia Pohjois-Kaukasian lennonjohtokeskuksen "Strela" off-piste-sektorilta. Kompleksin ohjelmisto on kirjoitettu Ada-ohjelmointikielellä GNAT-kääntäjällä. Hajautettua tietojenkäsittelyä tukee ylimääräinen GLADE-komponentti.
  • Kokonaisuus vakionavigointi- ja viestintälaitteistoista venäläisille amfibiolentokoneille Beriev Be-200. Kehityksen toteutti Žukovskissa sijaitseva Research Institute of Aviation Equipment yhdessä amerikkalaisen Allied Signal -yhtiön kanssa Floridassa Yhdysvalloissa. Käytettiin DDC-I-yhtiön Ada-järjestelmien kehityskompleksia Intel 80486 -alustalla.

5. Kritiikki

Adaa on sen perustamisesta lähtien kritisoineet eräät ohjelmointikielten kehittämisen tunnetut viranomaiset, pääasiassa syntaksin monimutkaisuuden ja suuren volyymin vuoksi. Etenkin Charles Hoare ja Niklaus Wirth (jotka osallistuivat projektillaan tähän kilpailuun, mutta putosivat pois ensimmäisen vaiheen jälkeen) sekä Edsger Dijkstra kritisoivat kieltä.

Dijkstra epäili, että niin monimutkaista kieltä kuin Ada voitaisiin nähdä ja hallita.

Jos Ada aikoo julkaista standardin, on toivottavaa, että se dokumentoidaan yksiselitteisesti. Ainakin kaksi ryhmää on yrittänyt tehdä niin; tuloksena molemmat tuottivat noin 600 sivua muodollista tekstiä. Tämä on paljon enemmän kuin on tarpeen sen varmistamiseksi, että on mahdotonta edes varmistaa, että molemmat asiakirjat määrittelevät saman kielen. Virhe näiden kahden asiakirjan näennäisessä hallitsemattomuudessa ei piile kahdessa ryhmässä, jotka ovat laatineet ne, ei niiden omaksumassa formalismissa, vaan vain itse kielessä: antamatta muodollista määritelmää, voivatko sen kehittäjät piilottaa tarjoavansa hallitsemattoman hirviön. . Se, että Ada vähentää ohjelmointiongelmia ja lisää suunnitelmiemme luotettavuutta hyväksyttäviin rajoihin, on vain yksi niistä saduista, joihin vain sotilastaustaiset ihmiset voivat uskoa.

Tieteisfiktio ja tieteellinen todellisuus tietojenkäsittelytieteessä (Edsger W. Dijkstra, EWD952)

Hoare ilmaisi pahoittelunsa siitä, että "helistit ja rihmastot ovat menneet luotettavuuden ja turvallisuuden perusvaatimusten edelle" ja varoitti "ohjusten armadalta, joka lensi väärään suuntaan Ada-kääntäjän havaitsemattoman virheen vuoksi". Niklaus Wirth puhui pidättyvämmin, mutta myös kielteisesti. Hän sanoi: "Ohjelmoijalle heitetään liikaa. En usko, että kun on opiskellut kolmannesta Adasta, voi työskennellä normaalisti. Jos et hallitse kaikkia kielen yksityiskohtia, voit tulevaisuudessa kompastua niihin, ja tämä johtaa epämiellyttäviin seurauksiin. Jean Ishbia, Adan kehitystiimin johtaja, ilmaisi "kunnioituksensa ja ihailunsa" Wirthiä kohtaan, oli eri mieltä ja sanoi: "Wirt uskoo yksinkertaisiin ratkaisuihin monimutkaisiin ongelmiin. En usko sellaisiin ihmeisiin. Monimutkaiset ongelmat vaativat monimutkaisia ​​ratkaisuja."

Epäilyksiä herättää myös menettely, jolla kääntäjän kielistandardinmukaisuus tarkistetaan testaamalla. Yleisesti tarkasteltuna on selvää, että testaus voi löytää epäjohdonmukaisuuksia, mutta ei voi taata oikeellisuutta. Käytännön vahvistus tälle on se, että sertifioidut kääntäjät havaitsivat, että ne eivät olleet noudattaneet .

Adan kannattajat väittävät, että ainoa vaihtoehto suurelle ja monimutkaiselle kielelle suurissa projekteissa on useiden kompaktien kielten käyttö, mikä luo väistämättä yhteensopivuusongelmia, joista Ada keksittiin päästä eroon. He huomauttavat myös, että Ada-kehityksen monimutkaisuuden käsite on vain osittain totta: yksinkertaisen ohjelman kirjoittaminen Adassa vie enemmän aikaa kuin muilla vähemmän muodollisilla kielillä, kuten C, mutta ohjelmien, erityisesti suurten ja monimutkaisten ohjelmien, virheenkorjaus ja ylläpito, on suuresti yksinkertaistettu. Rational Software Corporationin Stephen Zeigerin mukaan ohjelmistokehitys Adassa on yleensä 60 % halvempaa ja kehitetyssä ohjelmassa on 9 kertaa vähemmän vikoja kuin C-kielellä.


6. Jakelu, näkymät

Käytännössä kävi ilmi, että Ada, joka oli miehittänyt sille tarkoitetun markkinaraon armeijassa ja siihen liittyvissä sulautettujen järjestelmien kehityksessä, ei ylittänyt tätä markkinarakoa, ei lännessä, Neuvostoliitossa eikä Neuvostoliiton jälkeisessä tilassa. . Tähän on monia syitä. Kielen vastustajat luottavat sen monimutkaisuuteen ja puutteisiin, kannattajat puhuvat ennen kaikkea kielen esiintymisen objektiivisista olosuhteista ja sen täytäntöönpanoprosessin kielteisistä puolista. Kielistandardia käsittelevän ISO-työryhmän ada-kielen asiantuntijan, Moskovan valtionyliopiston tutkimus- ja kehityskeskuksen vanhemman tutkijan, AdaCore EU:n konsultin S. I. Rybinin mielipide on mielenkiintoinen. Hän uskoo, että Ada on velkaa epäonnistumisensa kahdesta pääsyystä:

  • Kielen suunnittelun aikana Pentagon oletti, että kaikki uudet ohjelmistot luodaan vain Adassa. Tämän vuoksi Ada sai erittäin alkeelliset keinot olla vuorovaikutuksessa muiden kielten ohjelmien kanssa. Käytännössä kävi ilmi, että kaiken kirjoittaminen Adalla on yleensä epärealistista (jos vain siksi, että oli tarve olla vuorovaikutuksessa muiden kielten valmiiden kehityssuuntien kanssa). Siksi aloilla, joilla ei ollut tiukkaa vaatimusta "kirjoittaa vain Adassa", suosittiin muita kieliä, jotka sopeutuivat paremmin monikieliseen ympäristöön. Vuoden 1995 standardissa yhteentoimivuuden ongelma muiden kielten kanssa ratkaistiin, mutta aikaa meni hukkaan.
  • Paradoksaalista kyllä, Adan leviäminen esti Pentagonin taloudellisella ja organisatorisella tuella. Armeijalle kirjoitetut Ada-ohjelmat toimivat tehokkaimmalla saatavilla olevalla laskentatekniikalla, joten kääntäjien kehittäjät välittivät ensin ACVC-testien läpäisemisestä ja vasta sitten kääntäjän ja sen luoman koodin tehokkuudesta. 1980-luvun alussa alkoi mikrotietokonebuumi, ja yleisten kielten (Pascal, C, BASIC) kääntäjät optimoitiin nopeasti pienitehoisille järjestelmille. Adalla ei ollut kannustinta tällaiseen modernisointiin, minkä seurauksena henkilökohtaiset tietokoneet, joista tuli muutama vuosi myöhemmin maailman tietokonepuiston suurin osa, joutuivat ilman laadukasta Ada-kääntäjää. Luonnollisesti Ada menetti tämän markkinasegmentin. Vasta suhteellisen äskettäin ilmestyi GNAT-kääntäjä, korkealaatuinen ja tuottava, mutta tässäkin meni aikaa.

Tällä hetkellä Ada on vakiinnuttanut asemansa suurten sulautettujen järjestelmien kehittämisessä, joilla on lisääntynyt luotettavuus, täällä hänellä ei käytännössä ole vahvoja kilpailijoita. Kielen käyttö kasvaa vähitellen, joskin melko hitaasti. Joidenkin varovaisten ennusteiden mukaan [ ] , kun laitteisto halpenee ja sulautetut järjestelmät, joissa on monimutkaisempia ohjelmistoja, lisääntyvät, Ada-ohjelmistojen markkinat voivat kasvaa merkittävästi, samoin kuin kielen käyttö.

Lisäksi Adalla on, vaikkakin hyvin rajoitetusti, hakemuksia korkeakoulutukseen. Adan erikoiskursseja opetetaan Moskovan valtionyliopistossa ja Harkovin yliopistossa. Kuitenkin saman S.I. Rybinin mukaan

... nyt neuvostoliiton jälkeisessä tilassa ohjelmistoteollisuuden ja koulutuksen alalla on muodostunut ilmeinen noidankehä: teollisuudessa he eivät käytännössä tiedä Adasta, vastaavasti teollisuudesta ei ole kysyntää koulutukselle kouluttaa Adan asiantuntijoita, ja yliopistoista tulee alalle uusia ihmisiä, jotka eivät tiedä Adasta käytännössä mitään.


7. Ada-kielellä kirjoitetut käyttöjärjestelmät

7.1. Sisällytetty järjestelmä

  • MARTE
  • RTEMS on avoimen lähdekoodin käyttöjärjestelmä, jonka on kehittänyt DARPA, Yhdysvaltain puolustusministeriö
  • Ravenskar
  • RTOS-32 - patentoitu käyttöjärjestelmä

7.2. Järjestelmät kehitteillä

  • AuroraUX (projekti OpenSolaris-ytimen ja sitten DragonFly BSD:n uudelleenkirjoittamiseksi Ada-kieleksi)
  • Lovelace (käyttöjärjestelmä perustuu L4-ytimeen)

7.3. Ei enää olemassa olevia järjestelmiä

  • BiiN™
  • Pulse™
  • AdaOS

8. Helvetin kääntäjät

Nimi Yhtiö Versio käyttöjärjestelmä Verkkosivusto
AdaMagic SofCheck Ada 95 ? www.sofcheck.com
AdaMULTI Green Hills -ohjelmisto 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, C Solaris SPARC, Linux x86/x86-64, Windows ja muut 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 ohjelmisto Ada 83, Ada 95 SCO, UnixWare, Interactive, MS-DOS, Windows www.rrsoftware.com
MAXAda Samanaikainen 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-järjestelmät Ada 83, Ada 95 Linux, AIX (Ada 95); IBM System 370/390 (Ada 83) www.ocsystems.com
Rational Apex IBM Rational Ada, C, C++ Solaris SPARC Linux www-01.ibm.com
PISTEET 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 ohjelmisto Ada 83, Ada 95, C Solaris SPARC, PC Linux, Windows (Cygwin) www.xgc.com

Lukuun ottamatta GNATia ja XGC:tä (joillekin alustoille), yllä mainitut kääntäjät ovat maksullisia. Jotkut yritykset, kuten Aonix, tarjoavat ilmaisia ​​demoja, jotka ovat joko ajallisesti tai toiminnallisesti rajoitettuja.

NetBeans- ja Eclipse-kehitysympäristöissä on lisäosia Adan kanssa työskentelemiseen.


9. Johdetut kielet

Ada-kielen syntaksia käytetään seuraavilla kielillä:

  • PL/SQL

10. Mielenkiintoisia faktoja

  • Muodollisesti Ada-kieleen johtanut kielisuunnittelukilpailu oli anonyymi – kehitystiimit jättivät projektinsa koodinimien alla, jotta kilpailulautakunta ei voinut ottaa voittajaa valitessaan huomioon kehittäjien identiteettiä. Mutta käytännössä, kuten yksi komission jäsenistä kirjoitti, kehittäjien maut olivat niin erilaisia, että projektin kirjoittajan määrittäminen ei ollut vaikeaa.
  • Kaikki tämän kilpailun viimeisille kierroksille päässeet kielet perustuivat Pascaliin. Tässä suhteessa Ada voidaan alustavasti luonnehtia Pascaliksi, joka on kehitetty annettujen viiden perusvaatimuksen mukaisesti. Samaan aikaan kirjoittajat kulkivat pääasiassa Pascalin laajentamisen tiellä uusilla elementeillä. Tuloksena on paljon monimutkaisempi kieli.
  • Venäjällä on vitsejä, jotka liittyvät ilmaisun "helvetin kieli" moniselitteisyyteen, mukaan lukien ne, jotka perustuvat rinnakkaisuuteen venäläisen algoritmisen kielen kanssa, joka tunnetaan myös nimellä "Paratiisin kieli". Neuvostoliiton propagandistin Malor Sturuan (1984) artikkelin johtopäätös tuli myös ohjelmointiperinteeseen:

Pentagonin kieli on maailman vihollinen. "Adan" kieli on lämpöydinhelvetin ääni... "Adan" kielellä kuulee ihmiskunnan kirouksen.


Huomautuksia

  1. Ada Language Reference Guide 83. Luku 1.3. Kehitystavoitteet ja lähteet - www.ada-ru.org/arm83/ch01s03.html
  2. Vadim Stankevitš. Lady of Hell - www.kv.by/index2006451104.htm
  3. Päivitetty standardi osoitteessa iso.org - www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=45001
  4. Bryabrin V. M. Ohjelmistot henkilökohtaisille tietokoneille. Moskova: Nauka, 1988.
  5. 1 2 S. I. Rybinin haastattelu - www.ada-ru.org/wiki/rybin
  6. , Olio-ohjelmointikielet, NET-alustan ohjelmointikielet, Ada, artikkelit koodiesimerkeillä Ada .
    Teksti on saatavilla Creative Commons Attribution-ShareAlike -lisenssillä.

Helvetin kieltä on kuultu enemmän tai vähemmän aina. Koulussa naurettiin sen nimelle, yliopisto-ohjelmassa se mainittiin kuivana Yhdysvaltain puolustusministeriön pyynnöstä kehitetyksi kieleksi, mutta vain harvat ohjelmoijat tulivat suoraan syntaksin tai sovelluksen opiskeluun. Tästä syystä vallitsi virheellinen käsitys, että Adan kieli toimii vain menneen vuosisadan laitteissa ja sen tarve katoaa luonnollisen modernisoitumisen myötä.

Ja tämä on hyvin kaukana totuudesta.

Ulkomuoto

1900-luvun 70-luvulla, kylmän sodan huipulla, Yhdysvaltain puolustusministeriö järjesti kansainvälisen kilpailun, jonka tulosten mukaan oli tarpeen valita ohjelmointikieli sotilaalliseen käyttöön. Mikään olemassa olevista kielistä ei kuitenkaan tyydyttänyt komission jäseniä, joten pitkän valinnan ja useiden parannusten ansiosta syntyi Ada-kieli, joka on nimetty Ada Lovelacen mukaan. Sitten alkoi monien vuosien byrokratia standardoinnilla, tavaramerkkien rekisteröinnillä, mukautettuja kääntäjiä koskevilla kielloilla ja muilla toimilla, jotka estivät massayleisön tekemästä yhteistyötä Adan kanssa.

Tuotos osoittautui melko kapeaksi kieleksi, joka on suunniteltu monimutkaisille tietokonejärjestelmille, joilla on lisääntyneet turvallisuusvaatimukset. Jälleen Pentagonin vaatimusten ja tiukkojen standardien vuoksi vuorovaikutus muiden ohjelmointikielten kanssa on erittäin vaikeaa, joten viime aikoihin asti Adalla ei ollut juuri mitään mahdollisuutta mennä massamarkkinoille. Mutta laitteiden kustannusten alenemisen ja käytettyjen teknologioiden monimutkaisuuden myötä tällainen mahdollisuus ilmenee.

Syntaksi

Ada on alun perin vahvasti kirjoitettu modulaarinen ohjelmointikieli, joka peri syntaksinsa Pascalilta ja Algolilta. Jos opetit ensin koulussa tai korkeakoulussa, katso sitten "Hei, maailma!" täytyy kokea nostalgiaa:

kanssa Ada.Text_IO;

Hei menettely on
käytä Ada.Text_IO;
alkaa
Put_Line("Hei, maailma!");
loppu Hei;

Yksi kielen päävaatimuksista oli sen käytön luotettavuus. Näin ollen tämä sisälsi tiukat rajoitukset rakenteelle, tyypeille, oikeinkirjoitukselle ja muille. Lisäksi lähes kaikki virheet havaitaan käännöshetkellä.

Toinen vaatimus oli koodin maksimi luettavuus painetussa muodossa, mikä johti tuloksena olevan kielen raskauteen ja vähäiseen joustavuuteen.

Myöhemmät standardit ratkaisivat nämä ongelmat osittain, mutta ilmeisistä syistä he eivät tehneet toista Pythonia helvetistä.

helvetti tänään

Vastoin laajan yleisön mielipidettä Adan kieltä käytetään edelleen aktiivisesti, ei vain Yhdysvalloissa eikä vain sotilasteollisuudessa. Joten esimerkiksi osa Beriev Be-200 amfibiolentokoneen ohjelmistosta on kirjoitettu Adassa. Myös monissa suurissa kaupungeissa (Pariisi, Lontoo, New York jne.) liikennöivät kuljettajattomat metrojunat käyttävät amerikkalaisia ​​sotilaskielilaitteita.

Ja kyllä, tietysti "asiakkaiden" joukossa oli sotilas- ja siviili-ilmailua (erityisesti Boeing 777), ohjuksia, sukkuloja, satelliitteja - yleensä melkein koko luettelo äärettömän kalliista amerikkalaisista tuotteista, mikä viittaa korkeimpaan turvallisuus.

tulevaisuudennäkymiä

Helvetin kieltä kritisoitiin sekä sen ilmestyessä että kun kävi selväksi, että Pentagonin suuret suunnitelmat eivät aivan sopineet todellisuuteen, ja vielä enemmän. Syynä tähän on epämukava kielenkäyttö, vuosina 1983 ja 1995 kirjoitettujen standardien monimutkaisuus sekä kehittäjien lyhytnäköisyys, jotka riistivät Adan kielen suurelta yleisöltä.

Lähes 40 vuoden aktiivinen käyttö kuitenkin vahvistaa, että kenties Ada-kieli on selvinnyt päätehtävästään - sen avulla voidaan edelleen luoda luotettavaa koodia järjestelmiin, joissa turvallisuusvaatimukset ovat lisääntyneet. Kuitenkin, jos tarkastellaan nykyisiä trendejä, tällaisten tuotteiden määrä kasvaa jatkuvasti: itseohjautuvat autot ja hybridimoottorit, yksityiset avaruusalukset ja pienet lentokoneet, suurnopeusjunat sekä valtava määrä sulautettuja järjestelmiä. Kaikki tämä on potentiaalinen kenttä ada-kielen toiminnalle. Kun tähän lisätään se, että standardia tarkistettiin ja modernisoitiin vakavasti vuonna 2012, myös työvälineet ovat tulossa ulos ja päivittymään.

Helvetin kieli on siis sekä katkelma ei kovin miellyttävästä menneisyydestä että yksi työkaluista rakentaa valoisaa tulevaisuutta. Eikä hän varmasti aio jäädä eläkkeelle.

Sergei Bobrovsky

Tämän kielen historia ei ala vuodesta 1975, jolloin Yhdysvaltain puolustusministeriö (DOD) päätti aloittaa yhden ohjelmointikielen kehittämisen Yhdysvaltain asevoimille ja myöhemmin koko Natolle. Sen historia alkaa nimestä, sillä Ada on Augusta Ada Lovelacen nimi, jota pidetään ensimmäisenä ohjelmoijana, englantilaisen runoilijan Byronin ja tietyn Anabella Milbankin tyttärenä, josta hänen miehensä erosi ikuisesti kuukausi syntymän jälkeen. hänen tyttärensä, joka syntyi 10. joulukuuta 1815. Yleisesti ottaen kybernetiikan historiaa verhoaa synkkä mysteeri, ja vain fragmentaaristen tosiseikkojen perusteella voidaan päätellä, että tämän tieteen perustajat ovat viimeisen kahdensadan vuoden aikana olleet erilaisia ​​mystikoita ja okkultisteja, aina August de Morganista, joka on yksi Adan opettajat Norbert Wienerin työtovereille, jotka tutkivat yleisen mielipiteen muodostusmenetelmiä ja sen manipulointia.

Kun Charles Babbage suunnitteli mekaanisen laskukoneensa, Ada kirjoitti ensimmäisen ohjelman Bernoulli-kertoimien laskemiseen. Myöhemmin hän kehitti todellisen ohjelmoinnin teorian, esitteli syklin käsitteen ja useita muita keskeisiä termejä, joita kyberneettisten tiedekuntien opiskelijat opiskelevat nykyään lähes sanatarkasti! Nykyään Ada tunnetaan kaikille ensimmäisenä ohjelmoijana - ja siinä kaikki, mutta on yllättävää, kuinka nuorella tytöllä on niin ainutlaatuisia kykyjä? Hän vastasi suoraan tähän kysymykseen itse: ”Vannon Paholaisen nimeen, että alle 10 vuodessa imen tietyn määrän elintärkeää verta maailmankaikkeuden mysteereistä ja tavalla, jota tavalliset kuolevaisten mielet ja huulet eivät pystyisi tekemään. Kukaan ei tiedä, mitä kauhistuttavaa energiaa ja voimaa on vielä käyttämättä pienessä joustavassa olemuksessani...". Tietokoneprojektille ei kuitenkaan ollut sponsoreita - silloin ei ollut ydinohjuksia, ja Ada, joka oli menettänyt kaiken omaisuutensa kilpailuissa ja joutunut likaiseen tarinaan, kuoli 37-vuotiaana, kuten hänen kuuluisa isänsä.

Siksi on erittäin kiistanalainen kysymys, oliko amerikkalaisten arvoista korottaa Adaa niin paljon käyttämällä hänen nimeään tällaisen kunnianhimoisen hankkeen nimenä.

Mutta takaisin itse kielen historiaan. Viisi vuotta hankkeen alkamisen jälkeen sadat asiantuntijat valitsivat 17 vaihtoehdosta ainoan MO:n vaatimukset täyttävän kielen, jonka kehitti lahjakas tiedemies Jean Ishbian johtama pieni ryhmä. Kansainvälisen standardin ISO 8652:1987 lopullinen versio julkaistiin vuonna 1987. Virallisten raporttien mukaan kaikki maailman parhaat ohjelmoinnin asiantuntijat osallistuivat tämän kielen luomiseen ja parantamiseen, mikä on kuitenkin kyseenalaista. Tämän vahvistaa esimerkiksi esineen käsitteen puuttuminen Adan alkuperäisestä versiosta ja se, että Neuvostoliiton ohjelmoijat eivät ilmeisistä syistä osallistuneet tähän projektiin.

Adan infrastruktuurin kehittämiseen on sijoitettu kymmeniä miljardeja dollareita ympäri maailmaa. Tämä johti kunnianhimoisten lausuntojen syntymiseen, kuten "1900-luku kulkee Adan merkin alla", mutta kuten tavallista, elämä asetti kaiken paikoilleen.

Valitettavasti Yhdysvaltain puolustusministeriön (ja vastaavasti Amerikan "potentiaalisten vihollisten" onneksi) selkeän standardin kehittäminen tälle kielelle ja tehokkaiden kääntäjien luominen saatiin päätökseen juuri siihen aikaan (80-luvun alussa), kun se alkoi syntyä. ohjelmistoteollisuuden horisontti uusi C++-kieli objektiideologialla. Nyt on vaikea sanoa, mitä Adan kehityskomitea tunsi nähdessään C++:n suosion ja vanhan, hyvin unohdetun ajattelun objektiparadigman kasvavan. Mutta varatut varat oli jo käytetty, standardi luotu, eikä paluuta enää ollut.

Adan rakenne on hyvin samanlainen kuin Pascal, ja tarkemmin sanottuna Modula. Useimpien operaattoreiden ja kuvausten syntaksi on lähes identtinen Modulan kanssa, vaikka se ilmestyi lähes samaan aikaan Adan kanssa, ja on vaikea sanoa, kuka vaikutti keneen tai vaikuttiko he ollenkaan. Etenkin Adassa lisättiin melkoisesti erilaisia ​​laajennuksia, joten tätä kieltä ei voi kutsua kompaktiksi verrattuna samaan Pascaliin. Ominaisuuksien lukumäärän suhteen se muistuttaa todennäköisemmin PL / 1:tä. Mutta koska Adan tekijöiden pääpaino oli amerikkalaisten "ensimmäisten osastojen" toiveiden täyttämisessä, tietosuojakeinot (näkyvyys) ja mahdollisuus luoda erillisiä lohkoja käyttämällä vain muiden kehittäjien spesifikaatioita (moduulien käyttöliittymäkuvauksia) olivat aikansa täydellisimpiä. Esimerkiksi ohjelmoijalla, joka todella kirjoitti koodin risteilyohjuksen lentoradan laskemiseen, ei ollut aavistustakaan, missä ja mihin tarkoituksiin hänen moduuliaan käytettäisiin, vaikka hänellä oli pääsy muiden työntekijöiden vaadittuihin teknisiin tietoihin ja hän pystyi helposti jäljittämään koodiosiotaan . Koska eri tasojen erittelyihin pääsy on rajattu tiukasti, joskus on jopa mahdotonta määrittää, mitä varten ja millä keinoin tiettyä menettelyä kutsutaan. Tämä halu itsenäiseen ohjelmistokehitykseen on kuitenkin johtanut erittäin monimutkaiseen suhdejärjestelmään moduulimäärittelyjen välillä ja joidenkin "aukkojen" syntymiseen, jotka voivat aiheuttaa sivuvaikutuksia, joiden läsnäoloa US DoD kuitenkin piti jopa hyödyllisenä.

Tietojen kirjoittamisen elementtejä on vahvistettu merkittävästi ja itse tyyppejä on formalisoitu. Kaikki I/O:hen liittyvät toiminnot poistettiin vakiosyntaksista, ja poikkeusten käsittelystä tuli kiinteä osa kieltä. Lisäksi ohjausrakenteiden teho lyötiin äärirajoille, jolloin Addasta tuli edistynein muiden Pascalin kaltaisten kielten joukossa.

Borland julkaisi pian Turbo Pascalin, johon moduulikonsepti sisältyi, ja toi Pascal-versionsa ominaisuuksiltaan lähemmäksi Adania, mutta yrittää edelleen luoda kehittämiseen tarkoitettuja 3. sukupolven ei-objektiohjelmointikieliä. Supersuuria projekteja ei onneksi tehty. Joten Ada lopetti pitkän joukon yksinkertaisia ​​proseduurikieliä, alkaen Fortranista ja Algolista. Itse asiassa kaikki, mitä strukturoidun ohjelmoinnin ideologian puitteissa voi ajatella, sisältyi Adaan. Sitten objektiohjelmointi kukoisti nopeasti, ja Ada häipyi taustalle.

Tällä kielellä on kuitenkin edelleen yksi markkinarako, jossa sillä ei ole vielä vertaa. Erillisen moduulien kokoamisen ja eritelmien hierarkkisen salaisuuden varmistamisen lisäksi tämä kieli toteutti sellaisen ominaisuuden kuin rinnakkaisohjelmoinnin tuen. Se toteutettiin enemmän tai vähemmän korkealla tasolla Algol-68:ssa, sitten kehitettiin moduulissa 2, ja se sisältyi erittäin tehokkaisiin Ada-tiloihin, niin sanottuihin tehtäviin, jotka pystyivät suorittamaan toisistaan ​​riippumatta rinnakkaisissa tietokoneissa. Tämä johti kokonaisen ohjelmointiideologian syntymiseen, joka perustui tehtäviin, jotka voidaan suorittaa "pseudo-rinnakkaisina" - tietokoneella, jossa on yksi prosessori. Samaan aikaan ratkaistava ongelma jaettiin joukoksi samanaikaisia ​​toimintamenetelmiä, jotka olivat itsenäisesti vuorovaikutuksessa keskenään. Se oli vähän kuin tapa ratkaista ongelma Prologissa: tietty virtuaalimaailma kuvataan yksinkertaisesti, ja sitten se ikään kuin "käynnistetään" toimintaan, ja ratkaisu löydetään itsestään.

On sitäkin yllättävämpää, että Yhdysvaltain puolustusministeriö syystä tai toisesta hylkäsi objektiideologian, joka ilmeni täydellisesti

60-luvulla Simula-67:ssä, ja luultavasti katunut sitä useammin kuin kerran. On totta, että Ada-kieleen otettiin käyttöön säälittävä korvaus useille olio-ohjelmoinnin tarjoamille ominaisuuksille - ns. templates, eli menettelyt määrittelemättömien parametrien tyypeillä. Mutta silti Adan tärkeimmät edut, joiden ansiosta se voi kestää kehittyneempien kielten hyökkäykset nykyään, olivat tehokkaan rahoituksen lisäksi sisäänrakennettu tuki tehtävien rinnakkaiselle suorittamiselle ja tehokkaat keinot koordinoida niiden vuorovaikutusta. On huomattava, että Adan pääsuuntaus ei suinkaan ole Yhdysvaltain puolustusministeriön kirjanpitoautomaatiojärjestelmät, vaan puhtaasti taistelutehtävät, kuten esimerkiksi mikroprosessoripohjainen suuntautumisohjuksen reaaliaikainen navigointi, jossa se on tarvitaan useista eri antureista jatkuvasti tulevien tietojen käsittelyyn samanaikaisesti. Aiemmin tällaiset tehtävät kirjoitettiin assemblerissä, mikä johti moniin virheisiin ja ylläpitoongelmiin. Tällaisiin tehtäviin Ada sopii tietysti täydellisesti.

Ada on kuitenkin edelleen hyvä työkalu suurten ohjelmistojärjestelmien kehittämiseen. Totta, nyt tätä kieltä tukevat äänet kuulostavat jo hiljaisemmilta, jotain tällaista: "Ada on vähintään yhtä hyvä kuin C". Yhdysvaltain puolustusministeriö on kehittänyt uuden kielistandardin ISO / IEC 8652: 1985 (E), ottaen huomioon sen suurimman virheen - esineiden puutteen ohjelmistokehitysteknologian nykyaikaisten vaatimusten mukaisesti. Se kuvaa kieliversiota Ada95 (tai Ada9X). Mielenkiintoisinta on, että tämä versio on maailman ensimmäinen olio-ohjelmointijärjestelmä, johon kansainvälinen standardi otettiin käyttöön ilmeisesti järjestyksessä (tämä ei ole vielä mahdollista C++:lla). Lisäksi moduulispesifikaatioiden tietojen näkyvyyden täsmäytysjärjestelmää on parannettu kielellisesti ja lisätty työkaluja rinnakkaisten tehtävien tehostamiseksi.

Yhdysvaltain puolustusministeriö on melko kateellinen kalliista ideansa vuoksi ja jopa rekisteröi sanan "Ada" tavaramerkkikseen. Totta, myöhemmin MO päätti tavaramerkin sijaan käyttää "Adaa" sisäisenä sertifioituna merkkinä. Yhdysvaltain puolustusministeriö ei ole erityisen iloinen tämän kielen kaupallisten versioiden ilmestymisestä. Kenelläkään ei tietenkään ole oikeutta kieltää kirjoittamasta omaa kääntäjää, mutta jotta se saisi kaupallista tunnustusta, sen on täytettävä sotilaalliset standardit, ja testauksen suorittaa vain Yhdysvaltain puolustusministeriön AJPO-komitea. , joka tarkistaa erittäin tiukasti, että kääntäjä noudattaa monia vaatimuksia, mukaan lukien luonnollisesti ja puhtaasti poliittisia vaatimuksia.

Siitä huolimatta, erilaisia ​​​​Adan versioita voidaan saada, kuten yleensä ohjelmointikielillä, ilmaiseksi, eli ilmaiseksi, mutta ei laittomasti, vaan yksinkertaisesti ilmaisversioita ja tietysti rahalla.

Vapaasti jaetuista versioista on ensinnäkin tarpeen erottaa GNAT-kääntäjä - GNU Ada95. Osana GNU-projektia (vapaa ohjelmisto) se voidaan hankkia lähdekoodina. Se voi toimia myös tietokoneella, jossa on yksi prosessori, on vain välttämätöntä, että käyttöjärjestelmä tukee moniajoa. Se voi olla esimerkiksi jokin UNIX- tai OS/2-versio. Mitä tulee MS DOSiin - arvaa itse. Jos kuitenkin haluat todella suorittaa sata tai kaksi rinnakkaista prosessia tietokoneellasi MS DOS 6.x:n alla, voit kokeilla Ada / Ed -kielen 1987-version kääntäjää ja tulkkia, joka kuitenkin on täysin ei ole yhteensopiva standardin kanssa eikä siinä ole useita olennaisia ​​elementtejä.

Jos rahaa on, tilanne tietysti helpottuu. Keskimääräisen venäläisen ohjelmoijan kuukausipalkan sisällä voit ostaa esimerkiksi FirstAdan ja kirjoittaa jääkaapin ohjausjärjestelmän. Kalliimpien DOD-sertifioitujen Windows-, OS/2- tai UNIX-järjestelmien osalta voit yrittää ostaa suoraan kymmeniltä toimittajalta.

Mielenkiintoista on, että itse kieli ei ollut standardoitu, mikä mahdollisti helposti kannettavien ohjelmien luomisen, vaan myös joukon kehittäjän apuvälineitä - erilaisia ​​I / O-kirjastoja ja GUI-organisaatioita, esiprosessoreja, todentajia, koodigeneraattoreita, lähdekoodin loogisia rakenneanalysaattoreita, ohjelmia kääntäjien testaamiseen jne. Tietysti on suuria paketteja, jotka sisältävät kaikki standardoidut kehitystyökalut, mutta ne näyttävät olevan erittäin kalliita.

Olisi erittäin mielenkiintoista tietää, työskentelikö Neuvostoliitto kielillä, jotka on suunniteltu ratkaisemaan samanlaisia ​​sotilaallisia tehtäviä. Vai kirjoittivatko asiantuntijamme vain Assembleriin?

Kieliominaisuudet

"Hei maailma!" helvetissä

Useita eri versioita "Hei, maailma!" löytyy Wikikirjoista. Erot johtuvat tarpeesta käyttää Put_Line-kirjastotoimintoa - tässä kielessä on kolme eri tapaa järjestää tämä käyttö.

kanssa Ada.Text_IO;

menettely Hei on

Käytä Ada.Text_IO;

Put_Line("Hei, maailma!");

loppu Hei;

Tässä Put_Line-funktion soveltamiseksi sen sisältävä paketti Ada.Text_IO tuodaan use-konstruktilla, joka mahdollistaa funktion kutsumisen nimellä ilman tarkennusta - määrittämällä kutsussa funktion sisältävän paketin nimen.

Tarina

Kielen kehitys toteutettiin osana Yhdysvaltain puolustusministeriön järjestämää ja rahoittamaa kansainvälistä kilpailua, jonka tavoitteena oli saada ohjelmointikieli, josta voisi tulla yhtenäinen hankkeiden kehitystyö sotilasosaston tilauksesta. , lähinnä sotilaallisten sulautettujen järjestelmien kehittämiseen ja suuriin sotilastietokoneisiin (perustuu Intelin iAPX 432 -prosessoriin). Työ aloitettiin vuonna 1975, jolloin muodostui kielelle vaatimussarja, joka tyydyttäisi täysin tämäntyyppisten järjestelmien kehittäjät. Alkuperäinen vaatimusluettelo, joka julkaistiin koodinimellä "Straw", toimitettiin tarkastettavaksi useille organisaatioille ja yrityksille, ja sitä jalostettiin johdonmukaisesti kahden vuoden aikana, ja lopulta siitä tuli lopullinen asiakirja nimeltä "Steel".

Vaatimusten muodostamisen jälkeen tehtiin analyysi, joka osoitti, että mikään olemassa olevista ohjelmointikielistä ei täytä vaatimuksia riittävästi, joten päätettiin kehittää uusi kieli. Kilpailu sen luomisesta julkaistiin vuonna 1977, ja kehittäjiä pyydettiin käyttämään yhtä kolmesta kielestä: Pascal, Algol-68 tai PL / 1.

Kilpailuun lähetetyistä 15 projektista valittiin 4 (kaikki Pascalin perusteella). Nämä projektit lähetettiin jatkokehitettäväksi. Seuraavassa vaiheessa neljästä hankkeesta valittiin kaksi, joista toisen tarkistuksen jälkeen valittiin yksi. Tämä kieli sai nimen "Ada" - sen kehittänyt ryhmä ranskalaisen Jean Ishbian johtamana nimesi kielen Augusta Ada King Lovelacen (runoilija J. Byronin tytär) kunniaksi, jota pidetään maailman ensimmäisenä ohjelmoijana. ohjelmien kehittämiseen Babbagen tietokoneelle.

Dijkstra epäili yhdessä artikkelissaan, että niin monimutkaista kieltä kuin Ada voitaisiin tutkia ja hallita. Hän huomautti: "Jos Ada aikoo julkaista standardin, on toivottavaa, että se dokumentoidaan yksiselitteisesti. Ainakin kaksi ryhmää on yrittänyt tehdä niin; tuloksena molemmat tuottivat noin 600 sivua muodollista tekstiä. Tämä on paljon enemmän kuin on tarpeen sen varmistamiseksi, että on mahdotonta edes varmistaa, että molemmat asiakirjat määrittelevät saman kielen. Virhe näiden kahden asiakirjan näennäisessä hallitsemattomuudessa ei ole kahdessa ryhmässä, jotka ovat laatineet ne, eikä niiden omaksumassa formalismissa, vaan ainoastaan ​​itse kielessä: se ei anna muodollista määritelmää sille, voivatko sen kehittäjät piilottaa tarjoavansa hallitsematon hirviö. Se, että Ada vähentää ohjelmointiongelmia ja lisää kehitystyömme luotettavuutta hyväksyttäviin rajoihin, on vain yksi niistä saduista, joihin vain sotilastaustaiset ihmiset voivat uskoa.

Hoare ilmaisi pahoittelunsa siitä, että "helistit ja rihmastot ovat menneet luotettavuuden ja turvallisuuden perusvaatimusten edelle" ja varoitti "ohjusten armadalta, joka lensi väärään suuntaan Ada-kääntäjän havaitsemattoman virheen vuoksi". Niklaus Wirth puhui pidättyvämmin, mutta myös kielteisesti. Hän sanoi: "Ohjelmoijalle heitetään liikaa. En usko, että kun on opiskellut kolmannesta Adasta, voi työskennellä normaalisti. Jos et hallitse kaikkia kielen yksityiskohtia, voit tulevaisuudessa kompastua niihin, ja tämä johtaa epämiellyttäviin seurauksiin. Jean Ishbia, Adan kehitystiimin johtaja, ilmaisi "kunnioituksensa ja ihailunsa" Wirthiä kohtaan, oli eri mieltä ja sanoi: "Wirt uskoo yksinkertaisiin ratkaisuihin monimutkaisiin ongelmiin. En usko sellaisiin ihmeisiin. Monimutkaiset ongelmat vaativat monimutkaisia ​​ratkaisuja."

Epäilyksiä herättää myös menettely, jolla kääntäjän kielistandardinmukaisuus tarkistetaan testaamalla. Yleisesti tarkasteltuna on selvää, että testaus voi löytää epäjohdonmukaisuuksia, mutta ei voi taata oikeellisuutta. Käytännön vahvistus tälle on se, että sertifioidut kääntäjät havaitsivat, että ne eivät olleet noudattaneet .

Adan kannattajat väittävät, että ainoa vaihtoehto suurelle ja monimutkaiselle kielelle suurissa projekteissa on useiden kompaktien kielten käyttö, mikä luo väistämättä yhteensopivuusongelmia, joista Ada keksittiin päästä eroon. He huomauttavat myös, että Ada-kehityksen monimutkaisuuden käsite on vain osittain totta: yksinkertaisen ohjelman kirjoittaminen Adassa vie enemmän aikaa kuin muilla vähemmän muodollisilla kielillä, kuten C, mutta ohjelmien, erityisesti suurten ja monimutkaisten ohjelmien, virheenkorjaus ja ylläpito on suuresti yksinkertaistettuna. Rational Software Corporationin Stephen Zeigerin mukaan ohjelmistokehitys Adassa on yleensä 60 % halvempaa ja kehitetyssä ohjelmassa on 9 kertaa vähemmän vikoja kuin C-kielellä.

Jakelu, näkymät

Käytännössä kävi ilmi, että Ada, joka oli miehittänyt sille tarkoitetun markkinaraon armeijassa ja siihen liittyvissä sulautettujen järjestelmien kehityksessä, ei ylittänyt tätä markkinarakoa, ei lännessä, Neuvostoliitossa eikä Neuvostoliiton jälkeisessä tilassa. . Tähän on monia syitä. Kielen vastustajat luottavat sen monimutkaisuuteen ja puutteisiin, kannattajat puhuvat ennen kaikkea kielen esiintymisen objektiivisista olosuhteista ja sen täytäntöönpanoprosessin kielteisistä puolista. Kielistandardia käsittelevän ISO-työryhmän ada-kielen asiantuntijan, Moskovan valtionyliopiston tutkimus- ja kehityskeskuksen vanhemman tutkijan, AdaCore EU:n konsultin S. I. Rybinin mielipide on mielenkiintoinen. Hän uskoo, että Ada on velkaa epäonnistumisensa kahdesta pääsyystä:

  • Kielen suunnittelun aikana Pentagon oletti, että kaikki uudet ohjelmistot luodaan vain Adassa. Tämän vuoksi Ada sai erittäin alkeelliset keinot olla vuorovaikutuksessa muiden kielten ohjelmien kanssa. Käytännössä kävi ilmi, että kaiken kirjoittaminen Adalla on yleensä epärealistista (jos vain siksi, että oli tarve olla vuorovaikutuksessa muiden kielten valmiiden kehityssuuntien kanssa). Siksi aloilla, joilla ei ollut tiukkaa vaatimusta "kirjoittaa vain Adassa", suosittiin muita kieliä, jotka sopeutuivat paremmin monikieliseen ympäristöön. Vuoden 1995 standardissa yhteentoimivuuden ongelma muiden kielten kanssa ratkaistiin, mutta aikaa meni hukkaan.
  • Paradoksaalista kyllä, Adan leviäminen esti Pentagonin taloudellisella ja organisatorisella tuella. Armeijalle kirjoitetut Ada-ohjelmat toimivat tehokkaimmalla saatavilla olevalla laskentatekniikalla, joten kääntäjien kehittäjät välittivät ensin ACVC-testien läpäisemisestä ja vasta sitten kääntäjän ja sen luoman koodin tehokkuudesta. 1980-luvun alussa alkoi mikrotietokonebuumi, ja yleisten kielten (Pascal, C, BASIC) kääntäjät optimoitiin nopeasti pienitehoisille järjestelmille. Adalla ei ollut kannustinta tällaiseen modernisointiin, minkä seurauksena henkilökohtaiset tietokoneet, joista tuli muutama vuosi myöhemmin maailman tietokonepuiston suurin osa, joutuivat ilman laadukasta Ada-kääntäjää. Luonnollisesti Ada menetti tämän markkinasegmentin. Vasta suhteellisen äskettäin ilmestyi GNAT-kääntäjä, korkealaatuinen ja tuottava, mutta tässäkin meni aikaa.

Tällä hetkellä Ada on vakiinnuttanut asemansa suurten sulautettujen järjestelmien kehittämisessä, joilla on lisääntynyt luotettavuus, täällä hänellä ei käytännössä ole vahvoja kilpailijoita. Kielen käyttö kasvaa vähitellen, joskin melko hitaasti. Joidenkin varovaisten ennusteiden mukaan laitteistojen halpenemisen ja monimutkaisilla ohjelmistoilla varustettujen sulautettujen järjestelmien yleistyessä Adan ohjelmamarkkinat voivat kasvaa merkittävästi, samoin kielen käyttö.

Lisäksi Adalla on, vaikkakin hyvin rajoitetusti, hakemuksia korkeakoulutukseen. Adan erikoiskursseja opetetaan Moskovan valtionyliopistossa ja Harkovin yliopistossa. Kuitenkin saman S.I. Rybinin mukaan

... nyt neuvostoliiton jälkeisessä tilassa ohjelmistoteollisuuden ja koulutuksen alalla on muodostunut ilmeinen noidankehä: teollisuudessa he eivät käytännössä tiedä Adasta, vastaavasti teollisuudesta ei ole kysyntää koulutukselle kouluttaa Adan asiantuntijoita, ja yliopistoista tulee alalle uusia ihmisiä, jotka eivät tiedä Adasta käytännössä mitään.

Ada-kielellä kirjoitetut käyttöjärjestelmät

Sisällytetty järjestelmä

  • RTEMS on avoimen lähdekoodin käyttöjärjestelmä, jonka on kehittänyt DARPA, Yhdysvaltain puolustusministeriö
  • Ravenskar
  • RTOS-32 - patentoitu käyttöjärjestelmä

Järjestelmät kehitteillä

  • AuroraUX (projekti OpenSolaris-ytimen uudelleenkirjoittamiseksi Ada-kieleksi)
  • Lovelace (ytimen käyttöjärjestelmä)

Ei enää olemassa olevia järjestelmiä

  • BiiN™
  • Pulse™
  • AdaOS

Helvetin kääntäjät

NimiYhtiöVersiokäyttöjärjestelmäVerkkosivusto
AdaMagicSofCheckAda 95 ? www.sofcheck.com
AdaMULTIGreen Hills -ohjelmistoAda 83, Ada 95,