Ada Resource Association

Ada Overview

ada on moderni ohjelmointikieli, joka on suunniteltu suurille, pitkäikäisille sovelluksille-ja erityisesti sulautetuille järjestelmille – joissa luotettavuus ja tehokkuus ovat välttämättömiä. Sen kehitti alun perin 1980-luvun alussa (tämä versio tunnetaan yleisesti nimellä Ada 83) Tri Jean Ichbiahin johtama ryhmä Cii-Honeywell-Bullissa Ranskassa. Kieltä tarkistettiin ja parannettiin ylöspäin yhteensopivalla tavalla 1990-luvun alussa yhdysvaltalaisen Intermetricsin Tucker Taftin johdolla. Tuloksena syntynyt kieli, Ada 95, oli ensimmäinen kansainvälisesti standardoitu (ISO) Oliopainotteinen kieli. ISO: n toimeksiannosta standardiin tehtiin vielä (pieni) muutos; tämä kieliversio tunnetaan nimellä Ada 2005. Merkittävämpi uudistus valmistui (mukaan lukien tuki ohjelman merkinnöille) ja se tunnetaan nimellä Ada 2012. Toinen merkittävä uudistus valmistunee vuonna 2022.

nimi ” Ada ” ei ole lyhenne; se valittiin Augusta Ada Lovelacen (1815-1852) kunniaksi, matemaatikon, jota pidetään joskus maailman ensimmäisenä ohjelmoijana, koska hän työskenteli Charles Babbagen kanssa. Hän oli myös runoilija lordi Byronin tytär.

Ada näkee merkittävää käyttöä maailmanlaajuisesti korkean eheyden / turvallisuuden kriittisten / korkean turvallisuuden aloilla, mukaan lukien kaupalliset ja sotilaalliset ilma-alukset, lennonjohto, rautatiejärjestelmät ja lääketieteelliset laitteet. Sen ruumiillistuma modernin ohjelmistotekniikan periaatteet Ada on erinomainen opetuskieli sekä johdanto ja edistyneen tietojenkäsittelyopin kursseja, ja se on ollut kohteena merkittävää yliopistotutkimusta erityisesti alalla reaaliaikaisen teknologian.

Kielikatsaus

Ada on monitahoinen. Yhdestä näkökulmasta se on klassinen pino-pohjainen yleiskieli, joka ei ole sidottu mihinkään tiettyyn kehitysmenetelmään. Siinä on yksinkertainen syntaksi, strukturoidut ohjauslausekkeet, joustavat tiedonkoostumusmahdollisuudet, vahva tyyppitarkistus, perinteiset ominaisuudet koodin modularisointiin (“aliohjelmat”) sekä mekanismi poikkeuksellisten suoritusaikaolosuhteiden havaitsemiseksi ja niihin vastaamiseksi (“poikkeusten käsittely”).

mutta se sisältää myös paljon muuta:

Skalaarialueet

