言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

データフロー(プログラムのシルエット)のまとめ、の下書き。


このプロジェクトでは、データフロー表現を使ってプログラムの可視化を試みました。データフローでは、処理の流れでは無く、変数の依存関係に着目してプログラムを構成します。依存関係をそのままグラフとして表示する事で、特に物理シミュレーションにおける変数の関係が明らかになります。例えば飛び跳ねながら移動するボールを表現する際に、X 座標と Y 座標、そして重力加速度がどのような関連を持つのかが明確になります。また、etoys の動的な UI と組み合わせる事により、プログラムのある部分を変更した際の影響を簡単に知る事が出来ます。

データフローの内部表現には、Joy 言語 [1] のサブセットが使われています。Joy 言語はコンビネーター理論に基づいた関数型言語で、コンビネーターは環境を含まない関数なので、プログラム変換に適しています。このプロジェクトでは、さらに線形論理 [2] に基づく単純化を行っています。 線形論理に基づくプログラミングとは、リソースの生成、複製、そして消費を明示的に指定するスタイルです。これにより条件文を含むデータフローグラフを正しく形式化出来ます。

現在の課題はループ(再帰)表現です。Arrows [3] はデータフローにおける制御構造を上手く形式化しますが、まだ分かりやすいグラフ表現のやり方がわかっていません。