今回の収穫物は岩波講座情報処理シリーズ9プログラミング言語、同12算法表現論、同19最適化、同20信号処理とシステム制御、同21パターン認識と図形処理。今日も今日とて読書の日々です。考えてみれば読書強化月間とか言わなくても本読んでるよなぁ普段から。思わないでもないのは内緒です。前回にも言ったとおり、8章からは抽象度の高いプログラムを自分で書く立場に変わります。その手始めとして第8章ではジェネリック関数の書き方を解説しています。出ましたテンプレート。長月的にはもう無くてはならない物です。この章では、テンプレート関数とイテレータを使って総称的な関数を書いていきます。実質各種イテレータの解説がほとんどです。第9章では、ついにクラスが登場します。ここから第12章まででユーザ定義型を定義する為に必要な事を解説していく展開です。今回は構造体ではなく、メンバ関数も含めてクラスを定義します。以前、第四章の所で少し書いたように、構造体と共にヘッダに追い出されていた関数群がメンバ関数になる流れです。この章の内容は普通にC++の本を読んでいたら当然の如く知っているはずの事ですね。要するにカプセル化に気を使えとかそう言った類の事です。第10章では、メモリとデータ構造の詳細に触れていきます。他にはファイルへの入出力も少し扱っています。ここでやっとポインタの登場です。ポインタが絡むと一気にややこしくなるのがC/C++なので、こうやってポインタを後回しにするのは良い方法だと思います。́・ω・`)内容としてはポインタの絡む事をあれこれ、関数ポインタや文字列リテラルなんかにも触れています。メモリにまつわるあれこれも解説しています。記憶域クラスに関することやコンストラクト・デストラクトに関する事なんかが主です。この章もまともに学習していれば問題ない所でしょう。第11章では、抽象データ型を定義します。クローンを作成する事で、抽象度の高いコンテナ等の書き方を学びます。この章のキモはコピー絡みの部分でしょうか。代入演算子やコピーコンストラクタの定義にまつわるトピックスはしっかり理解しましょう。コンテナ型に限らず、値のセマンティクスを持ったクラスの定義に役立つ理論です。第12章では、値のセマンティクスを持ったオブジェクトの定義を学びます。値のセマンティクスを持つと言うのは、言い換えればプリミティブ型と互換の動作をするオブジェクトと言う事です。この章で気をつけるべきは、変換に関する問題と演算子ですね。これらの定義を誤ると構文は正しいのに意味が間違っていると言う見つかりにくいバグの元になります。この辺りの事はしっかり理解しておきましょう。今回読んだ部分は、基本でありながら重要な部分です。文法に関しては割とすぐ覚えられると思いますが、ユーザ定義型を定義する際に気をつけるべき事等、論理的な部分に関しては気が付けば間違っていたと言った事が良く起きる部分です。これらの部分は気をつければコーディングの手間を減らし、誤ると後に手痛いバグとして帰ってくる部分なので、しっかりと理解できるまで何度でも読むべき部分でしょう。́・ω・`)さて、長らく続いた本書のレビューも次で最終回です。次回は13~16章を取り上げます。本書のレビューが終わったらまた何かC++関連書籍のレビューをしたいと思っているのでC++使いの方お楽しみに。読書感想文え~と、ごめんなさい。第2章の後半である第6項はプロセスの実装についての解説です。例としてMINIXのソースコードを挙げています。6.1項から6.4項では、ソースファイルやヘッダファイルを収めたディレクトリの構成を解説しています。重要なヘッダファイルに含まれる定数やマクロに付いても触れています。6.4項はプロセスのデータ構造体の定義が解説されているのでよく読みましょう。6.5項から6.7項は初期化に関しての解説です。6.5項でブートストラップ、6.6項で初期化ルーチンおよびルートプロセス、6.7項で割り込みベクタについて解説しています。ここらはとても重要です。ブートストラップコードがないと何も出来ませんし、少なくともキーボードとクロック割り込みに対応しないと何も出来ません。この辺り重い話題ですが頑張りましょう。6.8項と6.9項はIPCとスケジューリングについて。カーネルの特徴を大きく左右する部分です。マイクロカーネルを採用するのであればIPCには特に注意を払うべきでしょう。6.10項ではハードウェアに依存する部分を解説しています。理屈に関してはそう難解ではありませんが、設計や実装を行うとなると、ハードウェア依存の部分をどれだけ切り離せるかがほかに大きく影響します。ハードウェアを隠蔽できるのであれば他の部分を高レベルで一般化でき、多くのマシンアーキテクチャに対応できるでしょう。6.11項ではカーネルだけでなく一般にも公開されるユーティリティライブラリや、カーネルのみが参照するライブラリ等を解説しています。この項は関数の使い方を解説しているだけなのでさらっと読み下せるでしょう。第2章の後半は特に骨のある内容になっています。