Alice | |
---|---|
Szemantika | funkcionális |
Nyelvóra | párhuzamos programozási nyelv [d] , kényszerprogramozási nyelv [d] ,funkcionális programozásiésprogramozási nyelv |
A végrehajtás típusa | fordítás bájtkódra a virtuális gép számára |
Megjelent | 2002 |
Szerző | Programozási Rendszerek Laboratórium, Saarland Egyetem |
Típusrendszer | Hindley-Milner |
Főbb megvalósítások | Alice (az egyetlen) |
Befolyásolva | Standard ML , Oz |
Engedély | MIT licenc |
Weboldal | ps.uni-saarland.de/alice/ |
Az Alice egy funkcionális programozási nyelv , amelyet a Saarlandi Egyetem Programozási Rendszerek Laboratóriumában fejlesztettek ki . Ez a szabványos ML nyelv dialektusa, amelyet lusta kiértékeléssel , párhuzamossággal ( többszálú és távoli eljáráshívásos elosztott számítástechnikával ) és kényszerprogramozással egészítenek ki .
A Saarlandi Egyetem Alice általi megvalósítása a SEAM (Simple Extensible Abstract Machine) virtuális gépet használja. Ez egy ingyenes szoftver , és menet közbeni fordítást használ bájtkódhoz és x86 natív kódhoz is .
Az Alice korai verziói a Mozart / Oz virtuális gépen futottak , lehetővé téve az Alice és Oz kódjainak együttműködését.
Az Alice távoli eljárások meghívásának képessége a virtuális géptől függ, mivel az a végrehajtható kód közvetlen átvitelét használja egyik számítógépről a másikra.
Alice kibővíti a Standard ML-t számos primitívvel a nem szigorú számítás egzotikus modelljéhez, az úgynevezett hívás-célzáshoz , amely könnyen megvalósítja a párhuzamosságot . Szálak hozhatók létre a fenntartott spawn szó használatával .
Vegyünk egy natív algoritmust a Fibonacci-számok kiszámításához :
szórakoztató fib 0 = 0 | fib 1 = 1 | fib n = fib ( n - 1 ) + fib ( n - 2 );Nagy n értékek esetén a számítás fib nhosszú időt vesz igénybe. Ezt a számítást egy külön szálban lehet elvégezni:
val x = spawn ( fib ( n ));Az x változó most egy úgynevezett jövőbeli értékkel van társítva . Ha egy műveletnek azonnali x értékre van szüksége , akkor blokkolja, amíg a szál be nem fejezi a számítást. A párhuzamosság jobb kihasználása érdekében akár így is definiálhatja fib:
fun fib 0 = 0 | fib 1 = 1 | fib n = spawn fib ( n - 1 ) + fib ( n - 2 );
Programozási nyelvek | |
---|---|
|