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[1]
ja sen korjattu versio ISO/IEC 8652:2012/Cor 1:2016 on julkaistu vuonna 2016.[2]
Adan pohjalta on kehitetty nykyään digitaalisuunnittelussa laajassa käytössä oleva laitteistokuvauskieliVHDL.
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ä" (engl.subtypes) jo hyvin ensimmäisissä versioissa, missä koodilla on yksi peruste "supertyyppi" (engl.supertype), ja uusia ominaisuuksia voidaan määritellä alatyypeissä ilman että tarvitsisi määritellä uutta supertyyppiä[4] 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" (engl.tagged type) lisäys. Ennen, kaikki ohjelman alatyypit ja ominaisuudet piti olla yhden menettelyn (engl.procedure) 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.[5]
Muita Ada 95:n peruskieleen sisältyviä ominaisuuksia:
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:
Tämän esimerkkiohjelman voi kääntää GNU-projektin GNAT-kääntäjällä, joka on osa GCC-kääntäjäkokoelmaa.[6] 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