本.Tweetストラウストラップのプログラミング入門を読みました。C++作者のストラウストラップ先生(以下、先生)の書いた本です。写真を撮るとこんな感じです。HTCのアンドロイド端末と同じぐらいの幅です。先生の書いた本なので是非読むべきです、と言いたいところですが、この分厚さを万人には勧められません。人生の優先順位は各自それぞれだからです。全部を読めない人のために、優先的に読むべき箇所を決めるために各章の個人的主観を書きます。本の巻末1093ページから始まる用語集は立ち読みでも読む価値があります。8ページなのですぐに読めます。プログラムの別の場所から呼び出せる名前付きのコードの単位。人によっては上記を読んで、(特に関数の説明に)C++固有で意味を限定しすぎていると感じる人もいるかもしれません。いう基本的な用語を(異論はあれど)きちんと定義してくれる本は意外にありません。先生の定義なので、困った時に使えます。Javaのジェネリック型は知っていても、「ジェネリックプログラミングとは?」と聞かれて答えられない人は、本屋に行って用語集だけでも立ち読みするとよいでしょう。ちなみに用語集の中で一番面白いのは「パラダイム」の説明です。どんな説明かは読んでのお楽しみです。短いですし読む価値があります。心に残る一言を抜粋します。プログラムでミスを犯すのがいかに簡単で、それらを修正するのがいかに難しいかを学ぶまでは、ソフトウェア開発手法の真価を見きわめることはできない。第1章あまりにどうでもいい一般論なので読まなくてもいいでしょう。一言でまとめると、ソフトウェア開発は現代社会で重要です。World!のタイトルの章です。C++のコードを見たことのない人には意味があるかもしれませんが、その人にとって本書が意味があるか不明です。「オブジェクト、型、値」のタイトルです。同じような話をパーフェクトJavaで書きました。パーフェクトJavaを執筆前に本書を読んでいなくて良かったです(もし先に読んでしまっていたら、パクリみたいに思えて却って書きづらかったからです)。前章に引き続き、C++の基本的な言語機能の説明が続きます。C++の構文を知らない人や忘れている人は読むと良いでしょう。第5章エラー処理の話です。時間のない人に、本書の中で読むべき章を選べと言われたら、第6章を挙げます。第7章は内容的に続きなので興味があれば読み進めるとよいでしょう。構文解析(パーサ)の説明です。if文やwhile文など言語の基本構文の説明の次がいきなり構文解析です。先生にとっては普通の展開なのでしょう。この章を勧める理由は、内容が難しいからあるいは高度だからではありません。説明が平易だからです。電卓プログラム(ありがちですが)を題材にして、何度も間違いコードを出しながら少しずつ正解に導きます。")"Number:floating-point-literal次のようなコード例を挙げます。left;}}このコードにはバグがあり、ここから更に2回書き直しをします。コードを見て、すぐに間違いに気づく人に本書は不要です。どこに間違いがあるか見当もつかないなら、本書第5章から3章分を読む価値があります。C++の基本に説明が戻ります。変数や関数などの説明です。参照の話など、この章もパーフェクトJavaと説明が被ります。執筆前に読まなくて良かったと思います。プログラミング初学者であれば読んで損はありません。経験者には自明の話が続くかもしれません。第9章クラスの話です。C++を使う予定のない人でも、教養としてC++のクラスの言語機能は知っておいたほうがよいでしょう。本章から心に残る一言を抜粋します。調べているうちに、複雑すぎるために前の単純な解決策よりも悪いものを思い付いてしまう、ということになるかもしれない。これは最善は善の敵(ボルテール)の1つの真意である。第11章ファイル操作まわりの説明です。C++をきちんと勉強したい人は読むべきです。教養としてC++を学んでいる人は必要になるまで読まなくてもいいでしょう。第16章5章を割いてGUIプログラミングの説明です。マイナーなFLTKです。Systemのプログラミングもやりましたし、Windowsプログラミングもしました。GUIプログラミングの経験が自分のプログラミングの学習の助けになったことは否定しません。今プログラミングの勉強を始めた人にGUIプログラミングを勧める気はなるかと問われると迷います。言え、Webアプリのプログラミングしか知らないと大事な何かを欠いたままではないかという懸念があるのも事実です。