読書感想文

Posts filed under 読書感想文

Exceptional C++ 1~4章

Filed in C/C++, prog, , 読書感想文

 いやもういい加減囲碁関連のトピック書けっつーんですよね。ぽまいこのblogの閲覧者の8割が囲碁関連のページから来てるの知らんのかと小一時k(ry
 ああもう、解ってるんですよ? だからなんか書かなきゃナーとか思ってるんですよ? でもね、今月読書強化月間だし読みたい本がコンピュータ関連ばっかりだしで仕方ないんですよ。
 と、一通り言い訳した所で読書感想書籍紹介文へ。今回から2回に分けて紹介予定の本はハーブ・サッター著、浜田真理訳、浜田光之監修、 Exceptional C++ 47のクイズ形式によるプログラム問題と解法です。
 本書はクイズと言う形式にする事で、実際のプログラミング現場で求められる経験の学習を意図した物です。普通の学習書がボトムアップの発想であるのに対し、本書はトップダウンの発想で書かれています。その点で言えば以前紹介した Accelerated C++ と同じです。しかし二者には大きな違いがあります。はっきり言って Exceptional C++ は初心者さんにオススメできません。理由は追々述べます。
 さて、本書はクイズ形式を取っている訳ですが、第一章の項目一、詰まり一問目から飛ばしてます。
 第一章はジェネリックスプログラミングとSTLについての問題ですが、項目一のイテレータにまつわる間違いを探す問題からして割といやらしい問題です。長月は一応なんとか気付きましたが、e.insert( --e.end(), TodaysDate() ); これ、どこが何故間違いなのか解りますか? おそらく長月は問題として出されてなかったら気付きませんでしたし、怪しいと思っても Why? の部分が解るまで考える事は無かったでしょう。もうしょっぱなから難易度高いです。項目二で早速 char_traits いじってるのもうわーと思いました。
 この辺りが初心者さんにオススメできない理由です。文法や機能の理解であっぷあっぷしてる段階の人達には難しすぎるんです。
 では気を取り直して第2章へ進みましょう。第2章では例外に対して安全なコーディングについての問題です。
 C++で例外を駆使すると、何気に色々な所に潜在的な危険を孕む事になります。何気なく書いたコンストラクタは例外を投げてもリソースリークしない? 何気なく書いた関数はちゃんと例外を呼び出し元に投げる? 例外安全で例外中立なコードを書いたつもりで副作用を残してない? 第2章ではそう言った視点でコードを見つめなおす為の問題が出題されます。
 例外安全なコンストラクタと例外安全な swap メンバ関数で実装する例外安全な代入演算子なんかのテクニックは必見です。
 第3章では、クラス設計と継承についての章です。この章に出て来る問題は色々な書籍や掲示板やMLで見かけた事のある様な物でしょう。しかし、解決の為のテクニックに注目すべき物があります、理由や意味をC++で素直に表現する方法が書かれています。
 値のセマンティクスを持つクラスの型変換や演算子のオーバーロード、関数のオーバーロード・オーバーライドとそのどちらでもなく外部スコープの同シグネチャを隠す関数、public 継承と private 継承の違いとそれらの意味、Pimpl イディオムの効用と注意点、実装継承とコンポジション、本章ではこれらの問題を扱います。
 第4章では、依存性にまつわる問題を扱います。ヘッダのインクルードや Pimpl イディオム再び、前方宣言の駆使、継承からコンポジションへそして Pimpl の後ろ側へ、Pimpl イディオムを詳しく、Pimpl の最適化、等の問題が用意されています。
 ヘッダのインクルードに関しては目から鱗でした。考えてみれば目に見えない依存性を生み出している事にとても驚いた物です。また、Pimpl イディオムの有効性を軽視していた事も教えられました。お前は本当にデザパタを勉強してるのかと小一時間……orz
 本書は難易度が高いです。いや、難易度が高いのではなく、高級な話題が多いです。低レベル機能の実装でも高レベルの視点から考えます。実際、問題も難易度の高い物が多く、解説もいくらかの習熟と経験を必要としています。やはり初心者の方においそれとオススメ出来る物ではありません。しかし、だからこそ有益な情報が多かったと思います。
 中級以上だと自負する方、本書を読んで一歩先へ行ってみませんか?

Accelerated C++ 13~16章

Filed in C/C++, prog, , 読書感想文

 どもども、何気にまにあわなさげでひやひやな長月です。
 今日はアンドリュー・コーニグ、バーバラ・E・ムー著、Accelerated C++ の13~16章をお送りします。これで Accelerated C++ に関しては最終回となります。
 今回の一つ目は第13章、第13章では、ついにOOPの華である継承と動的バインド、所謂ポリモルフィズムを扱います。
 本章も基本的には普通にC++の勉強をしてきた人なら問題ないかと思います。退屈なクラスの説明を読んできた人でも、本章で語られる基礎は抑えているでしょう。ただ、13.4項のハンドルクラスに関するトピックは割と重要です。結構知っている人は多いはずですが、意外とこういう設計通りに実装出来てない (或いは設計の時点で出来てない) 事が多いようです。
 第14章では、メモリ管理の半自動化を行います。前章で製作したハンドルクラスを一般化して、所謂参照カウント式スマートポインタに仕立て上げます。
 それなりにC++を使った事があるなら、ポインタデータメンバを持ったクラスを書いた事がある人は多いでしょう。大抵の場合 "リソースの獲得は初期化" イディオムに従ってコンストラクタでインスタンスを得、デストラクタで解放すると思います。しかし、前章から本章までで扱ったようなハンドルクラスとかホルダクラスとか呼ばれるクラスを書く時に困った事はないですか? 長月はあります。どうしてもこう言う関数が欲しい、でも包みたいクラスの書き換えは出来ない。そんな時の一般的な解決法を知りたいなら14.4.1項を熟読しましょう。
 第15章では、第1~2章や第5章等で登場した文字列の入力を受けて、入力された文字列に装飾を施して出力するプログラムが再登場します。本章ではこのプログラムをデザインしなおす事で、ポリモルフィズムの実際への適用と、設計の基本に触れています。
 基本だけあって、既にC++をそれなりに学んだ方や他の言語での経験が十分な方には退屈かもしれません。そういう方が求めているのはもっと技術的な事でしょう。しかし、基本だけあって大切な内容なので、入門書として本書を読んでいる方は要熟読です。また、これぐらいの事は知ってると言う方も、復習の意味でそれなりに気をつけた方が良いかと思います。
 最後の章である第16章では訓戒を述べています。たった3ページの小さな章ですが、ここに書かれている事を心に留めておきましょう。
 さて、四回に渡ってレビューしてきた本書はここで終わりです。本書は入門書でありながら中級、もしかすると上級のC++使いにも有益な本です。C++をかじってみた物の教科書が悪くて食傷した方、なんとなく使ってきたけどもうちょっときちんと使っていきたい方、もう腕には自信があるけど基本を振り返りたい方、新人教育でお悩みの方はこの機に一読してみては如何でしょうか?
 <<8~12章 目次

Accelerated C++ 8~12章

Filed in C/C++, prog, , 読書感想文

 今日も今日とて読書の日々です。考えてみれば読書強化月間とか言わなくても本読んでるよなぁ普段から。とか思わないでもないのは内緒です。
 さて、今日の一冊はお馴染みアンドリュー・コーニグ、バーバラ・E・ムー著、Accelerated C++ 効率的なプログラミングのための新しい定跡 8~12章です。
 前回にも言ったとおり、8章からは抽象度の高いプログラムを自分で書く立場に変わります。その手始めとして第8章ではジェネリック関数の書き方を解説しています。
 ついに出ましたテンプレート。長月的にはもう無くてはならない物です。テンプレート大好き。
 この章では、テンプレート関数とイテレータを使って総称的な関数を書いていきます。実質各種イテレータの解説がほとんどです。
 第9章では、ついにクラスが登場します。ここから第12章まででユーザ定義型を定義する為に必要な事を解説していく展開です。
 今までにも実質的に同じ物である構造体は出てきていましたが、メンバ関数などは定義していない所謂POD (Plain Old Data) でした。今回は構造体ではなく、メンバ関数も含めてクラスを定義します。以前、第四章の所で少し書いたように、構造体と共にヘッダに追い出されていた関数群がメンバ関数になる流れです。
 この章の内容は普通にC++の本を読んでいたら当然の如く知っているはずの事ですね。要するにカプセル化に気を使えとかそう言った類の事です。
 第10章では、メモリとデータ構造の詳細に触れていきます。他にはファイルへの入出力も少し扱っています。
 ここでやっとポインタの登場です。ポインタが絡むと一気にややこしくなるのがC/C++なので、こうやってポインタを後回しにするのは良い方法だと思います。C言語ではそうもいきませんが(´・ω・`)
 内容としてはポインタの絡む事をあれこれ、関数ポインタや文字列リテラルなんかにも触れています。また、メモリにまつわるあれこれも解説しています。記憶域クラスに関することやコンストラクト・デストラクトに関する事なんかが主です。
 この章もまともに学習していれば問題ない所でしょう。
 第11章では、抽象データ型を定義します。具体的には vector のクローンを作成する事で、抽象度の高いコンテナ等の書き方を学びます。
 この章のキモはコピー絡みの部分でしょうか。代入演算子やコピーコンストラクタの定義にまつわるトピックスはしっかり理解しましょう。コンテナ型に限らず、値のセマンティクスを持ったクラスの定義に役立つ理論です。
 第12章では、値のセマンティクスを持ったオブジェクトの定義を学びます。値のセマンティクスを持つと言うのは、言い換えればプリミティブ型と互換の動作をするオブジェクトと言う事です。
 この章で気をつけるべきは、変換に関する問題と演算子ですね。これらの定義を誤ると構文は正しいのに意味が間違っていると言う見つかりにくいバグの元になります。この辺りの事はしっかり理解しておきましょう。
 今回読んだ部分は、基本でありながら重要な部分です。文法に関しては割とすぐ覚えられると思いますが、ユーザ定義型を定義する際に気をつけるべき事等、論理的な部分に関しては気が付けば間違っていたと言った事が良く起きる部分です。これらの部分は気をつければコーディングの手間を減らし、誤ると後に手痛いバグとして帰ってくる部分なので、しっかりと理解できるまで何度でも読むべき部分でしょう。
 とか言いつつ長月もそうしなければならない程度のヘボプログラマなんですが(´・ω・`)
 さて、長らく続いた本書のレビューも次で最終回です。次回は13~16章を取り上げます。本書のレビューが終わったらまた何かC++関連書籍のレビューをしたいと思っているのでC++使いの方お楽しみに。では今回はここまで、さようならノシ
 <<6~7章 目次 13~16章>>

オペレーティングシステム【第二版】 第2章 (後編)

Filed in prog, , 読書感想文

 え~と、ごめんなさい。「今日は豪華三本立て」と言いつつ「今日」に間に合いませんでしたorz
 さて、あおいろ日記豪華三本立て読書感想文フェア最後の一本はここ数日ですっかりお馴染み、A.S.タネンバウム、A.S.ウッドハル著、オペレーティングシステム 設計と理論およびMINIXによる実装【第二版】 第2章の後編です。
 第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章の後半は特に骨のある内容になっています。正直読んでて眠いです。重いです。しんどいです。気合が要ります。でもそれだけに重要で飛ばせない部分が多いので気合を入れて読みましょう。
 いい加減囲碁関連のエントリ書かないとお客さん減るなと思いつつ今回はここまで。ではまた。

Accelerated C++ 6~7章

Filed in C/C++, prog, , 読書感想文

 あおいろ日記豪華三本立て読書感想文フェア第二弾は、アンドリュー・コーニグ、バーバラ・E・ムー著、小林健一郎訳、 Accelerated C++ 効率的なプログラミングのための新しい定跡 6~7章です。
 今回はC++を便利に使う事に注力した前半部分の締めくくりです。8章以降は使うだけではなく、機能を提供する際に特に役立つ機能の解説へと移っていきます。それでも使う事に主眼が置かれている事には変わりませんが。
 まず第6章では、第5章までに学んで来たシーケンシャルコンテナに対して、STLに用意されているアルゴリズムを適用する事を解説しています。後、記憶域クラス指定子が初登場します。意外な事にここまで出てきてなかったんですね。
 この章は、言ってしまえばいくつかのアルゴリズム系関数の使い方を見ていくだけです。しかし、課題を工夫する事でイテレータアダプタやリバースイテレータ等、必要な事は大体網羅しています。
 私見ですが、コンテナやイテレータの扱いには慣れている人でも、意外とイテレータアダプタを知らなかったりする事が多いようです (使う必要が無い事も多いのは確かですが……)。心当たりがある人は本章で慣れておくと良いでしょう。
 第7章では、連想コンテナを扱います。連想コンテナの例題としてはお馴染みのワードカウントや対応表、英文の自動生成の製作を通して主に map の解説を行っています。
 例題のプログラムを見ていると、なにやら懐かしい気持ちになります。大抵の人は上記の様なプログラムで map の勉強をしたのではないでしょうか?
 すでに連想コンテナをバリバリ使ってる人は昔を懐かしみながら復習するのも良いでしょう。
 さて、第7章までで抽象度の高いライブラリを使う事に関しては学べました。次章からは自分が抽象度の高いプログラムを書くにはどうすべきかに注力して展開していきます。しかしOOPらしくなるのは13章まで待たなければならないのがにくいですね。
 ここまでは入門者さんにオススメの部分でした。今までの内容にも初~中級者が学ぶべき事は色々ありましたが、ある程度C++かじった人には次章以降を強くオススメしたいと思います。次章以降は今後二回に分けて書いていきたいと思います。
 <<0~5章 目次 8~12章>>

岩波講座 情報科学 22 人工知能

Filed in prog, , 読書感想文

 本当は Accelerated C++ の6~10章を予定してたんですが、予想外の掘り出し物を見つけたので。そっちのけで買ってきた方を読んでしまいました。とは言え、一応6~7章は読んでるのでそれも後で書きます。さらに、仕事の休み時間にOS【第2版】も読んでるのでそれも。今日は豪華三本立てです(・∀・)
 その分一つ一つの分量少ないですが(´・ω・`)
 さて、あおいろ日記読書感想文フェア第一弾は白井良明、辻井潤一著、岩波講座 情報科学 22 人工知能 第1~2章です。
 第1章はご多分に漏れず本書の概要を述べています。人工知能という研究分野の成り立ちや応用分野をさらりと流した後、本書の構成を説明しています。
 この中で一つの分野として自然言語処理が挙げられています。長月が興味を持っている分野がこれです。本当はどちらかと言うと人工知能よりも人工無能に興味があるんですが(´・ω・`)
 第2章は問題の表現について。
 人工知能は極論すれば解法のない問題を解くためのプログラムです。これと言って適したアルゴリズムの無い問題を、いかに推測し、制限し、探索するかが主題となります。なので問題解決の方法を定める際に、問題自体の形式や構造が重要になります。
 本章では扱う問題を、解が曖昧でない、問題解決に探索を行う物と制限した上で、よく用いられる論理的な構造の理論を解説します。
 内容としては問題の整理の仕方と所謂データ構造の理論になります。
 問題を整理する方法の解説では、記法の正規化、操作の定義、制限条件の定義等に触れています。
 また、データ構造に関しては、目的は探索なので、主に扱われるデータ構造はマルチウェイなツリー構造やグラフ構造です。
 この辺りはアルゴリズム論やデータ構造に詳しい人は読み飛ばしても大丈夫でしょう。まださわりといった感触です。本格的になるのはもっと後の様で、少し物足りない感じでした。
 なんと言うか、やはり研究者の先生方が書かれた本なので、全体としてお堅い感じがしますね。読む人によっては眠いかもしれません。題材が題材なので仕方ないのかもしれませんが(´・ω・`)
 ということで、情報科学に興味があって睡眠薬を必要としている方は一読してみては如何でしょうか?(ぉ

Accelerated C++ 0~5章

Filed in C/C++, prog, , 読書感想文

 はい、早くも浮気です。OS【第二版】は読むのに気合が要るので疲れます。今日はさらっと流したかったので楽に読める本を。
 今日読んだのはアンドリュー・コーニグ、バーバラ・E・ムー著、小林健一郎訳、Accelerated C++ 効率的なプログラミングのための新しい定跡 0~5章です。全然軽くねぇ……orz
 この本は、C++とSTLを便利に使ってしまおうと言う所から始まる入門書です。文法や規則の説明は必要になってから、とりあえず使ってみようよと言うスタンスで書かれています。以前書いたエントリで長月が言っていたスタンスですね。事実この方法は良いと思いました。
 さて、この本は大まかに0~7章までの前半と8~10章の後半に分かれています。今回は前半の中でも0~5章について書きます。
 まず第0章はC++事始めとしてお決まりの hello, world! から始まります。単純な hello, world! にも実はこれだけの物が詰まってるんだよ? と言った風情で書かれています。この辺りは C/C++ 未経験者以外は読み飛ばしても大丈夫です。
 第1章では、早速 iostream を用いた入出力と string を用いた値の保存を行います。さらに、string のメンバ関数を使って、入力文字列に合わせて自動的にサイズを調整したフレームを表示したりもします。
 コンストラクタやメンバ関数を巧みに使っていて、初見の時になるほどと思わされた覚えがあります。C++経験者でも意外と知らない string の使い方かもしれません。
 第2章では、第1章で書いたプログラムを拡張します。第1章で書いたプログラムでは、フレームとして出力される文字列がそれぞれ string 型の変数としてハードコードされていました。それをフレキシブルな形に書き直すのが第2章の目的です。
 ここまで来てやっとループです。まあここまで来てと言っても20ページ無いんですが。
 残念なのが、コードが余り技巧的ではなくなって見ごたえが無い事です。必要な事に必要なだけ、そして解りやすく書かれているエレガントなコードなんですが、第1章で見たようなああなるほどと言った感動はありませんでした。
 続いて第3章では、たくさんのデータを扱うと言う題の通り、コンテナが登場します。
 これまでに学んで来た入出力やループを使って、生徒の宿題やテストの点数を入力し、学期の成績を計算するプログラムを作り、それを平均点の計算からメディアンを求めるプログラムに拡張すると言う段階を踏んで vector の使い方に繋いでいます。
 ここでのプログラムも何か引っかかる物があります。それが解決されるのが次章です。
 第4章に入ってやっと関数が登場します。前述した違和感の正体がこれです。既にプログラミングを嗜んでいる人間にとっては、長い main 関数が引っかかる訳です。
 第4章では、前章で作成したプログラムを、関数を用いた物に書き直していきます。さらに、複数の生徒の成績を扱う為に、データを構造体によって関連付けたり、ちらっと例外も顔を出します。それと構造体や構造体を利用する関数をヘッダファイルに追い出したりもしてますね。後にクラスの解説へと繋がりそうです (と言うか繋がります)。
 この章では sort や max 等のアルゴリズム系関数も出てきます。長月の私見ですが、どうも長月を含めた中途半端なレベルのC++使いは、STLのコンテナは良く知っていてもアルゴリズムを良く知らない様に思えます。本書を読んでいると、このやり方ならそういう偏りは出来にくいかもなあと思います。
 本日の締め、第5章ではイテレータが解説されます。前章のプログラムに合否判定の機能を加える為に、vector の巡回をすると言った感じです。
 イテレータは vector に特有の物ではありません。本章では、vector の部分削除や挿入に伴うコピーに起因する速度低下を不満として、list への差し替えを行います。
 さらに、イテレータで範囲指定する類の関数も使い始めます。
 なんと言うか、やっとSTLの本領が見えてきたと言った所でしょうか。C++はちょっと触っている人なんかはここら辺り方楽しくなってくるのではないでしょうか。
 上記のレビューにもちょこちょこと書かれていますが、本書は入門書で有りながら、経験者にも有益な本でもあります。文法や機能等に着目した従来の本と違い、問題解決に着目した作りであるため、意外な所で今までもやもやしていた物が解決したりします。
 自分はC++を使っているしそれなりに使えているからと思っている方も一度読んでみては?
 目次 6~7章>>

オペレーティングシステム【第二版】 第2章 (前編)

Filed in prog, , 読書感想文

 え~と、タネンバウム本分厚いです。重いです。立ち読みには向きません。買った理由がちょっぴり解りました。
 さて、今日読んだのは、A.S.タネンバウム、A.S.ウッドハル著、オペレーティングシステム 設計と理論およびMINIXによる実装【第二版】の第2章前半です。ええ、前半です。2章全部じゃないです。2章だけで122ページ有りますから、流石にさらりとは読めません(´・ω・`) 3章に至っては180ページ超えてるありさまですから……orz
 そんな訳で今回は2章 (前) です。
 2章のテーマはプロセスです。2章ではプロセスの概念に始まって、複数のプログラムを制御する為の理論とMINIXでの設計、MINIXを例にした実装を解説しています。
 今回はMINIXでの設計の概要までを読んで思いつくまま書き殴ってみます。
 まず最初はプロセスと言う概念についての解説です。本書ではプロセスモデルの解説を通して概念の説明をしています。そしてプロセスに求められる物、必要な機能の実現等の理論の解説が続きます。
 プロセスと言うのは実行中のプログラムを指す言葉です。実際には千差万別であるプログラムを、統一的な方法で管理できるように抽象化した概念をプロセスと言います。
 この項で解説されている基本的な概念をしっかりと理解しておかないと後に混乱する事になります。プログラムとプロセスを混同するとスケジューリング辺りでパニックに陥るでしょう。
 第二項はプロセス間通信の解説です。
 マルチプログラミング環境に於いては、複数のプロセス間での通信が頻繁に行われます。第二項ではそのプロセス間に於ける通信方法や、それにまつわる問題、その解決法等を解説しています。
 プロセスは一つ一つ独立した物です。しかし完全に独立してしまうと、そのプログラムに必要な動作を全て実装しなければなりません。また、権限の問題で使用できない機能を利用しなければならない場合もあります。ですから、完全に独立させるよりは、必要な機能を持った別のプロセスに処理を委譲できる様にすべきなのです。そこで必要になるのがプロセス間通信であり、通信に際しての決まり事と方法なのです。
 第三項は典型的なIPC問題とその解決についてです。
 IPCとは InterProcess Communication の略で、プロセス間通信の事です。IPC問題と言うのは、デッドロックや同期化、競合状態に関する典型的でプリミティブな事例の事です。これを解決する事で、実際の利用時に起きる複雑な状態にも対応できると言う、不具合の最小構成の事だと考えれば良いでしょう。
 第三項では、IPC問題の中でも特にありふれた問題を三つ取り上げて、その問題点と解決方法を解説しています。
 第四項で解説されるのはスケジューラ、いよいよ大物登場です。
 これまでの解説で棚上げにされてきた、具体的なプロセスのスイッチングやその順位の決定についての理論、与える資源 (時間や機器や機能) の調整について等、プロセス管理の根本であり煩雑で難解な部分の解説を行っています。
 単に実行を開始された順で同じ量の資源を提供するのであれば複雑な事は有りません。しかし、処理には優先順位があり、実現すべき処理に必要な資源の量もそれぞれです。また、プロセスによってはスリープする事もあり、その間に何もしないのは資源の浪費になります。そう言った無駄を省き、必要な所に資源を回す為にもスケジューリングや資源の割り振りは慎重に行わなければなりません。
 第四項ではこう言った問題に対する今までに行われてきた提案を解説しています。
 第五項では、これまでに解説されてきた理論を元に、MINIXを題材とした設計の一例を解説しています。
 内部の構成、プロセス管理、プロセス間通信、スケジューリング等について、MINIXではどの様な理由でどの様な選択をしたのかが解説されています。ここで解説されているMINIXと言うOSのプロセスに関する思想を理解しておかないと、この後に続く具体的な解説で混乱します。
 ここまででも十分に厄介な第2章ですが、これまでの内容を理解していないと続く第6項で大変混乱します。
 プロセスはOSの根幹をなす概念です。他のほとんどの部分から依存される部分ですから、要点だけはしっかりと掴んでおきましょう。
 #(´ー`)oO(当blogのお客さんでこのエントリとかOS【第二版】に興味ある人っているのかしら? 興味ある人はコメントキボンヌ

オペレーティングシステム【第二版】 第1章

Filed in prog, , 読書感想文

 のっけからごっつい本です。なんかこれが二冊あれば人を殴り殺すのも可能なんじゃないかって感じがします。と言うか、囲碁blogのアンテナから来る人が多い事を承知の上でこの本を選ぶ辺り、長月は捻くれ過ぎなんだなぁと他人事のように思うのでした。
 今日から読み始める本は、アンドリュー.S.タネンバウム、アルバート.S.ウッドハル著、千輝順子訳、今泉貴史監修、オペレーティングシステム 設計と理論およびMINIXによる実装【第二版】です。
 ページ数1200ページ越え、四割がソースコードとは言え、量も内容も大物です。正直長月なんでこんな物買ったんでしょうか? おかげさまで自作ソースコードを収めたディレクトリにFDとかHDDから起動するためのブートストラップコードとか転がってますよ'`,、(´∀`)'`,、
 さて、肝心の内容ですが、今回は第一章についてです。
 第一章はオペレーティングシステム概論と言うタイトルの通り、OSとは何であるかや、OSの歴史等が書かれています。また、歴史に沿って、現代のモダンなOSならばまず搭載している機能や概念等も説明されています。
 OSと言う概念やOSの歴史等は基本的に読み物です。技術的な面で見れば余り役立ちません。しかし、現在から見ればチープなハードウェアとソフトウェアしかなかった時代を思うと何とはなしに感慨深い物も有ります。テープメディアや8インチFDや5インチFDの時代を知る (当時年齢一桁) 長月はこの辺りを読むと、セピア色どころか思い出すのさえ苦労する時代の思い出が蘇ります。当時は父のひざの上で訳も解らずBasicのコードを眺めていた物です。
 さらに進んでMINIXの歴史を通り過ぎると、コンピュータ技術の進化を辿るように機能や構造、概念の説明が続きます。
 まずは概念の説明がなされ、プロセスやファイルシステム、メモリ管理やコマンドインタプリタ、システムコール等が解説され、OSの一般的な構造へと続きます。
 構造の解説では、モノリシックカーネルやレイヤ構造を持ったシステム、仮想マシン、クライアント/サーバモデル、所謂マイクロカーネルまで基本的な構造を割合丁寧に、且つ急ぎ足で説明しています。
 ここまでの内容は技術的な観点で見ると余り役に立たないものが多いでしょう。第一章は全体を俯瞰した物なので抽象度が高いのです。しかし、考え方を知らなければ設計や実相の段階で無用な悩みを抱えることになるので、こういった概念も無視できない物では有ります。
 本エントリを見てこの本を買おうと言う人は余り居ないと思いますが、この本を読むのであれば、まず第一章をしっかり読む事をオススメします。

おいしいコーヒーのいれ方1読了

Filed in , 読書感想文

 しんご及びふぇるお兄様オススメのおいコーを試しに買ってみたので読んでみた。
 とりあえず薄い、内容じゃなくて本の厚みが薄い。さっくり読めた。時間の無い人にはありがたい。
 レビュアのオススメポイントがあまあまの恋愛模様だったわけですが、これに関してはちと微妙な所です。悪くは無いですが良くも無い感じでした。主人公二人の気持ちは割とわかり易い感じで良いと思いましたが、所々で気に食わない表現がありました。どうも中盤に多かった感じです。
 章立て毎に評価するなら、第一部より第二部の方が面白く感じました。第一部は割とどうでもいい事を聞かされた感があります。かといって第二部が手放しで面白いかというとそうでもないです。主人公男に関して言えば第二部の主人公男はあまり良い印象ないです。
 全体的に見ると、文体とかセンスがおとなしくゆったりした感じで長月の好みに近いです。でもボール半分外れてます。長月は割と馬鹿でアップテンポで軽い物が好きです。同時にゆったりと静かな物も好きなんですが、おいコー1に関してはちと方向が違いました。長月の好きな感じを一言で言うなら曇天です。晴れほど明るくない、でも雲間から陽は射してる、そんな感じが好きです。でもおいコー1の暗い部分はなんか暗いというより重いな感じでいやんでした。
 という訳でなんか評価低そうな事書いてますが、総合的に見て評価は低くないです。悪くは無いです。少し面白いぐらいに感じます。続き次第で楽しめるかもしれないので、隙を見て少しずつ揃えていく事にします。


Warning: sprintf() [function.sprintf]: Too few arguments in /home/users/2/lolipop.jp-dp07042166/web/wordpress/wp-includes/widgets.php on line 1042
Oenology Post Formats
Click to view/hide

Warning: sprintf() [function.sprintf]: Too few arguments in /home/users/2/lolipop.jp-dp07042166/web/wordpress/wp-includes/widgets.php on line 1042
Posts Calendar
Click to view/hide
2017年12月
« 12月    
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Warning: sprintf() [function.sprintf]: Too few arguments in /home/users/2/lolipop.jp-dp07042166/web/wordpress/wp-includes/widgets.php on line 1042
アーカイブ
Click to view/hide

Warning: sprintf() [function.sprintf]: Too few arguments in /home/users/2/lolipop.jp-dp07042166/web/wordpress/wp-includes/widgets.php on line 1042
最近の投稿
Click to view/hide