A HUME programozási nyelv

A nyelv rétegei


A HUME ötvözi a véges automatákat - programozási folyamatokhoz (koordinációs réteg) -, a tisztán funkcionális programozással - programozási kifejezésekhez (kifejező réteg). A koordinációs réteg támogatja az indukciós programozást (feltehetően) végtelen folyamokra és egyéb adatszerkezetekre, míg a kifejező réteg adat- és programszerkezeteken végzett véges programokat támogat. A statikus programanalízissel kiegészített óvatosan konstruált nyelv biztosítja a végességet.

Kifejező réteg

A HUME kifejezései tisztán funkcionálisan definiáltak, (esetlegesen rekurzív) szigorú szemantikai jelöléssel. A kifejezésekből olyan önmagában álló, egyszer lefutó, nem-újrahívható folyamatokat készít a koordinációs réteg szerkezetén keresztül, amelyeknek statikusan bizonyítható tulajdonságai:

Mindez a megfelelő típusok és a formális szemantika segítségével érhető el

Koordinációs réteg

A HUME koordinációs rétege véges állapotokkal írja le több, egymással kölcsönhatásban levő, újrakezdhető folyamatot, mely folyamatok definíciója a tisztán funkcionális kifejező rétegben található. A koordinációs réteg a következő statikusan bizonyítható tulajdonságokkal rendelkezik:

A koordináció alapegysége a doboz (box), mely absztrakt jelölése egy folyamatnak, ami az input és output csatornák közötti eseményeket írja le, rendelkezik kivételkezeléssel. A dobozokat drótokkal (wire) kötjük össze, ezzel adjuk meg az egyes folyamatok közötti kapcsolatokat.

Deklarációs réteg

A deklarációs rétegben adjuk meg azokat a típusokat és értékeket, melyeket a koordinációs és a kifejező rétegben használunk.
A koordinációs réteg számára a doboz és drót (box és wire) deklarációkat, míg a kifejező réteg számára a függvénydeklarációkat tartalmazza. Az egyszerű értékekkel ellentétben a függvények lehetnek rekurzívak és kölcsönösen rekurzívak is.