| アリス | |
|---|---|
| パラダイム | マルチパラダイム:命令型、関数型、分散型、並行型、制約型 |
| 家族 | ML:標準ML |
| 開発者 | ザールラント大学 |
| 初 登場 | 2000年6月 16日 ( 2000-06-16 ) |
| 安定放出 | 1.4 / 2007年5月3日 ( 2007-05-03 ) |
| タイピングの規律 | 強力、静的、推論 |
| OS | クロスプラットフォーム |
| ライセンス | MIT |
| Webサイト | www |
| 影響を受けた | |
| ML、オズ | |
Alice ML は、ドイツのザールブリュッケンにあるザールラント大学のプログラミング システム研究所によって設計された、汎用的で高水準のマルチパラダイム関数型プログラミング言語です。[ 2 ]これはStandard MLの方言であり、遅延評価、並行処理(リモート プロシージャ コールによるマルチスレッドと分散コンピューティング)、および制約プログラミングのサポートが追加されています。
Aliceは、Standard MLをいくつかの点で拡張しており、その前身とは一線を画しています。Aliceは、独立した実行スレッドによって提供される値を表すfuture型を使用することで、基本言語の一部として並行処理機能を提供します。future値を使用するスレッドは、その値を実行するスレッドが計算を完了するまで、その値にアクセスしようとするとブロックされます。関連する概念としてpromiseも提供されており、スレッドが計算するfuture値を別のスレッドに提供することができます。future型とpromise型の変数は、データフロー同期の実装に使用されます。
Haskell関数型言語と同様に、AliceはStandard MLの従来の即時評価戦略とは異なり、プログラムで遅延評価戦略を可能にする機能を提供します。Haskellはデフォルトで遅延評価モデルを使用しますが、Aliceはデフォルトで即時評価モデルを使用するため、計算を遅延評価するには明示的なプログラミングステートメントが必要です。
ザールラント大学によるAliceの実装は、SEAM(Simple Extensible Abstract Machine)仮想マシンを使用しています。これはフリーソフトウェアであり、x86アーキテクチャ向けのバイトコードとネイティブコードへのジャストインタイムコンパイル機能を備えています。
Aliceの初期バージョンは、Mozart Programming System(Oz)仮想マシン(VM)上で動作し、AliceとOzコード間のインターフェースを可能にしていた。
アリスのリモートプロシージャコールは仮想マシンに依存している。なぜなら、仮想マシンは計算対象のコードをあるコンピュータから別のコンピュータに送信する可能性があるからだ。
Aliceは、遅延評価と並行処理のためのいくつかのプリミティブを追加してStandard MLを拡張しています。たとえば、spawnキーワードを使用してスレッドを作成できます。フィボナッチ数を計算する素朴なアルゴリズムを考えてみましょう。
fun fib 0 = 0 | fib 1 = 1 | fib n = fib ( n- 1 ) + fib ( n- 2 );の値が大きい場合n、の計算には時間がかかります。この計算は、別のスレッドで によって実行できます。fib n
val x = spawn fib n ;この変数xは、いわゆるフューチャーにバインドされます。操作で の値が必要な場合x、スレッドが計算を完了するまでブロックされます。並列性を活用するために、fib を次のように定義することもできます。
fun fib 0 = 0 | fib 1 = 1 | fib n = spawn fib ( n- 1 ) + fib ( n- 2 );