書き難き我が意を得たるプログラム

を読んで、思ったことを書く。

「プログラムは思った通りに動かない。書いた通りに動く。」いったい誰が言ったのかは分からないこの箴言だが、ただ当たり前のことを言っただけでは箴言にはならなくて、ここには意外性がある。つまり、この箴言に出会う前の人間の多くは「プログラムは思った通りに動く」と思っていたはずだ。その意外性の根源は、実際にプログラミングをしたことがある人間なら誰でも直面する問題だ。

なぜプログラムは書いた通りに動かないのか。

プログラムは書いたとおりに動くと言いますが、どう考えてもおかしな動きをすることがあると思うのは私だけでしょうか?

なぜプログラムは書いた通りに動かないのか。 - Yahoo!知恵袋

プログラミングに限らずとも、コンピューターに触れる人間誰もが同じ問題に直面している。

小さい子どもにコンピュータを触らせるということ - ビスケットのあれこれ

「プログラムは書いたとおりに動くのか」の中で「コードとデータの境界」の話が出てくる。プログラムは書いたとおりに動くし、それで「正しく動く」わけだけど、データも関わってくるから結局ユーザーからすれば「正しく動く」とは限らない。

コードとデータの境界というのは、ここで問題になっている部分に関して言えば、単純だと思う。そこにあるのは、特定の意味が想定されているか、想定されていないかの差だ。Schemeプログラムは、Schemeの意味論下で解釈され、その意味が形式的に決定される。しかし、一般にデータは特定の解釈というものが存在せず、複数の解釈が可能だ。意味とは何かという問題は一概には言えないのだけれども、「プログラムが書いたとおりに動かない」という人がいるとき、その人はおそらくプログラムを異なる意味で解釈しているのだろうなどとは言える。

この後HTMLの意味とかそういう話題について色々書こうとしたけど脱線しているし(まあ最初から線なんてないけど)疲れたので次回にまわす。