日経コンピューター2009年7月22日号特集
「もっと速く作れる 20社に見る新開発手法」
において、「100%自動生成可能」という話が出てきているが、
事例がでているだけで、どうしてそのようなことができるのかの
論理的根拠がないとおもう。
それって、ボツになった修士論文のなかで説明しているので、
ちょっと2回にわけてかいてみる。
まず、プログラムを書くためには、何が必要かを考える。
例として、Hello Worldをあげる。
これをプログラムで書くには・・・
入力-処理-出力はわかっている。
入力データ:なし
処理:出力する
出力データ:Hello World
でも、これだけでは書けない。ファイルに書き出すのか?コンソールに出すのかわからない。出力媒体、入力媒体がわかってはじめて
入力データ:なし
処理:出力する
出力データ:Hello World(コンソール)
()が媒体
class test { public static void main(String[] args) { System.out.println("Hello World"); } }
と書ける。
では、逆に、入出力とメディアと処理が決まっていたら、プログラムは書けるのか?
と考える。
このとき、
(1)入出力メディアごとに、関数、ライブラリ、クラスなどなどがあったとする。
そのとき、メディアごとに必要になる値(ファイル=ファイル名など)
も入力されるとする。
(2)そして処理は、固定的にいくつか用意されていて
(値転送、部分文字列、四則演算、ソートなどなど)、
(3)出力データは、その処理方法を組み合わせることによって得られる
とすると。。。
プログラムは、
(あ)入力データをメディアごとに入力
(い)出力するための処理を選び出し、
入力データを適用して出力データを作り
(う)出力データをメディアごとに出力
となるが、
(あ)は(1)から該当する入力メディアを検索、取りだして、データを適用
(い)は(2)から該当する処理を検索、取りだして、データを適用
(う)は(3)から該当する出力メディアを検索、取りだして、データを適用
ということは、(1)、(2)、(3)をRDBにいれ、順番に取り出して、検索適用すると・・・
この自動生成は結局、RDBからライブラリを検索、それを処理加工するだけの話になる。