3x5とプログラム

こういう議論は楽しいですね。
http://togetter.com/li/68853


僕もよくC++とかでこう書いて怒られます。

int main(int argc, char* argv[]) {
  ClassA* a = new ClassA();
  a->say();
}

deleteしてないんですよ。
なぜこう書くかというと、OSが勝手に解放してくれるからです。Visual Cとかだと終了時にリークしてるよーって警告出した気がするので、コード的にいいもんじゃないんですけど。
まあこれはJAVAとかC#とかに慣れるとついNewしたくなるという癖の問題で、例外として。例外でも僕はやりますけど。


作法的なのだとこういうのとか。

if (1 == a) {
}

最近だとこの辺も微妙ですかな。

if ("none".equals(ret)) {
  System.out.println("none!!");
}

結構、日本語の形式が関わっている"作法"は多いです。
なぜ"none".equals(ret) がダメだと思いますか?
比較の対象が左にないと、日本語に馴染んでいる人には気持ち悪いんです。
"none"はretであるか?ではなく、retが"none"であるかを確認したいんではないのか、という議論ですね。


例えば倒置法が普通であれば、「暑いですね、今日は」となって、こうなるわけです。

if ("hot".equals(today)) {
}

暑いのは今日なんだから、この書き方が普通なんです。


でも日本語はそうじゃないんで、わざわざこういう風に書く人も結構多いです。

if (ret != null && ret.equals("none")) {
  System.out.println("none!!");
}

綺麗ですね。
MISRAとかのコーディング規約にも、左側に比較するもの、右側に比較されるものを持ってくることは規定されていたかも。覚えてないですけども。


まあ、個人的な意見ではくそくらえなんですけど。
動きゃいいんですよ動きゃ。


さてそんな僕ですが、あんまり記憶力がよくないのと人の話をあまり聞かないので、子供の頃先生にどう評価されてたかは覚えてないんですが、とても気に入ってくれる先生とそうでない先生に二分されてた気がします。
覚えているのは親が石鹸洗剤を使っている人、という質問と、牛乳1瓶何mlか、という質問で、両方ともクラス全員前者は使ってない、後者は300ml以上と答えて、僕が一人クラスで立って発言してた風景です。
牛乳瓶とか、お前ら瓶に書いてあるじゃねーかとか思った記憶がありますが、紙パックの500mlと比較して得意げに質問してた先生からすると嫌な子供だったのかもしれません。


5x3と3x5が同じであると気付く子供は必ずいます。
return (0); に意味がないと気付く人も必ずいます。
頭ごなしに否定するのだけはやめてほしいなぁと思いますが、同時に教師は神じゃないのでそこまで求めるのも酷だよなと思います。


そもそも義務教育などという制度は必然的に教育の最低水準を下げるため、今の教師がセンセーなんて呼ばれるほどの賢人でないことは自明なので、子供が納得できない事があれば親が救い上げればいいんじゃないかなぁとは思いますけども。
一連のTweetで一番気に要らないのは、最後は教師がちゃんと説明できるかどうかに落とそうとしているところで、教師は子供以上にバカだって前提の上で制度作りをしないと一定数の子供にとって居心地悪くなるんじゃないかなぁと。


5x3=3x5は正しい。
教師のレベルが低い前提なら、全国に配布する教科書としては上記が正しいですよ。
deleteをしていない件で、僕を論破出来る人が多分いないのと同じ理由で。