評価p | 書名 | 著者 | 出版社 |
★★★★★ | 決定版はじめてのC++ | 塚越一雄 | 技術評論社 |
プログラム言語というものを学ぶには、試行錯誤を何度も繰り返すものです。冗長にならない程度にそれが再現されている書物というのはなかなか見かけない。 本書は絶妙のバランスでくどさとおおざっぱさの混在がある。 Cの前提をおかずに、C++で済むところだけを学べばこんなにC++とはすっきりしているものかと思いました。 試行錯誤の過程にあたるソースコードが逐一書いてあるので、ほとんどのコードがコンパイル通らなかったり、無限ループに入ったりします。本当に記憶に残すべきところは少ないので一度読んで、どことどこが一里塚になってるのか見てから読めばよりいい本なんでしょう。以下に大那が区切りだと思うポイントを示します。 [第一部] 最初の18章だと1−10章でどの言語でも抑えるべき「トークン」とか「文」とか「ブロック」、「制御構造」が説明され、11章に標準入力のエラーハンドリングがある。 ここまではウォーミングアップと思います。 続いてCで独特のヌル終端文字列の18章にいたるまでに、関数や配列、ポインタの説明など必要なことが説明。Cのおさらいでもある。 [第二部] 19−25章はオブジェクト指向の基本的な項目をC++で書くとこうなるということがきっちり書いてある。プレインなCを知ってる人はここから読むのでもいい。 (一個だけ、文句! 先生は普通「オーバーライド(上書き)」というところを「オーバーロード」といい、みんなが「オーバーロード」とよんでいるものを「多重定義」と呼んでいる。これは違うぞ。ただの言葉の話ですが。) 26章演算子のオーバーロードはC++でできて、Javaなどにできないので面白いからちゃんと勉強する。 [第三部] コンパイルやリンク、ファイルの入出力、画面端末操作のライブラリが27章以降の応用編に追いやられているのが面白いです。26章までのサンプルはどれも小さくて分割コンパイルなど不要だし、なるほど基本は26章までに書かれている。 ただ、塚越先生の本はどれも最後にはなにか結構なアプリを組み上げないと終らない。なんかそういうポリシーがあるみたい。それで27章以降がある。 640pageに及ぶ大作ですが、サンプルが簡単でどんどん読み進められます。全てのサンプルをオリジナルな試行錯誤含めて打ち直しましたが休日3日位で追従可能。Cでザセツした人、Javaは分かったという人にうってつけかと思います。 (ただし、実際の技術者にはプレインなCの知識(mallocとか・・・)も必要だと思います。ハーバートシルトさんの独習C/C+あたりをもやってみるべきかと思います。) Windowsの人がこの本やる場合はちょっと注意です。最後の応用編で会計仕訳入力ソフトなんて結構なものを作る演習があるんですが、開発環境でUnixのncursesを前提にしてるんです。 うーん端末コーディングはフルGUIより分かりやすいと思いますが、Winには適当なのがない。せっかく面白そうなのに練習できませんよね。 いくつか解決策を考えました。 1・Linuxの環境を手に入れる。 (僕はこれでやりました。古いマシンを一つLINUX環境にしてます。) 2・Cygwinでやる。(Windows上で走るUnixのエミュレーション環境です。) 3・BerryLinuxとかKnoppixとかのCD一枚の LINUXを使う。(たくさんあるんでみんな探してみよう。 ただし、CD起動なんで超遅い。) 4・1−11章で勉強したことを元にWebサーバを入れ、C++で ローカルCGIを書いて実装する。 (WebサーバはApacheが有名ですが、 AN−HTTPDなんてのがお手軽です。) これなら、Winでもできる。・・・HTMLなどの知識も必要になりますが。 5・Windowsに移植されているGUIを実装するスクリプト(Tkとか)で GUIを実装する。C++はロジック実装に徹する。 6・いっそVC++とかで実装する。 (VisualCの知識が必要になりますが・・) ちなみに1−3は塚越さんの本の通りに(たまにcursesライブラリの動きが違ったりしますが)練習できます。 ですが、4−6は自分の選択したインターフェイスに従う咀嚼が必要。(そういうのがより勉強になるんだと思うんですが) 塚越さんwindowsをとことん嫌ってるんじゃなかろうか? いい本で本当に読みやすいのに、最後の一番面白いところをWinで楽しめない。 逆に無理やりncursesなんて変なライブラリ使うためにstdio.hなんて古い標準入出力ライブラリを説明しなおしている。(C++ならiostreamを使おうよ。) ここはもう一工夫してくれるともっと息の長い本になるのに。・・・いやころころ変わるwinのGUIにすると本の寿命が縮まるのか? とにかくC++をてっとりばやく使ってみたい人にお勧め。分厚いけど分かりやすい。 |