Ada (ohjelmointikieli)

Ada on ohjelmointikieli, jonka kehitystyön Yhdysvaltain puolustusministeriö aloitti vuonna 1974. Puolustusministeriö rahoitti uuden ohjelmointikielen kehitystyön, minkä seurauksena Ada-kieli standardoitiin vuonna 1983 (MIL-STD-1815). Alkuperäisestä Ada-kielestä käytetään nykyisin nimeä Ada 83. Ada 83:n määrittely muutettiin ISO-standardiksi ISO 8652 vuonna 1987. Ada on nimetty Ada Lovelacen mukaan, jota pidetään ensimmäisenä tietokoneohjelmoijana.

Päivitetyn kieliversion kehitystyö alkoi vuonna 1988, ja ensimmäinen versio uuden kielen vaatimuksiksi julkaistiin vuonna 1990. Lopullinen versio uudesta standardista julkaistiin helmikuussa 1995, joten nykyisin käytössä olevasta kielen versiosta käytetään nimitystä Ada 95. Ada 95 on ensimmäinen ISO-standardoitu oliokieli. Se on määritetty ISO-standardissa ISO/IEC 8652:1995(E). Useista muista ohjelmointikielistä poiketen Ada-kielen standardi on saatavilla ilmaiseksi. Ada 2005-kieleen on lisätty mm. Java-kielestä tutut rajapintaluokat sekä geneeriset säiliöluokat. 

Adan standardi ISO/IEC 8652:2012 julkaistiin joulukuussa 2012 
ja sen korjattu versio ISO/IEC 8652:2012/Cor 1:2016 on julkaistu vuonna 2016.

Adan pohjalta on kehitetty nykyään digitaalisuunnittelussa laajassa käytössä oleva laitteistokuvauskieli VHDL.

Adaa varten on kehitetty paketinhallintaohjelmisto, jonka nimi on Alire.

 Ada 95:n ominaisuudet 

Yksi tärkeimmistä Ada 95:n suunnitteluperiaatteista oli ylläpidettävyys. Kielen syntaksi on suunniteltu helppolukuiseksi ja selkeäksi, koska varsinkin suurten ohjelmistojen kohdalla lähdekoodia luetaan huomattavasti useammin kuin kirjoitetaan. 

Ada 95:een lisättiin olio-ohjelmointi, jonka ansiosta Ada-ohjelmoinnin konsepti muuttui samankaltaiseksi kuten C++. Tosin osa olio-ohjelmoinnin ominaisuuksista ovat olleet osa Adaa jo ensimmäisistä versioista asti. Vasta Ada 95 virallisesti antoi tuen olio-ohjelmoinnille. Esimerkiksi yksi Adan ominaisuuksista on kielen mahdollisuus käyttää "alatyyppejä" () jo hyvin ensimmäisissä versioissa, missä koodilla on yksi peruste "supertyyppi" (), ja uusia ominaisuuksia voidaan määritellä alatyypeissä ilman että tarvitsisi määritellä uutta supertyyppiä Tätä konseptia laajennettiin kun Ada 95-versio julkaistiin. Toisin sanoen, Ada oli varsin edistynyt ohjelmointi kieli verrattuna muihin kieliin samoilla vuosikymmenillä. 

Koska Adan aiempien versioiden ominaisuudet olivat tarpeeksi lähellä olio-ohjelmoinnin perusteita, Ada 95:n muutos oli lähinnä vain "merkittyjen tyyppien"  () lisäys. Ennen, kaikki ohjelman alatyypit ja ominaisuudet piti olla yhden menettelyn () sisällä jotta supertyyppi pystyi käyttämään niitä, mutta uuden merkittyjen tyyppien järjestelmä antaa ohjelmalle mahdollisuuden käyttää menettelyjä jotka ovat merkityn tyypin ulkopuolella, samalla tavalla kuten Javassa pystytään käyttämään erillisiä methodeja. Yksi toinen tärkeä lisäys oli kokonaisen luokan kokoisia tyyppejä (engl: Classwide type). Tällä tavalla menetelmät jotka ovat yhden luokan sisällä on aina merkattu sen luokan tyypiksi, eikä niitä tarvitse yksitellen määritellä olevan osa luokkaa. Tämä oli se viimeinen lisäys mitä Ada tarvitsi täyteen olio-ohjelmointi käyttöön. 

Muita Ada 95:n peruskieleen sisältyviä ominaisuuksia:
 vahva tyypitys
 keskeytysten käsittely
 kielessä määritelty tuki rinnakkaisuudelle
 geneeriset tyypit
 helppo liitettävyys C-, Cobol- ja Fortran-koodiin
 tuki laitteistoläheiselle ohjelmoinnille

Ada-kieltä käytetään pääasiallisesti ilmailuun, avaruuteen tai lääkinnällisiin laitteisiin tarkoitetuissa ohjelmistoissa, joissa suuri luotettavuus on ehdottoman tärkeää.

 Esimerkkiohjelma 
Yleinen esimerkki ohjelmointikielen syntaksista on Hello World -ohjelma:

 with Ada.Text_IO; use Ada.Text_IO;
 procedure Hello_World is
 begin
     Put_Line("Hello World!");
 end Hello_World;

Tämän esimerkkiohjelman voi kääntää GNU-projektin GNAT-kääntäjällä, joka on osa GCC-kääntäjäkokoelmaa. Kaupallisiakin Ada-kääntäjiä on myös saatavilla.

Ohjelman alun with-lauseella kerrotaan kääntäjälle Hello_Worldin käyttävän Ada.Text_IO-pakkausta (package). Pakkauksessa määritellyt proseduurit ja funktiot tuodaan näkyviin use-lauseella. Varsinaisen Hello_World-ohjelman runko on avainsanojen begin ja end välissä. Ada ei ota kantaa avainsanojen eikä tunnisteiden kirjainkokoon.

 Standardeja 
 ISO/IEC 8652: Information technology—Programming languages—Ada
 ISO/IEC 15291: Information technology—Programming languages—Ada Semantic Interface Specification 
 ISO/IEC 18009: Information technology—Programming languages—Ada: Conformity assessment of a language processor 
 IEEE Standard 1003.5b-1996, POSIX-Ada liitos

 Katso Myös 
 Rust, eräs toinen käännettävä ohjelmointikieli, joka Adan tapaan keskittyy takaamaan muistinhallinnan turvallisuuden.

Lähteet

 Aiheesta muualla 
 Laaja wiki-artikkeli Ada-kielestä.  
 Ada Reference Manual ISO/IEC 8652:1995(E). 
 Ada 95 Quality and Style Guide. 
 Alkuperäinen kielen määrittely, ns. Steelman-raportti. 
 ANSI/MIL-STD-1815A-1983 EverySpec.com -sivustolla 

Luokka:Proseduraaliset ohjelmointikielet
Luokka:Seulonnan keskeiset artikkelit