Alice (programozási nyelv)

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 .

Példa

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 );

Lásd még

Jegyzetek

Linkek