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)

ネットワーク・アプリケーションを楽に書きたい

宣言型のプロセス間通信(と同期)


Copyright 1999-2001, TAKAGI Yusuke.