見出し画像

なにかを学ぶ上で大切なこと【書評:プリンシプル オブ プログラミング】

プログラミングという作業をたくさんする人は何を哲学としてプログラミングをやっているのか。という自己啓発本ですw

私は、「学ぶ」という行為が大好きです。新しい発見をし、気づき、そして実践してまた気づき、といういわゆる「アハ体験」の快楽がやみつきになり、次の「新しいアハ体験」を求めてさまよう中毒人間のような感じなってしまっています。

当然、「読書」という行為も大好きなのですが、やっぱり当たり外れ大きくて、読み進めるうちに飽きて読まなくなることが多かったりします。そのなかで、まあ自分自身が「プログラミング」という行為が好きな人間というのもあるのですが、この本「プリンシプル オブ プログラミング」は最後まで楽しく読み終えることができました。

この本は、要は「プログラマーが心得ておいて当然の哲学」を集めた本で、プログラミングをやる人がどういう思考、どういう哲学で仕事をやっているか、またやるべきかというのを紹介した本です。

昨今、プログラミング学習が絶賛大流行中なわけですが、やったことない人、つまづく人にとって「コンピュータプログラムは難しい」という偏見があります。
確かにプログラミングは他の様々な趣味や分野に比べて圧倒的に難易度が高い部分が、

「ひとつだけ」

あります。
それは、「正確性」です。例えば、コンピュータプログラムのコードの中に、何の脈絡もなく「a」という文字が紛れているとしましょう。それでそのプログラムは動くかというと、動くこともあります。ただし、それは意図されている動作でないことが多い。

実際、このバグによってAIがクソ弱くて全く売れなかった可哀想なゲームがあります。(気になったらググってみてね)
そしてこの話は「正確性」がプログラミングという行為の中で必要であると感じるには十分なエピソードではあるんですが、それだけでなくて、「アルゴリズムの選定」「処理の流れ」「データの把握」なんかでも「正確性」は求められるわけで、逆に正確でありさえすれば何をやらせようと
「自由」
です。これがプログラミングの面白さ、魅力となっています。

つまり、「プログラミングを学習する」というのは「正確性を担保した上で自由を獲得するにはどうすれば良いか、というハウツーを身をもって学ぶ」と同義なわけで、それを学ぶ上で本書はとてもとても良い参考書となると思います。

このように、何かの分野を学ぶといった場合には、必ず「哲学」も学ぶようにすれば理解が深まります。プログラミングに限らず、初学者として学習をはじめたうちは「なぜそうなるのか」「どうやってするのか」「なにがそうさせるのか」という部分が全くわからない状態でただただ反復練習を積むということになりがちです。ですが、「哲学」を学ぶ上では反復練習は欠かせません。身をもって学んでいくなかででなんとなく「ああ、そういうことなんだな」と腑に落ちていき「哲学」を感じる事ができるようになるからです。

もちろん前提知識としてその分野の哲学を知ることで、習得までの反復回数を減らすことはできます。ただしその場合、「哲学を最も理解した人によって言語化された事を素直に受け止める」ことが大事。この本の著者が「プログラミングの哲学を最も理解した人」かどうかはさておき、少なくともこの本には「プログラミングの哲学」がきちんと紹介されています。

そして、この哲学は「正確性を担保した上で自由を獲得するにはどうすれば良いか」という疑問に対しての回答になり得ます。それは、上っ面のプログラミング自体を学ぶだけ、という行為よりも、実生活で生かすことができる「生きるためのヒント」を得られるような気がします。

プログラミングに限らず、どうせなら深く学びましょう。その分野の「哲学」を知ることができる程度には。

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

サポートいただくと、生活費や取材費などの活動のために有意義に使わせていただきます。よろしくお願いします。