Langphilia! /
KL1 /
Distributed KL1 /
DKLIC
Distributed KL1: 宣言型広域分散プログラミング
分散処理の記述は煩雑でバグが入りやすく、
普通は解析・検証がほとんど不可能である。
しかし、これは手続き型言語に分散拡張を施しているためではないか。
並行論理型言語は、プロセス間通信を宣言的に記述することができる。
また、静的解析の研究が進んでいるため、これを利用して
通信プロトコルの一貫性を保証することができる。
手続き型言語の分散拡張がほとんど別の言語になってしまうのに比べて、
並行論理型言語GHCの並列・分散拡張であるKL1は、
GHCのセマンティクスを変えないように設計されているため、
静的解析の研究成果をそのまま利用することができる。
Distributed Applications
分散アプリケーションとは、
一般に複数のノード(計算機)が協調して、特定の仕事を行うものです。
次のような特徴があります。
- 通信 (communication)
- 複数ノードが協調しながら働くために、通信が必要です。
通信を行うことが目的であるアプリケーションとして、
E-mail, chat, ftp, http などがあります。
- 分散 (distributed)
- 通信より計算が目的でも、負荷分散を行うことが重要である場合があります。
インターネット上のボランティアの計算資源を借りることによって、
スーパーコンピュータを越える性能を持つ分散計算のプロジェクトが実働しています。
[SETI@home,
setiathome.ssl.berkeley.edu]
また、インターネットのDNSは分散データベースです。
-
- 遠隔 (remote)
- 距離的に離れたノードにアクセスすることが目的である場合があります。
計算機がクラッシュしたときに管理者が近くにいるとは限りません。
苛酷な環境で働くロボットを操作したり、外国の患者を手術する例があります。
telnet, rlogin, ssh などのアプリケーションがあります。
- 透明 (network transparent)
- 自分自身や扱っているデータが分散していることを、ユーザに意識させない。
空気のように無意識に利用できると、ユーザにとって便利になります。
反対語っぽいけど似た意味で、隠蔽 (hiding) という言葉があります。
X Window System は、分散透明です。
KL1 の並列分散機能は透明であることを目指しています。
並列はほとんど透明ですが、分散は全く透明ではありません。
- モバイル (mobile)
- コードがノード間を移動して実行されることです。
分散透明なら、プログラマが何も考えずに書いた普通のプログラムが
モバイルであることができます。
ORB, agent, 分散KL1の述語移送など。
コンセプト (Policy)
ネットワーク・アプリケーションを楽に書きたい
- 遠隔述語呼び出し
- 述語移送
- ストリームの管理・識別
- 荘園(仮想計算空間)の管理
宣言型のプロセス間通信(と同期)
- ソケット入出力による分散処理の記述は、
変数を使わずロード・ストア命令でプログラムを書くようなものだ。
- ストリームとメッセージによって分散処理を記述すると、
入出力のタイミングを気にしなくてすむ。
- 静的解析が可能、あるいは容易である。
- 変数 vs load/store
- イベント vs read/write
- 分散論理変数 vs send/receive
Copyright 1999-2001, TAKAGI Yusuke.