|
■URL
http://www.dloo.org/
オープンソースプロジェクトである「dLoo」は、プログラミング環境構築のプロトタイプである「バージョン0.4」を発表した。dLooはインターネット時代にあった「新しい言語」、「新しいプログラミング形態」、「新しいものの考え方」を提案する一大構想である。このプロジェクトのソースコードをすべて公開され、GPLでライセンスされている。
dLooの問題意識は、既存のほとんどのプログラミング言語がコンパイルされた後は改変を加えることができないという点にある。dLooは、言語構造そのものを利用者が拡張できるようにし、ピア・ツー・ピア(P2P)の仕組みを利用してインターネットから動的にプログラムをコンパイルできる環境を構築しようとするものだ。プロジェクトはGPLでライセンスされているために、プログラマーがこの新しいプログラミング環境を利用すればするほどプログラムの言語構造は豊かになっていく、というメリット彼らは考えている。
この環境を実現するために彼らが考え出したのが「Word指向プログラミング」である。これはオブジェクト指向プログラミングなどという言葉と対をなすものだ。一世代前、プログラミング言語(C、FORTRANなど)ではデータとメソッドがそれぞればらばらに定義されるため、プログラムが大きくなると手におえなくなった。この問題を解決するため最近のオブジェクト指向プログラミング言語(C++、Javaなど)においては、データとメソッドを関連するものを求めてクラスにカプセル化し、その結果として大きな成功を現在収めている。しかし、dLooプロジェクトはこれでも拡張性が足りないと指摘する。オブジェクト指向プログラミングにおいてはプログラミング言語の文法規則とデータやメソッドの意味の関係について何も定義していないからである。そこでWord指向プログラミングにおいてはデータとメソッドに加えて文法規則と意味までもひとつにまとめて「Word」と呼び、これをプログラミングの一つの単位と定義した。文法規則や意味をカプセル化する過程にはXMLなどの方法を利用している。これにより一つのWordを別のWordと組み合わせたり、関連づける方法をそれぞれのWord自体が理解できるようになり、自由自在につなぎ合わせることによって新しいプログラムを容易に作ることができる環境ができる。
また、Wordは一つの単位となっており、それぞれのWordの間の関係を自由に定義できることから、インターネットからソースコードをダウンロードしたときに自分のコンパイラが理解しないWordがあると、P2Pネットワークを通して必要なWordをダウンロードし、その場で動的にコンパイルする環境を考えることができる。dLooでは、この環境を実現するためにWordで「BlueBox」という名のブラウザーを開発した。このブラウザーには主要な言語の構造を抽象クラスとして実装している。この抽象クラスを継承することによりPerl、Python、C++、Javaなどの言語をBlueBox上で擬似的に実装しており、これらの言語で書かれたプログラムをコンパイルすることができる。それぞれのテクノロジーに合わせたコンポーネントを作成でき、いわばテクノロジーの間の「翻訳者」のような役割も果たす。ユーザーがまったく新しい言語を一から創り出したり、JavaやC++などの言語のメソッドや文法構造を一部だけ改変することも可能で、このことが大きな拡張性を生み出している。また、このBlueBox自体がブラウザーであるため、ネット上のさまざまなリソースにアクセスすることもできる。
なお、BlueBoxにはネットからダウンロードした新しいWordを格納するためのデータベースが装備されており、将来的にはこの機能のためにPostgreSQLなどのデータベースも利用できるようになる予定だ。Wordの数が増大すると、一種の「自然言語」を用いてコンピューターを利用する環境を作り上げることも考えられるが、その点もプロジェクトの視野に入っているという。
dLooプロジェクトが目指すものはあまりにも大きく、インターネットで自由自在に言語構造を拡張できることから、無規律な言語形態が乱立する可能性も否定できない。またそうした問題を解決するための積極的な方策もこのプロジェクトでは用意されてないように見える。しかし理論的にいえば、言語構造を数学的に定義することは可能であり、多くの言語に論理的な意味において大した相違がないことはよく知られている事実でもあることから、このプロジェクトの成功も否定はできない。バージョンが上がっていくにつれてどのようなプログラミング環境ができ上がっていくのか、またどれだけ多くの人のアイディアが吸収されるのが、注目されるところだ。
(2001/7/16)
[Reported by taiga@scientist.com]