toisin kuin C-syntaksiin perustuvat kielet (kuten C++, Java ja C#), Ada sallii ohjelmoijan yksinkertaisesti ja eksplisiittisesti määrittää skalaarityyppien muuttujille (kokonaisluku -, liukuluku -, kiintopiste-tai laskutyypit) sallitut arvot. Kantaman ulkopuolisen arvon osoittamisyritys aiheuttaa ajonaikaisen virheen. Kyky määrittää aluevirheet tekee ohjelmoijan aikomuksesta eksplisiittisen ja helpottaa huomattavien koodaus-ja syöttövirheiden havaitsemista.

ohjelmointi suuressa

alkuperäisessä ada 83: n suunnittelussa otettiin käyttöön pakettikonstruktio, ominaisuus, joka tukee kapselointia (“tiedon piilottamista”) ja modularisointia, ja jonka avulla kehittäjä voi hallita nimiavaruutta, joka on käytettävissä tietyssä kokoelmayksikössä. Ada 95 esitteli käsitteen “lapsiyksiköt”, mikä lisäsi huomattavasti joustavuutta ja helpotti hyvin suurten järjestelmien suunnittelua. Ada 2005 laajensi kielen modularisointimahdollisuuksia sallimalla keskinäiset viittaukset pakettimääritysten välillä, mikä helpotti käyttöliittymää kieliin, kuten Javaan.

Generic templates

a key to reusable components is a mechanism for parameterizing modules with respect of data types and other program entities, for example a stack package for an mielivaltainen element type. Ada täyttää tämän vaatimuksen “generics”-nimellä tunnetun laitoksen kautta; koska parametrisointi tehdään käännösaikaan, suoritusajan suorituskykyä ei rangaista.

Object-Oriented Programming (oop)

ada 83 oli oliopohjainen, mikä mahdollisti systeemin jakamisen moduuleiksi, jotka vastasivat abstrakteja tietotyyppejä tai abstrakteja olioita. Täyttä OOP-tukea ei annettu, koska ensinnäkin sitä ei näyttänyt vaadittavan reaaliaikaisessa verkkotunnuksessa, joka oli Ada: n ensisijainen tavoite, ja toiseksi ilmeinen tarve automaattiseen roskankeräykseen OO-kielellä olisi häirinnyt ennustettavaa ja tehokasta suorituskykyä.

suurissa reaaliaikajärjestelmissä on kuitenkin usein komponentteja, kuten GUIs, joissa ei ole reaaliaikarajoituksia ja jotka voitaisiin tehokkaimmin kehittää OOP-ominaisuuksia käyttäen. Osittain tästä syystä, Ada 95 tarjoaa kattavaa tukea OOP, kautta “tagged tyyppi” laitos: luokat, polymorphism, perintö, ja dynaaminen sitova. Ada 95 ei vaadi automaattista roskien keräämistä, vaan toimittaa määrittelyominaisuuksia, joiden avulla kehittäjä voi toimittaa tyyppikohtaisia varastojen talteenottotoimintoja (“finalization”). Ada 2005 tarjosi OOP: n lisäominaisuuksia, kuten Javan kaltaiset liitännät ja perinteisen operaatiokutsumerkinnän.

Ada on metologisesti neutraali eikä aseta OOP: lle “hajautettua yleiskuormaa”. Jos sovellus ei tarvitse OOP: ta, OOP-ominaisuuksia ei tarvitse käyttää, eikä suoritusaikasakkoa tule.

samanaikainen ohjelmointi

Ada tarjoaa strukturoidun, korkean tason välineen samanaikaisuutta varten. Concurrency-yksikkö on ohjelmayksikkö, joka tunnetaan nimellä ” tehtävä.”Tehtävät voivat viestiä epäsuorasti jaettujen tietojen kautta tai eksplisiittisesti synkronisen valvontamekanismin kautta, joka tunnetaan nimellä rendezvous. Jaettu tietoaineisto voidaan määritellä abstraktisti “suojatuksi objektiksi” (ominaisuus, joka on otettu käyttöön ada 95: ssä), jolloin toiminnot suoritetaan molemminpuolisesti poissuljettuina, kun niihin vedotaan useista tehtävistä. Asynkronisia tehtävävuorovaikutuksia tuetaan myös, erityisesti timeouts ja tehtävän päättäminen. Kuten asynkronista käyttäytymistä lykätään tiettyjen toimintojen aikana, jotta voidaan estää mahdollisuus jättää jaetut tiedot epäjohdonmukaiseen tilaan. Ada: n uusimmissa versioissa on kevytmekanismeja multicore-arkkitehtuureiden hyödyntämiseksi, mikä mahdollistaa erittäin tehokkaan rinnakkaislaskennan säilyttäen siirrettävyyden ja pysyen turvallisen ja hyvin määritellyn ada-rinnakkaismallin sisällä.

Systems programming

sekä “core” – kielessä että Systems Programming-liitteessä Ada toimittaa tarvittavat ominaisuudet, jotta ohjelmoija pääsee lähelle laitteistoa. Voit esimerkiksi määrittää tietueen kenttien bitin asettelun, määrittää kohdistuksen ja koon, sijoittaa tiedot tiettyihin koneosoitteisiin ja ilmaista erikoistuneita tai aikakriittisiä koodisekvenssejä kokoonpanokielellä. Voit myös kirjoittaa keskeytyskäsittelijöitä Ada: ssa käyttämällä suojattua tyyppiä.

reaaliaikainen ohjelmointi

Ada: n tehtäväominaisuuksien avulla voit ilmaista yleisiä reaaliaikaisia idiomeja (jaksollisia tehtäviä, tapahtumapohjaisia tehtäviä), ja reaaliaikainen liite tarjoaa useita toimintoja, joiden avulla voit välttää rajoittamattomat prioriteettien inversiot. Suojatun kohteen lukituskäytäntö on määritelty, joka käyttää prioriteettikattoja; tämä on erityisen tehokas toteutus Ada: ssa (mutexeja ei tarvita), koska suojattuja toimintoja ei saa estää. Ada 95 määritteli tehtävien lähettämiskäytännön, joka periaatteessa edellyttää tehtävien suorittamista, kunnes ne on estetty tai torjuttu ennalta, ja ada 2005 otti käyttöön useita muita, mukaan lukien aikaisimman aikarajan ensin.

korkean eheyden järjestelmät

ada tukee korkean eheyden sovellusten kehittämistä, mukaan lukien ne, jotka on sertifioitava turvallisuusstandardien, kuten DO-178B, ja turvallisuusstandardien, kuten yhteisten perusteiden, mukaisesti. Vahva konekirjoitus tarkoittaa esimerkiksi sitä, että yhteen tarkoitukseen tarkoitettuihin tietoihin ei pääse käsiksi epäasianmukaisilla operaatioilla; virheet, kuten osoittimien käsittely kokonaislukuina (tai päinvastoin), estetään. Ja Ada: n array bounds-tarkistus estää puskurin ylityksen haavoittuvuuksia, jotka ovat yleisiä C: ssä ja C++: ssa.

turvallisuuskriittisessä hakemuksessa koko kieli ei kuitenkaan ole sopiva, koska yleisyys ja joustavuus voivat haitata jäljitettävyys – / sertifiointivaatimuksia. Ada käsittelee tätä asiaa toimittamalla kääntäjädirektiivin, pragma Restrictions, jonka avulla voit rajoittaa kielen ominaisuudet hyvin määriteltyyn osajoukkoon (esimerkiksi dynaamiset OOP-tilat pois lukien).

Ada: n kehityksen myötä tuki turvallisuuskriittisille ja korkean turvallisuustason sovelluksille on jatkuvasti kasvanut. Ada 2005 standardisoi Ravenscar-Profiilin, kokoelman samanaikaisia ominaisuuksia, jotka ovat tarpeeksi tehokkaita reaaliaikaiseen ohjelmointiin, mutta riittävän yksinkertaisia sertifioinnin käytännön tekemiseen. Ada 2012 otti käyttöön merkintäjärjestelmät pre-conditions, post-conditions ja invariants-ohjelmien lisäämiseksi. Ada 2022 laajentaa näitä lisämerkinnöillä, jotka koskevat oletusehtoja, vakaita ominaisuuksia, estottomuutta ja globaalia objektin käyttöä. Näitä voidaan käyttää sekä ajonaikaiseen tarkastukseen että staattisten analysointityökalujen syötteenä.

Ada hyödyt Yhteenveto

  • auttaa suunnittelemaan turvallisen ja luotettavan koodin
  • vähentää kehityskustannuksia
  • tukee uusia ja muuttuvia teknologioita
  • helpottaa monimutkaisten ohjelmien kehittämistä
  • auttaa tekemään koodista luettavan ja kannettavan
  • vähentää varmennuskustannuksia turvallisuus-kriittinen ohjelmisto

Ada features summary

  • object orientated programming
  • strong Typing
  • abstractions to fit program domain
  • generic programming/templates
  • Exception käsittely
  • laitteistot koodin modulaariseen järjestämiseen
  • Standardikirjastot I/O: lle, merkkijonojen käsittely, numeerinen laskenta, kontit
  • Systems programming
  • Concurrent programming
  • real-time programming
  • Distributed systems programming
  • numeerinen käsittely
  • numeerinen käsittely
  • numeerinen käsittely
  • liitännät muihin kieliin (C, COBOL, Fortran)

lyhyesti sanottuna Ada on kansainvälisesti standardoitu kieli, jossa yhdistyvät oliopainotteiset ohjelmointiominaisuudet, hyvin suunnitellut samanaikaiset toiminnot, reaaliaikainen tuki ja sisäänrakennettu luotettavuus. ADA on sopiva työkalu ohjelmistokehittäjien todellisiin ongelmiin puuttumiseen nykyään, ja sitä käytetään useilla merkittävillä teollisuudenaloilla sellaisten ohjelmistojen suunnitteluun, jotka suojelevat yrityksiä ja ihmishenkiä.

Jaa ja nauti:
  • Sähköposti
  • LinkedIn
  • Twitter
  • Facebook
  • Digg
  • RSS

Leave a Reply