全てのプログラムはテーブル展開のみで表現できる?
大げさなタイトルを付けてみたものの、まだ考えがまとまっていない単なるたわ言。
最近、人様のプログラムを解析しながらリファクタリングを重ねているんだけど、リファクタリング時に、制御構造をテーブル参照に置き換える事が多い。そうする必然性は無いんだけど、2次元のテーブルを複数回に分けて探索する手法を好んで使ってる。
で、テーブルとリストの探索を繰り返す手法でリファクタリングを詰めているうちに、制御構造が消滅する関数が出てきた。最初はそういう関数もあるよな~ぐらいの感覚だったけど、考えを煮詰めているうちに「全てのプログラムはテーブル展開のみで表現できる」んじゃないかと思い始めたのね。
チューリング透過的に全てのプログラムは一意に相互変換できる、とかの概念的な話じゃなくて、プログラミング手法として「できる」んじゃないかと。
そんなことを考えていたら、この間読んだ「ハッカーと画家」で「Lispは式のみで文が存在しない」と書かれていたのを思い出した。これはもしかすると、おいらが考えていることを、言語として表現したのがLispなんじゃないのか?
「でも今からLispの勉強か~」と萎えかかったけど、「RubyはLispの方言に見える」ってのも本に書いてあった。これはあれか、Rubyの勉強をすれば良いって事か?
以前からサーバサイドなプログラミングに興味があるし、これは良いきっかけなのかもしれないな~。
ディスカッション
コメント一覧
タイトルを見たときに真っ先にLispとチューリングマシンを思い浮かべました。
僕もプログラミング手法として確立できる(されている?)のではないかと思います。
ちなみに学生時代Lisp遣いでした。。。
Lisp使いにそう言ってもらえると、もやもやがスッキリした気分。ありがとね!
良い機会だから、ちょっとLispなりRubyなりを勉強してみるよ。