うらおブログ(移転しました)スマートフォン用の表示で見るやねうらおブログ(移転しました)この広告は、90日以上更新していないブログに表示しています。2005-10-02プログラミングセンスofftopic先日、うちの会社の入社試験(id:yaneurao:20050929)を公開し、たくさんの方の解答を見せてもらった。自分でも気づかなかったことが書かれていたりして大変興味深く拝見させていただいた。(まだチャレンジ中の人が居るので、解答はしばらく書かない。)気になったのは、プログラミングセンスだ。「プログラミングの勉強」とは、「プログラミング言語を勉強すること」だと思われている節があるが、私に言わせればそんなのは瑣末な問題である。ほげほげ(a(x,y+1)),のような式の順番で列挙している人が多い。y+1)),のように列挙すべきだ。・どうやれば漏れがなく列挙できるか?・2変数から3変数に拡張されたときにも同じやりかたで列挙できるか?・4近傍から、8近傍や5×5近傍のように拡張されたときにも同じやりかたで列挙できるか?である。)を列挙するのにどういう順番になるのか想像もつかない。考えれば、a(x,y)のときだって、後者のような順番になっているほうが好ましいことに気づくはずだ。countしている形になる。数字は小さな値から列挙するのがセオリーだ。これは、-1するものを順番に列挙して、次に+1するものを順番に列挙するという考えかた。対称式を扱うときにこういう列挙の仕方をすることがあるが、この場合、(x,y)の周辺3×3を列挙するときにこのままでは拡張し辛い。以上に見てきたように、列挙する順番ひとつにしてもセンスが問われる。残念ながら、こういったセンスはプログラミング言語の勉強をいくらやろうともおそらくは身にはつかない。場合によっては誰かにレビューされない限り、一生かかっても気づかないだろう。実際、こういう部分を意識していない人は、ケアレスミスが発生しやすい。人間である限り、ケアレスミスは避けて通れない問題なのだが、少なくとも減らす努力はすべきだ。やったら減るのか?それがこのような対称性を明確に意識すること、そして、問題を一般化して考えておくことである。電子書籍になるに至るまでの話ブログちょっとだけ移転のお知らせ時代はまだゲームセンターあらしに追いつかないのかやねうら王、電王戦バージョン提出しました将棋の神様のレーティングはいくつなのか?月別アーカイブはてなブログをはじめよう!yaneuraoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。