Az Ada 2005-ről röviden
Ez a dokumentum John Barnes: Rationale for Ada 2005: Introduction és az Ada 2005 Reference Manual
-ja alapján készült.
Számos hiba és következetlenség került az Ada 95 nyelvbe, amely szinte új nyelvnek tekinthető
az Ada 83-hoz képest. Ezeket javítja az Ada 2005-ös változata, amely számos további - kisebb
- változtatást tartalmaz.
Mik a legfőbb változások?
-
Az objektum-orientált modellt bővítették. Az egyik változtatás, hogy egy objektum
művelete meghívható Obj.Op(...) formában, ez azonban inkább szintaktikai cukor,
amely valamekkora kényelmet biztosít. A Java nyelvben megismert töbszörös öröklődést is bevezették,
amely szerint egy típus egy másik típusból és egy vagy több interfészből származtatható.
Új kulcsszavakat vezettek be, amellyel explicit módon jelölhető,
hogy egy alprogram túlterhel (overload) egy másikat, vagy felüldefiniál (override).
-
Az access típusok következetesebbek, rugalmasabbak lettek. Az Ada 95-ben a névvel
ellátott access típusok közti explicit konverzió is megnehezítette a programozást. Az
Ada 2005 már számos helyen engedi a névtelen mutató típusok használatát, továbbá
explicit megjelölhető, hogy a típus konstans-e és megengedi-e a null értékeket. Névtelen
mutatók állíthatók alprogramokra is.
-
A láthatóság és a szerkezet is módosításokon esett át. A limited with klózok bevezetése
lehetővé teszi, hogy két típus (két különböző csomag) egyaránt hivatkozzon egymásra.
Ez a nem teljes (incomplete) típusok segítségével lehetséges. Továbbá a private with
klózzal is bővült a nyelv, ezáltal egy csomagnak csak a privát része látja a másik csomagot.
Számos további módosítás is történt a típusok kezelésében, többek között a
korlátozott (limited) típusok inicializációjának lehetősége. Egy újfajta return utasítás
is bevezetésre került.
-
A taszkok kezelése és a valós idejű rendszer is számos módosításon esett át. Például új
ütemező elvekkel valamint időzítők futását kezelő előre definiált csomagokkal bővült a
rendszer. Védett és taszk interfészek is definiálhatóak, ezáltal a taszkok rendszere és
az objektum-orientáltság közelebb került egymáshoz.
-
Többek között a kivételek, számok, sablonok területén is történtek módosítások. A
kivételek kezelésében csak egészen apró változtatások történtek, az egyik a "null occurence"
(előfordulás) ellenőrzése, a másik pedig az üzenetet is hordozó kivételek dobásának lehetősége.
A számtípusok területén az egyik kisebb, ámde lényeges változtatás, hogy a Mod
attribútum bevezetésre került, amely például az előjeles és előjel
nélküli egészek együttes kezelésekor hasznos. Számos új pragmát is definiáltak, ilyen
a Unsuppress, a Suppress párjaként, vagy az Assert, mely hivatalosan nem volt
támogatott.
-
A standard könyvtár is bővült, például a Container könyvtárral, valamint a fájlrendszerben
a könyvtárakat kezelő függvényekkel, és számos egyéb lehetőséggel. A mátrixok
és a lineáris algebrai algoritmusok is támogatottá váltak.