見出し画像

理解するのは後でいい

昨年から私は機械学習の基本的なアルゴリズムを知ることを目標としてPythonでコードを書き始めました。今までに複数の本を買って少し読み、これだと思った1冊を使って勉強しています。

それで毎度のように思うのがこのことです。いくら丁寧で分かりやすいと評判の本でも、書いてあるコードを見てプログラムが何をしているのか一目で理解できることはほとんどありません。もっと頭のいい人、プログラミングの経験のある人ならすぐ分かるかもしれませんが、私は一度目だとまるで訳が分かりません。

最近のプログラミング言語には高機能で充実したライブラリが用意されているので、お手本のコードを書き写せば少ない行数で驚くほど高度(と初学者が感じるよう)な処理ができてしまいます。その結果を確認しつつも、やはり仕組みがよく分からない、一から書くとしたら到底自分にはできないような感覚が残ります。

しかしそこで終わらせないのが重要だと思います。一度書いたコードが正常に動くことを確かめたら私は入出力の内容や途中の処理に自分なりのアレンジを加えてみて、結果が変わったりエラーになったりするのを見ると時折「ははー、そういうことか」と納得します。かつては本を開いて紙面と睨めっこしたまま時間が過ぎるなんてこともありましたが、それだと使える知識・技術が一向に増えません。雑食系エンジニアとして有名な勝又さんのいう「わかってから始めたい病」のことですね。

理解するのは後でいいからとにかくコードを書いてしまえってことは、思い出してみればプログラミング以前の勉強にも経験していました。

例えば数学の行列の掛け算がまさにそうでした。行列同士の足し算なら要素ごとに一つ一つ足せば良かったのに掛け算だと何であんな不思議なルールなのかと初めて勉強したときには納得できなかったし、それを理解できない自分は無能なのかと思わされもしました。

しかしそれでもいくつかの演習問題を解くしかありません。そして後になって行列がベクトルに作用して別のベクトルを作る「一次変換」を知り、2つの一次変換を合成して作られる一次変換を表す行列がどんなものかと考えたあたりでようやく分かる訳です。それ以降はむしろその積の定義の仕方が当たり前すぎるように思えてきます。

だからまずはそうすることの意味だとか正当性に疑問を持っても言われた通り、指示にある通りにやった方がいいようです。本を読んでいてそのページに書かれたことがあまりよく分からなくても、一旦その不快感を受け入れコードを書き写し、プログラムが正常に動くのを確認してから考えるようにしました。訳が分からない状態で行数が増えてくると決して楽ではありませんが、そういうものだと開き直るようにしています。

この記事が参加している募集

おうち時間を工夫で楽しく

この記事が気に入ったらサポートをしてみませんか?