プログラミング学習における暗記と理解の「トレードオフ」について書いたが、これについて補足しておこう。このトレードオフのバランスを取って学習するには、サンプルコードや演習問題を変更・付加したり、自ら問題を考えて実装していく事が良いと思われる。
これは前者は例えば、整数型(intなど)で宣言されているものであれば実数型(double)に変えてみたり、配列で定義されているものを可変長配列に変えてみるといったものである。
後者なら、配列に入っている文言をループで処理していく場合に、初心者向けテキストなら文字列一致で処理しているものを、部分一致で対応できるようにしたり、正規表現を使ってみたりといったように、応用的なお題を考えて実装するというものだ。
いずれにしても、「間違えた問題をそのままもう一度解き直す」よりも良い学習方法であると言える。プログラミング学習に限らず、受験勉強をする学生でも同じなのだが、「同じ問題を解く」という復習を盲信しない方が良い。
なぜなら、世の中には記憶力が良い人が存在するからだ。そうした人は、一度解いて答え合わせをし、間違えた部分を確認する。そして時間を置いて解き直すわけだが、問題や解答を覚えてしまっているから解けてしまうのだ。
ただ、この種の人は考えて解けるようになったわけではないので、もう一度解いて正解したからと言って力がついたとは言えない。同じ問題が出題されれば解けるだろうが、応用力がついたかは判断できない。
こういう人にこそ、自ら作問して解くという方法が求められる。記憶力が優れている一方で考える力が弱い人は、意識的に考えて問題のバリエーションを作ることが有効である。沢山の問題集を買ってきて解く人もいるが、これは沢山の「問題と解答例」を記憶しているだけで、これも応用力がつかない。一部分であっても問題文を変えて解くことがポイントなのである。