tarosukeの日記: 手続き型言語の終のはじまり
日記 by
tarosuke
# あのコメントは乱文にも程があるな...。反省だ。
例えば手続き型言語のループは「繰り返される分全ての集合にループの中身を順番に適用する」と解釈し直せる。こう解釈すると「繰り返される分全ての集合」という生成的集合を定義することで宣言型に書き換えられる。ただ、ループの中で繰り返し条件を修正したりbreakしたりする場合はそのまま単純には変換できないのでそのあたりを工夫する必要がある。
ともかく、生成的集合が定義されてたらたとえばループを適用すれば良い。もし集合がキューの連鎖として実装されている集合であればキューを辿る実装を選べばいい。何にせよ結果として生成されるコードは手続き型言語で書いたものと同じになる。もっとも「ループする実装」や「キューを辿る実装」を定義するには手続き型のような記述が必要になる。が、これはC++のテンプレートのように型をあまり意識しないものになるだろう。型は処理系が入れる。また、最終的に機械語に落とす定義には手続き型かつ強い型が必要になる。でも単位がごくごく小さいのでここを気の済むまで拘ってチューンしても大して時間はかからない。
そんな言語が広まったとしたら、プログラマの仕事はおそらく「特定の状況のためのアルゴリズムや定義を記述すること」にシフトしそうな気がする。仕様をプログラミング言語に翻訳するのがコーダで、仕様をアルゴリズムに変換するのは処理系。アルゴリズムを実装に変換するための定義を書くのがプログラマ。というわけ。まーコーダは兼任だろうけどなー。
# さてー、ハードウェアにも「アルゴリズム」があるわけだが、RTLを吐くような定義とハードウェアのためのアルゴリズムを用意すると...。
手続き型言語の終のはじまり More ログイン