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