A HUME programozási nyelv

Bevezetés



A beágyazott rendszerek egyre jobban elterjednek és uralkodóvá válnak a mindennapi életben. Informatikai szempontból az ilyen rendszerek a szoftver/hardver olyan keverékét képviselik, amelyek a szokásosnál sokkal alacsonyabb absztrakciós szinten jelennek meg, ugyanakkor szigorú költségvezérelt követelményeket határoznak meg a rendszer kapacitásának megfelelően. Ezek a törekvések gyakran a nyelv sajátosságainak és az implementációs követelményeknek egy gyenge párosítását adják eredményül.
A HUME célja, hogy a programabsztrakció olyan magas szintjét nyújtsa, amennyire az lehetséges, miközben továbbra is biztosít bizonyos tulajdonságokat: aszinkronitás, konkurencia, helyesség, stb. Például a nyelv különböző szintjein képes a következőket biztosítani: kivételkezelés, automatikus memóriakezelés, magasabbrendű függvények, polimorfizmus és rekurzió. Mindegyik esetben a szükséges idő és hely a legfontosabb szempont.
Mivel a nyelv tervezésénél főleg a biztonságkritikus alkalmazásokra koncentráltak, a legfontosabb, hogy a HUME programoknak előre látható, kiszámítható és bizonyítható tulajdonságaik legyenek. Ennek megfelelően, az ilyen tulajdonságokkal rendelkező nyelvek ( pl. véges állapotautomaták) híján vannak a kifejezőerőnek. A HUME tervezési célja, hogy támogassa a magas szintű kifejezőerőt, miközben maximálisan biztosítja a dinamikus viselkedés erős korlátainak megtartását: végrehajtási idő és helyigény. A HUME ezeket a következőképpen oldotta meg:

  • szétválasztotta a kifejező és a koordinációs területét a nyelvnek
  • beépített eszközkészlet szolgáltatása, amely felöleli mind a statikus, mind a dinamikus programkezelést és analízisét.

  • Minden rendszernek, melynek célja biztonságkritikus alkalmazások létrehozása, bizonyos számú szigorú követelménynek kell megfelelnie, ha megbízhatóan szeretnénk működtetni. Általánosságban ezeknek a rendszereknek a helyesség és a pontos teljesítmény kritériumának kell megfelelnie. Az utóbbi könnyen megvalósítható alacsony szinten való működéssel, míg az előbbi inkább magasszintű működéssel valósítható meg könnyen. Az elsődleges célja a HUMEnak, hogy mindkét kritérium teljesüljön, miközben a magasszintű absztrakciót valósítja meg.
    A nyelv definíciója az alaptípusok (elsősorban numerikus típusok) széles körét támogatja. Ez a típuskényszer következtében van így, és a típus-biztonság alapvető, hogy biztosítani tudjuk a helyességet és a biztonságosságot. Rendszerszintű és folyamatszintű kivételkezelés egyaránt támogatott, beleértve a lehetőséget az időtúllépés beállítására is, mely kifejezések kiszámításánál lehet hasznos. Kivételek a kifejező rétegben válthatók ki, de csak a folyamat kezeli le őket. Ez csökkenti a kivételkezelés költségét, fenntartva a kifejező nyelv "tisztaságát", ugyanakkor egyszerűsíti a kifejezés költségének kiszámítását.
    Radikális nyelvtervezési döntés a biztonságkritikus rendszereknél az automatikus memóriakezelési technikák alkalmazása. Az automatikus memórikezelés előnye, hogy csökkenti a hibákat, mivel a lehető legkevésbé támaszkodik a manuális memóriakezelésre. A hátránya a túlzott idő és helyigényében rejlik. A HUME implementációk statikus analízis eszközöket használnak, hogy korlátozzák a helyigényt, és kötött idejű memóriakezelési technikákat foglalnak magukban.

    A nyelv története

    A nyelvet David Hume (1711-1776) skót szkeptikus filozófusról nevezték el.