メルマガバックナンバー 第3回
プログラミングの極意とは?
もし私の前にゴルゴ13が現れて
「お前の知っているプログラミングの極意を言え・・・」
とアサルトライフル(M16)を突きつけてきたら、どう答えるか?
先日電車に乗りながら、そんな妄想をしました。
ここまで読んでドン引きした方は正常です。
前置きが長くなりましたが、私の考える極意とはズバリ
技術の根っこを知る事
です。
根っことは何か?
それは「プログラムの下にあるもの」を指します。
一つ例を挙げれば、OSがそうです。
プログラムはOSの「上」で動いています。
他にも、ハードウェア・メモリ・サーバー・コンパイラ・プロトコルなど
プログラムを動かす土台となっている技術は、全て「根っこ」だと言えます。
もっと踏み込むと、アルゴリズムや数学、さらには歴史も該当するでしょう。
私の考える「プログラミングの極意」は
こういった根っこの技術を常に大切にする
これに尽きます。
なぜ極意なのか?
では、なぜ根っこが大事なのか?
それは本質を正しく把握できるからです。
皆さんは、こんなバグに遭遇した経験はないでしょうか?
・さんざん悩んだ挙句、OSを再起動したら直った
・少し設定を変えたら、すんなり動いた
・プログラムのバグかと思ったら、サーバーの問題だった
・ハードウェアの仕様書を見たら、あっさり原因が分かった
・その問題を解決する定番アルゴリズムを、後で知った
これらの事例は皆、OSやハードの仕組み・論理的思考といった「技術の根っこ」を理解していれば、すぐに原因を推測できるはずです。
こんな事で休日出勤したり、もやもやした気分でプライベートを過ごすのは虚しいですよね。。。ええ(経験談
経験が浅い内は、よく「文法の書き方」や「命令の名前」に注意が行きます。
しかし実のところ、断言しますが、そこまで重要じゃありません。
いざという時に助けてくれるのは、やっぱり根っこの知識です。
基礎を終えた後には、ぜひ「根っこ」に目を向けて見るのをオススメします。
特に、最近のプログラミング環境は「高機能」で便利なのですが
その一方でブラックボックス化し過ぎて、根っこが見えにくいと感じます。
だからこそ、積極的に根っこを探りましょう。
色々なモノが見えてきますよ。
極意を知る推薦図書
そんなわけで、根っこを知る為の書籍を紹介します。
(推薦図書館のメルマガらしく)
痛快!コンピュータ学
気軽に読める一冊。広く浅く色々なトピックに触れています。
CPUの動作原理・歴史・インターネットなどなど、概論として最適です。
初級者向け。
プログラムはなぜ動くのか 知っておきたいプログラムの基礎知識
定番のベストセラーです。CPUやOSの動作がよく分かります。
学生の方はもちろん、職業プログラマの人でも曖昧な知識を整理するのに役に立ちます。
姉妹書の「~はなぜ~なのか?」シリーズもオススメです。初~中級者向け。
プログラマの数学
アルゴリズムと数学的思考を文系向けに解説してくれます。
「問題を単純化してプログラムに落とし込む」際のポイントが分かります。
初~中級者向け。
珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造
論理的思考の醍醐味をビシビシ感じられる良書です。
著者の脳内を追いながら、アルゴリズムの設計過程が分かります。
中~上級者向け。
本日はここまでです。読んでいただきありがとうございました。
プログラミング推薦図書館 江畑