短期記憶『写経』を試してみた
お疲れ様です。Y研究員です。先日は、本を閉じて記憶を頼りに思い出しながら『写経』する方法を紹介しました。今回は実際にやってみたので、気づきを共有します。
構文が頭に入る
プログラム全体の流れを掴んだら、次は細部の書き方を把握していきます。まずif文、次はswitch文などです。ここでif文が書けないとプログラムは完成しません。なので頻出の構文は何回かやるうちに頭に入るでしょう。
プログラムの意味を理解する
覚えようとしている時に意味が分からないと頭に入らないので、自然と不明点を潰すことが出来ます。その際、見落としていた点が分かるので、プログラムを深く読むことになります。漫然と右から左に書き写すだけではここまで集中して読めないはずです。
細部に集中できる
ざっと書いたあとは、記憶が追いつかなかった所を見直します。その際、覚えきれなかった細部が見えてくるようになります。変数の細かい使い方や処理の位置がズレたりするので、見返す時に修正します。もう一回閉じて細部を詰めてもいいですね。
最後までデバッグをやり切る
これは『写経』一般に言えることですが、試しに動かして期待通りの結果が出ないこともあります。まあ良いかと次に移って一冊を終わらせるのもやり方ですが、粘ってデバッグするほうが効果は出ます。むしろ、このデバッグ作業の方に意味が有るので、時間的制約が無い限りは頑張ったほうが良いでしょう。きっと細かいところで書き間違いをしているので、注意深く読み返せば、間違いが見つかるはずです。
難しく書けるC言語
さて古典的C言語の教科書K&Rでポインターの章をやってますが、なかなか複雑な書き方をサンプルで出してきました。"(*++argv)[0]"ですが、[]の演算子のほうが優先されるので()をつけてオプションの1文字目[0]を取得する、という説明でした。解説ではもっと複雑に出来るけど、実際にはコレくらいにしておけ、ということでした。
ここまで言われると、C言語はどこまで複雑に書けるか気になります。そういえばC言語をわざと難しく書くコンテストがあったので、少しだけ紹介して今日は締めたいと思います。
1984年に2人のプログラマーが酷いプログラムを修正していたところ、「こんな想像を超える脳を破壊するようなプログラムを書いた奴はわざとやったに違いない!」と意気投合したそうです。そしてその数分後には、意図的に難読化したプログラムの募集を開始したそうです。。。
世の中には変なことを思いつく人もいるんですね。自分はもうしばらく『写経』の研究を続けていきたいと思います。
ではまた!
無料のプログラミングクラブCoderDojoを運営するにあたり寄付を受け付けています。お金は会場費・Wifiの費用・教科書に使用します。