代入を値の再定義と考えるといいらしい

=には、二つの不自然がある。

一つは、他の世界ではそれは等号なのに、プログラミングの世界の多くでは代入になっているということ。

そしてもう一つは、プログラミングの世界では左から右に処理が進むことが多いのに、こと代入に関しては右から左になってしまうこと。

それって代入を考える時に、右から左に流れる事に認知科学的な合理性があるって事じゃないの?と思ったんだけど、Twitterにすんばらしいつぶやき。右から左に流れる事に合理性があるわけじゃなくて、代入式を脳みそがどう解釈するかの問題。

左辺を右辺で定義するのは、数学とか物理では当たり前だし、数学はそれを代入のように抽象的に扱えるようにしているだけじゃないか。 *Tw*

再代入とは再定義、と考えると関数型言語で再代入禁止するのもうなずける。 *Tw*

ものすごい納得した。

俺達は「a = a + 1」を見た時に、これを a の再定義と解釈しているという説。再定義ならば単に「a は a + 1 です」とか「a を a + 1 と再定義する」と読めるので全然おかしくないし、とても自然。右から左に流れているようにみえるけど、実際の思考はやはり左から右へ流れているということになる。弾さんのところのコメントのように漸化式の項の定義だと思えば = という記号に対する数学的な違和感もない。