状態遷移を記述する「何か」が必要だ!!!

http://d.hatena.ne.jp/textfile/20060922/patterns
より。
さて、私は前々から感じていた事がある。
移植という作業は億劫である。
よって
各環境に合わせた*1プログラミングをするというのは億劫である。(このおかげで仕事が入るというのは置いておいて・・・)
こういう処理を記述したものをコード上から取り除くと・・・状態遷移記述だけになるのではと感じるのだ。
究極的にはそのようなプリミティブな記述から各言語へのトランスレーターがあればよいと感じているのだ。
もちろん、指定した状態への入り口を作るようなモジュールの分け方が出来るような出力が出来る事が条件だ。
そうすれば各言語のバッドノウハウなどは取るに足らないものになりプログラマーもさようなら!MSの開発環境に依存しなくなり、CEOやマネージャーがプログラマーの生産性やプログラムの状態遷移不完全からくるバグによる納期遅れについて頭を悩ます事もなくなるのだ・・・(だが、各アルゴリズムの状態遷移を理解でき、完全な状態遷移を記述する事の出来るコンピューターサイエンティストが必要になるのですがね・・・いや、これがプログラマーか^^;)
正にGood Bye Codingの理想に近づくわけだが・・・(http://d.hatena.ne.jp/studiokingyo/20060330#p2 より。)
もし、この方法が確立されたらプログラミング言語によるプログラミングというものは文化に過ぎなくなるような気がする。


なんというか、パーサー作りの為にBNFが出来たように状態遷移記述の為に何かが出来ればなと感じているのだ。
もしかしたら関数型言語が担っていたり?(ゴメン、まだ触っていない・・・)
昔、状態遷移図についてイチャモンをつけていた覚えがあるけど、これを元にプログラム言語にトランスレートできればこれ以上に楽な事は無い・・・。もちろん、この状態遷移図が完全である事が条件だが。
ちなみに状態遷移表をプログラム言語にトランスレートするツールは既にある。
http://d.hatena.ne.jp/studiokingyo/20060115#p1


さて、状態遷移を視覚化、概念化するにはどうすればよいのだろうか・・・
例えば、LZWのアルゴリズムでハッシュ法を使う方法とTST法を使う方法があるとするが、その中で使う「法」が大切なのではなくてLZWアルゴリズムの「プリミティブな状態遷移」を視覚化、もしくは記述する方法を確立しなくてはと感じているのだ。C言語で記述する場合、この「法」の部分と「プリミティブな状態遷移」がソースコード内に混じってしまい*2もし修正する場合は注意深く扱わないといけない。
これではソースコードを直すのも一苦労だ。
むしろ完全な状態で作ったはずのソースコードに手を加えるとなるとなおさらだ。なんらかの事でこのような繰り返しが来るとなるといつかミスる事は避けられないのではないかと感じている。


以上のようなアイディアは

に発案した私なりの提案なのだが・・・実現するにはまだ、頭の中に考えがまとまってこない・・・。
むしろ、後で見てみたら自分でも何を言おうとしていたのか分からなくなってくるかもしれない。後日、実現に向けて考えを深めていく必要があると感じた。


やねうらお氏はgoogle:Kascalという独自の言語を作り、各言語に対する差異をなくそうとしていた。
私は各アルゴリズムの状態遷移をプリミティブ化し、各環境に対する差異をなくすライブラリを作りたいと思う。
もう、C/C++で記述するライブラリ製作にはうんざりなのだ!!!正直、飽きたのだ!!!

*1:OSだとかCPUとか言語とかの差異。

*2:そのアルゴリズムに精通しているプログラマーであればソースコードの内容は理解できなくもないのだが