プログラミング学習に写経(お手本をそのまま書き写す)は有効か?
「最初は本などのお手本コードを書き写して動かすのが基本ていうけど効率が悪くないか?」
プログラミング学習法として「写経」という方法があります。お手本コードを書き写して動かすのをひたすら繰り返すというものです。元々は仏教の経典を書き写すことを意味する言葉なんですが、書き写す行為が同じなためプログラミング学習法としても使われています。
wada.fmというポッドキャストでPerlプログラマーとして有名なゆーすけべーさんがプログラミングの学習方法について話していました。
「ただ写経するんじゃなくて、目的を持って何かを作る中で他人が書いたコードを読み、変更や機能追加をするのが良い」
とのことでした。
ということで今回は「プログラミング学習法としての写経」について考えてみます。
全くの初心者は写経するしかない
写経が有効かどうかはともかく、全くの初心者の場合、はじめのうちは写経するしかありません。
何も知らないのでとりあえず本やWebサイトに書かれているコードを打ち込んで実行結果を確認することから全てが始まります。
すると、段々コードが理解できるようになってきます。ところが…、
写経するだけでは身に付かない?
よくあるのが、「サンプル動かしたんだけど、その後何すればいいかわからない」という話です。
こうなってしまうのは目的がないからです。
サンプルを動かせばサンプルの動作は理解できます。ですが、目的がないと、そこで止まってしまいます。
いわゆる勉強のための勉強になってしまうんです。
これが冒頭で紹介したゆーすけべーさんの意見へと繋がります。
「目的を持って何かを作る中で他人が書いたコードを読み、変更や機能追加をする」ことで、サンプルの先へと進めるのです。
目的を持つと学習対象への臨場感が増す
目的がないと、本やWebサイトを読んでいても、他人事のようで臨場感がわかず、なかなか頭に入りません。
それが、「こういうソフトウェアを作りたい!そのための方法を学ぼう」という目的を持って読むと、ぜんぜん違ってきます。
学校の授業でも、好きな教科は頭に入るけど、嫌いな教科は全然入ってこないものでしたよね。
つまりは、重要だと思ってないことは学べないということです。
- 好きな教科 = 興味がある = 自分にとって重要
- 嫌いな教科 = 興味がない = 重要ではない
プログラミング学習も同じです。
- 作りたいソフトウェアを作るための技術 = 重要
目的があると、それを達成するために作業に没頭できます。その結果、本気の学習ができる、そういうものなんだと思います。