Entry

今日読んだ本 - 『プログラマーのためのソースコードを読む技術』

2010年06月16日

本屋で見かけたので買ってみた。ある程度プログラミングの経験がある方はサラサラ読めるので,帰りの電車で読み終わりました。久しぶりに,初心者本の良書が出版されたと思います。

プログラマーのためのソースコードを読む技術
高木 信尚
技術評論社
売り上げランキング: 7933

本書は,「ソースコードを読む技術」と題しているけれども,どちらかというと,プログラミング「初心者」から抜け出すための方法論が書かれています。ま,それなりにプログラミングの経験を積んでいる人は,他人が書いたコードをがちがち読んでいるものなので,「ソースコードを読む技術」という時点で初心者向きとも言えるんですけれど。んなもんで,プログラミングをある程度こなしている人にとって,得るものはあまりないかもしれません。Doxygen や GNU Global といった周辺ツールについての説明は,経験者でも役に立つかも。

で,内容なんですけれど,普段からあたしがこのサイトで連呼していることが,ほとんど掲載されています。つまり,「実際に手を動かして『練習』しましょう」ということ。

あたしゃ本書を読んでいてびっくりしたんですけれど,専門教育課程のプログラミング演習や,新人研修のある会社のプログラミング研修では,穴埋め式のプログラミングの問題をやって単位が取れちゃうところがあったりするそうです。はっきり言ってしまうと,こんなことを続けているだけじゃ,一生かかってもプログラムを自分で書くことはできません。大げさに聞こえるかもしれないけれど,そう思う。

このサイトで何度も繰り返している通り,プログラミングはトライ・アンド・エラーを繰り返して,体で覚えるしかないところがあったりします(参照:qune: 身体知としてのプログラミング)。本書は,「ソースコードを読む」ことを通じて,おもちゃプログラムしか作れない初心者から,実践的な製品(有償・無償・商用・非商用を問わず)を作る第一歩を紹介しています。穴埋め問題ばっかやってて,「こんなんやってて本当にプログラミングできるようになるんだろうか?」と疑問を持っている人には,是非おすすめです。

本書が対象にしているプログラミング言語は,C/C++,Java,C#,PHP。スクリプト言語で紹介されているのが PHP なのは,おそらく文法が C/C++ ライクだからだと思います。もっとも,普段,他の言語を使用している向きにとっても,まったく理解できないほど特定の言語に特化した話題はないはず(プログラマを名乗るなら,できれば上記の言語のどれかひとつはマスターしておいた方がいいとは思うが)。特定の言語に特化した話題には,適宜注釈があります。

話は,「心構え」からはじまって,「プログラムの振る舞い」,「データ構造/イディオム/デザインパターン」,「低水準の振る舞い」,「ドキュメンテーションとデバッグ」と続きます。最後は,実際に C の標準関数を読む例が披露されます。C を知らない向きは,最後の章がちとつらいかもしれません。また,少し難を挙げておくと,デザインパターンの章で Singleton の例を挙げるのは,やめた方が良かったんじゃないかと思う。リソース管理の点で,Singleton パターンは外見以上に難しいパターンなので。

少し話は逸れるけれども,プログラマというのは,知識的にはもちろん実践的にもソフトウェアの専門家だと思っています。日本ではどういうわけだか一緒くたにされがちだけれども,そのキャリアは,本来的にプロマネやコンサルと連続するものではない。というのも,プロマネもコンサルも,ソフトウェアの振る舞いや原理について「専門家」とは言えないからです。ぶっちゃけた話,この人たちにとっては,コンピュータの箱の中で,サルや小人が計算していても,最終的な動作さえ正しければ問題なかったりします(※プロマネやコンサルをバカにしているわけではなく,所掌範囲が違うということ)。しかし,私たちプログラマは違います。ソフトウェアの動作原理について,専門家として最終的に責任があるのは,プログラマだと思うわけです。

本書では,プログラマとしてソフトウェア製品を開発するのに,最低限必要な知識と実践が紹介されています。読後,自分に何が足りないか,なんとなくでも感じることができたらしめたものです。プログラミングを始めて,学習曲線の踊り場に立たされていると感じている人は,是非読んでもらいたい。おすすめです。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN