SSブログ
プログラミング ブログトップ

またまた分厚いプログラミングの本を買った [プログラミング]

先日読み終えた30日でOSを作る本は、700ページもある大作だ。これを読み終えて妙な自信がついた。厚くても最後まで読めるという自信が。実際のところ読んだのは日本語の部分だけで、C言語のソースコードはほとんど読んでいないので、胸を張って読んだとは言えないのだが。

先週、遠方に出張していて、たまたま本屋で見つけた本をAmazonで買った。今度は850ページだ。「ゲームプログラマになる前に覚えておきたい技術」という、一見狭い分野を対象としているが、題材がゲームであって実践的なWindowsプログラミングの本だ。Windowsベースでのプログラミングを知っておくのは、MacやiPhoneプログラミングにも間接的ではあるが役に立つだろうという意図で読んでみることにした。
book15.jpg

「セガの新人教育カリキュラムから生まれたゲームプログラミング解説書」という帯のふれこみにもそそられた。ペンネームを使い会社に内緒で書いたものではなく、会社のリソース(設備や著作物)を公認で使っているというところに内容の充実ぶりが想定できる。読んで損はない本と見て買った。
しかし、当面は本業が超忙しく、読めるのは当分先になりそうだ。30日でOSを作る本のように2年も寝かしておかないつもりだが。

OS自作入門を読み終わる [プログラミング]

os_nyumon0.jpg

今月の初めから読み始めていた「30日でできるOS自作入門」を読み終えた。30日どころか14日間で読んでしまった。しかし途中3日ほど休んでいたので実質11日だ。700ページもあるこの本をこんな短期間に読めるはずがない。実はこんな読み方をしていた。

・最初の1週間
何をしたいのか説明を見た後、興味ある部分だけソースコードを読み、実行してみた。1日に2日分のペースで読んだ。

・最後の数日
ソースコードは読まず、説明だけ読んで実行しておしまい。1日に10日分も読んだ日もある。

結局後半は読み飛ばしたことになる。というのも半分ほど読んでみて、この先得るものが少ないように思ったからだ。理由をいくつか挙げてみると、

・管理人のイメージするOSとは、かなり異なる
しっかりしたファイルシステムがあり、これを基本にコマンドやウインドウシステムがあってしかるべきだが、このOSにはそれがない。ファイルは読めても書けない。OSらしいと言える部分は全体の3分の1程度だろうか。ウインドウシステムの構築に説明の大半を費やしている。

・説明の仕方が貧弱で理解しづらい
一から構築して30日間で完成するという展開になっており、日々少しずつ機能を追加して行く。説明と言えば追加・修正をしたC言語のソースコードと、わずかな説明文があるだけだ。解説方法としてはきわめて安易なやり方で、これが延々と続く。どうやら筆者には「ソースコードを読めばすべてわかる」「下手な説明文などいらない」という考えが根底にあるようだ。この考えに管理人は賛成できない。図表などを駆使して視覚的に分かりやすくする工夫をすべきだ。その上で、具体例としてソースコードを示すべきだ。図表もゼロではないが、きわめて少なく、ないに等しい。

しかし、最後まで読んだ。というのも、

・読むのを中断すると再開が難しい
日々の内容は昨日からの差分形式で書かれている。つまり「昨日の分にこれだけ追加して、こんなことができるようになりました。」的に書いてある。したがって途中から読むことはできないし、中断して以前の状態を忘れてしまうと、内容について行くのが辛くなる。したがって、途中であきらめるか最後まで一気に読むか、二つに一つだ。


以上、いろいろ文句ばかり書いたが、やはり最後まで読めたのは面白かったからだ。だんだんモノができて行く様子は、見ていて楽しい。「おっ!ウインドウが動かせるようになったぞ!」などと言いながら手を動かすのはやはり面白い。エミューレータ上で動作できるので、非常に手軽だ。ファイルもよく整理されていて、
 make run
で動かせるので簡単だ。ついつい続きを読みたくなるような中毒性もあった。読み飛ばしとはいえ700ページも読んだのだから、それなりの達成感もある。「良書」ではないが「面白い本」かもしれない。初版から3年近く経つが、今だに書店で見かけるのも理由が分かる。

OS自作入門を読み始めた [プログラミング]

2年ほど前に買ってお蔵入りになっていた本「30日でできるOS自作入門」を読み始めた。買った当初、1〜2日分読んでそのままになっていたのだが、急に思いついて最初から読み始めてみた。
os_nyumon0.jpg
フロッピーで起動しウインドウ上でマルチタスク可能なOSを一から作ろうということで、日々少しずつ機能追加して行き30日後には完成するという内容だ。添付のCDに全ソースコードが1日ごとに分割されているので、読みながら試すことができる。
試す場合には、
 ・アセンブリ言語やC言語で書かれたOSのソースコードをコンパイル
 ・フロッピーのイメージを作成しフロッピーに書き込む
 ・PCをフロッピーで起動する
