変数に値を再代入する方法をしらない人が書いたコードの中では、変数とは定数のことである。

ゆるい言語、きびしい言語、いろいろあるけれど、使う人が常にすべての機能を正しく知っているとは限らないですの。むしろ、大小の違いこそあれ、全ての人は自分なりのサブセットだけを使ってコードを書いている、と言っても過言ではありませんの。(*)

さて、一見して無駄が多く、構造的に弱そうなコードであっても、良かれと思って書きなおしてしまうと問題が起こることがありますの。

それは直接的には、既存部分と書き換えた部分の不整合のせいだったり、書き換え方がそもそもまずかったせいだったりするわけですけど、、根っこには、書いた人と書き直した人の、お互いのサブセットの衝突があると思いますの。

よく勉強して、フルセットに近いサブセットを持っているほうが常に正しいか、というとそうでもなく、不完全な学習によって作られたサブセットが、ある種のドメイン固有言語となっている可能性もありますの。

オール天然素材でつくった、ロハスでおしゃれで、だけど頑丈で安全!と噂の橋をトラックで渡るのなら、その前に、それが歩行者と自転車しか知らない人が作った橋じゃないことを確認してからのほうがロハスですの。

郷に入れば郷に従え、という通り、
既存のコードを分析するときは、言語のフルセットの機能から考えるだけでなく、書いた人のサブセットの姿も考えないと、本当の意味は見えてこないのかもしれないと思ったのですの。


*) アセンブラや、Brainf*ckみたいな小さな言語もあるので実は過言ですの。

0 コメント: