プログラミングは暗記だ?!

先日のエントリ(数学(算数)の問題を中学レベルで証明してみる - IT企業で働くおいらのメモ)の

数学は記憶という言葉もあながち間違いでないと私は思います。

を書いてふと、思った。プログラミングも暗記では?

まずは、数学(以下、数学は受験数学を指す)に関して書く。数学に関しては、数学は暗記である、と考える。

この様な参考書がある。
うろ覚えだが、内容としては"解法を暗記することで、数学が出来るようになる"といった感じ。
公式を覚えるだけでは、数学の実力は上がらない。様々な問題を解き、それぞれに適応した解法を覚えることで、試験で問題が解けるようになる。そして、解法を覚える前提として、公式の理解が必要なのでhttp://d.hatena.ne.jp/T_dayo/archive?mode=edit
過去の日記ある。
数学で、友人に質問された時に教えてあげると、「よくそんな解き方思いつくな!」と言われることが少なからずあるが、それの多くの場合は、思いつくのではなくて解き方を知っている場合だ。

と、数学の話が長くなってしまった。

プログラミングに置き換えてみる。公式は、文法にあたる。そして、解法はアルゴリズムや問題の解き方にあたる。

まず、プログラミングをするにあたり文法を知らなければ書けない。当然の事だ。しかし、文法を知っているだけでは問題を解く時に何もすることが出来ないのではないか。

私の例を挙げる。
例えば、二次元配列の初期化。for文の入れ子で初期化をするとしよう。
プログラム初心者からみれば、for文の入れ子で初期化を試みている事自体に驚く(実体験)。for文は知っているのに、驚く。「そんな方法、よく思いつくな・・・」だ。
今となっては、簡単に書くことが出来て読むことも出来るが、初めのうちは、何をしているか分からなかった。
しかし、何度も繰り返し同じようなコードを書いているうちに、すぐに書けるようになった。つまり、解法を覚えた。以降、二次元配列の初期化は得意分野だ(笑)数学でいう、「x軸に接点をもつ二次関数なら、すぐに導けるぜ!判別式=0だろ?」みたいな感じ。

以上のような例は、他のコーディングにも言えると思う。私も体験してきた。そして、解法を覚えてしまえば流用も出来るしスピードアップが可能となる。このような暗記の繰り返しでプログラミング能力が向上すると思う。

プログラミングは暗記だ!

そりゃ、新しい事を実現するためのプログラミングには言えないと思いますがね。

最後に・・・
"数学は暗記だ"というタイトルを著者が付けた理由は、「数学は頭使うから嫌い。世界史は暗記だから覚えるだけでいいから楽。」と言って数学を嫌う読者層を狙ったからだと考える。私が何を言いたいかというと、数学はやっぱり考えるもので、その根底には公式、定理を理解し、解法を多く知っている事が必要であり、プログラミングもそれと同様ではないか、という事。基本的理解と、解法、そして考えることが大切にしていこう。