という手順になる。アクセスの遅いフロッピーを使うのでかなりの手間になるが、幸いPC/ATの簡易エミュレータがついている。これを使えばWindows上で作成したOSを試すことができる。上記の手順とエミュレータの起動までを、コマンドプロンプトの1コマンドで実行できるので、試すのは非常に簡単だ。

例によって、VMWare Fusion上のWindows XP proでこれを動かしてみた。
os_nyumon1.jpg
Mac上の仮想マシンの上で、さらにエミュレータを動かしている。親ガメの背中の上に子ガメとさらに孫ガメまで乗っている状態だ。実に奇妙で興味深い。

肝心の本の方だが、全体の1/3ほど読み進んだ。今のところはOSというよりウインドウシステム構築の内容が多い。マウスやキーボード入力を取り込んでみたり、ウインドウもどきの描画してみたり、画面にレイヤーをもうけてマウスポインタやウインドウを動かしてみたりを行っている。
これからマルチタスク、ファイルシステム、APIなど本格的なものも出でくるようなので期待したい。

Amazonが速い! [プログラミング]

以前、Amazonの納期が遅いとさんざん文句を言ったが、今度ばかりは速かった。

昨日の夕方(17時ちょっと前)にネットで申し込みをしたら、本日の16時ころに納品された。今までなら早くても2日後、夕方申し込みだと3日後ぐらいになるのが常だったのに。たまたまなのか、改善されたのか不明だ。これだけ早いと、有料の「お急ぎ便」など不要だ。たぶん、たまたまなのだろう。

で、買った本というのはこれだ。
book12.jpg
Macのプログラミング本だ。実は以前から漠然とMacを欲していたが、iPhoneを使うようになって決定的になった。本気でWindowsからMacへ乗換えを考えている。近々買うつもりだ。
Macを購入したらiPhoneのプログラミングも試してみたい。そこでこれらの本を購入したわけだ。本体もないのに本だけ買ってもしょうがないが、Amazonの書評に「早めに買わないとなくなるかも」などとあおるような文面があったので買ってしまった。しかし、巻末を見たらすでに3刷目ではないか。売れ筋なので、なくなる(=廃刊)ことはありそうもない。またしても書評に踊らされてしまった。どうせ買うのだからよいが、書評を真に受けてしまったことを後悔している。


アルゴリズムの本を買う [プログラミング]

ちょっと前に目をつけていた本だが、別の本屋で平積みになっていたので(かなり目立つ扱いをしていたので)、思わず買った。

「思考をプログラミングする」というフレーズも気に入ったし、言語がJavaだったので決めた。直感で良書と判断したからだ。最近のITやプログラミング関係の本は、雑誌と同じように寿命が短い。良書といえども売れないとすぐに店頭から姿を消す。廃刊にでもならなければAmazonあたりで手に入るのだが、手にして見られるうちに買っておこうと思った。
最近、買う割にはほとんど読んでいない。読まないうちに、売れずに姿を消すか、売れて改版が出るか、どちらかのような気もする。

オブジェクト指向の入門書を買って読んだ [プログラミング]

ひょんなことから、オブジェクト指向に関する入門書でベストと評されている本があることを知り、適度な厚さだったので買って読んでみた。

「いちばんやさしい」とのことだが、そうだろうか。ある程度の経験を持った著者だろうが、JavaとJavaScriptを混用しているところや、たとえ話が延々と丸ごと一章も続くのがちょっと気になる。60~70%読んでみたが、あまり役に立ちそうにない。時間つぶしと思えば腹も立たないが。


JAVA本のBUGを見つけた [プログラミング]

先日買った本「いまどきのプログラム言語の作り方」を、地道に読んでいる。読み進んでいくうちにソースコードの把握が怪しくなってきたので、打ち込んで動かしてみたりもしている。JAVAプログラミングの統合環境Eclipseを使っているが、なかなかすごい。打ち込んでいるはじから構文チェックをしてくれている。
で、本の通りに打ち込んでみたのだが、構文エラーが消えない。よくよく調べてみるとどうやらBUGのようだ。

リスト3-18の6行目は、正しくは、
   case TokenType.INT:
だ。
原文では、このcaseの定数式がINTだけだったが、可視範囲内にない。クラス名のTokenTypeが必要なはずだ。修正して何とか本の通りに動作した。

後で思い出したのだが、この本にはサポートページがある。残念ながら正誤表にはこの事実が掲載されていない。ページ内で公開されているソースリストのファイルを見ると、先ほどのようになっていた。やはり本が間違いであった。
というわけで、本のBUGを見つけ一人悦に入っている。


プログラミング ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。