Daysこの広告は、90日以上更新していないブログに表示しています。let狂いの時期が過ぎた頃からちょっと大きな(と言ってもたかが知れてて、まぁ200行とか300行とかの)プログラムが急に書けるようになったのを覚えている。letは簡単なループのようなものを書くときには便利だけど、少し処理が複雑になってくるとすぐに書きにくくなってくるように感じる。letに対して持つ)優位性は2つくらいのことに起因するんじゃないかと思う。初期値の設定を遅らせることができること。n))))のようなコードを書くことになるけど、nやcountといった変数の隣に初期値が書いてあることで、「まず初期値があって、それに変化を繰り返し起こさせる」というか、値のインクリメンタルな更新の積み重ねが最終的な成果物を生む、という思考に陥りがちだと思う。上の単純な例では分かりにくいかもしれないけれど、より複雑な再帰のコードを書こう(読もう)と思ったら、「直前の状態から次状態へどう更新するのか」という数学的帰納法的な思考方法が必要になってくるんじゃないだろか。そのためにはひとまず初期値が決まっていることは忘れていた方が考えやすい。0))そして2つめは、入れ子になったループを内部から書けること。以下同様)、loop2は自分自身を再帰的に呼び、ときどきloop1を呼んで返るような二重のループがあったとする。for文を入れ子にしてもbreakやcontinueだけでは書けないようなちょっと複雑な部類のループ。このとき、最初に書くことになるのは外側のループであるloop1ではなくて内側のループのloop2だ。入れ子のループでは最も内側のループ内での処理が1番本質的な部分であることが多いだろうから、ここを始めに書けるのは一足飛びに処理の核心に触れられることと同じだろう。loop2を定義しているときには「loop2がどういう条件下で呼び出されるべきか」について考えなくてよく、境界条件について考えるのはloop1の定義を書くときまで先延ばしにすることもできる。これはボトムアップに攻めるかトップダウンに攻めるかといったアプローチの仕方によっては一概に利点とは言えないかもしれない。「どうやって書いたらいいんだ?」っていうような手探り状態でコードを書いてるようなときには、とりあえずいろんなものを後回しにしておいていきなり本質部分が書ける状態に入れた方が嬉しいでしょう。んー、何が言いたいのかよく分からなくなってきた。文章が長くなってくるとどんどんダレてくるし、増長した文になるのがよくないッスね。