yamarkz's blog

紫陽花

プログラミング作法を読んで

プログラミング作法 を所々かいつまんで読んだ。

f:id:katlez:20160411013819j:plain

技術本の中でも、名著の中の名著と言っても過言でもないこの本。

C言語UNIXの開発者のブライアン・カーニハンロブ・パイクがスタンダードなプログラミング、そしてその本質的について書いた本です。
初版は2000年、今から約15年も前に書かれています。

15年前に書かれているにもかかわらず、そこに書かれている内容は現在でも活かされている技術、そして知識、知恵。
技術の流行り廃りの激しいWeb業界ですが、それでも技術の本質的な部分は今も変わらないんだなとこの本を読んで思いました。

読んでいてつい、「うおぉおぉ!」と思わず声が漏れてしまった。。。(電車の中)
それくらい今の自分にとっては大きな気づきと学びをこの本は与えてくれた。
ので、ここで紹介しておきたいです。


この時点で、もし少しでも気になる人は即買って読むことをお勧めします。


これを読んで損することはないと思います。

Amazon プログラミング作法
www.amazon.co.jp

読んでみて

話は1章から9章まであります。C言語Javaでコード解説が入るのである程度コードが書ける中級者から上級者向けです。

もうワンランク上のレベルになりたいエンジニアには目から鱗な内容。内容はプログラミングの本質的な部分をわかりやすく解説してくれています。

本の最後の部分で「Appendix:ルール集」として各章の重要な部分をまとめてあるので、読み終えたらこの部分を眺めるだけでこの本の知恵の塊を再確認できます。

全体的なところ

第1章 スタイル
第2章 アルゴリズムとデータ構造
第3章 設計と実装
第4章 インターフェイス
第5章 デバッグ
第6章 テスト
第7章 性能
第8章 移植性
第9章 記法


1章目からC言語での実装に伴って内容が続きますが、本当に自分が気になる部分だけを読むのでいいと思います。
自分は1章から4章までが最近の学びのテーマだったのでその部分を重点的に読みました。
ただ、活字での解説が主なので長文を読むのが苦手な人は少し大変かもしれません。
元々書かれて、世に出されたのが2000年なので今と比べるともうそれ古くない?って思う部分が読んでいてあるかと思います。
しかし、読んでいて驚くのは実はその部分で。
今と昔を比較してみると、この本で書かれていることが今も変わらず提唱されていることに気づきます。
設計と実装、インターフェイスについて書かれている本はあまり見ないのでこの本で見つけた時はすぐに開いて読みました。

よかったところ

目から鱗でした。特にインターフェイスについて書かれている所は読んでいて「なるほど」が止まりません。
インターフェイスについては何度も先輩に教えを乞うてましたが、この本の5行に知りたかったことの全てがまとめられていました。

インターフェイスは、サービスを提供するコードとそれを利用するコードの間にある詳細に規定された境界であり、
特定のコードがそのユーザーのために何をするのか、関数と恐らくはデータメンバをプログラムの別の部分でどのように利用できるのかを定義する

「Appendix:ルール集」には、

インターフェイス

・実装の詳細を隠蔽しよう
・直感性のある小さなプリミティブセットを選択しよう
・ユーザに内緒で何かをするな
・同じことはどこでも同じように実行しよう
・リソースの開放は割り当てレイヤで
・エラーの検出は低いレベルで、その処理は高いレベルで
・例外は例外的な状況にのみ使用しよう

と、まとめられています。
実際読んでみないと、何のこっちゃという感じですが。
一度読んでみるとこれら全ての意味がわかります。ので読みましょう。

あまりよろしくなかったとこ

特にありません、C言語の祖と呼ばれる人が書いた本なので変にいちゃもんをつけるところもないですw
あえて言うとすれば、夜に読んでしまうと活字すぎて眠くなってしまうということ。
朝の電車や仕事前に30分ぐらいでさらっと読むと、1日いい感じでコーディング出来るかなと思います。

おわりに

まだ全部読んだわけではないのですがお勧めします。プログラマーとして生きて行くと決めた人は一度は読んでおきましょう。
なお、この本自体はもう印刷されてはいないのかな?自分はAmazonマーケットプレイスで良品を買いました。
技術の流行り廃りの早い業界だからこと本質的なところを学ぶべきだなと自分は思います。
また、小手先だけの技術や知識で渡り歩いて行けるほど社会は甘くないなと最近すごく痛感しているので基礎を大事に精進していきたいと思います。