10日目「メモリ管理よりも、むしろ重ね合わせ処理の方が難しくないですか?」

 いよいよやってきました、10日目。思い返せばもう1/3も終わったんですねー。いやー、それで、あとどのくらい残ってるんですか? えっ? あと2/3もあるんですか? そうですか…。まぁ死なない程度に頑張りたいと思います(汗)。
 それで、早速ですが、今日はマウスの重ね合わせ処理だったんですが、これ、とてつもなく難しいと感じたのは俺だけでしょうか? いや昨日のメモリ管理よりも、断然こっちの方が難易度が高かった気がします。要するにバックの画像とマウスの画像をそれぞれシートとして管理し、一番下のやつから順番に描画していくことで重ね合わせを実現しているわけだったんですが、これが細かいところがやたらとややこしいんです。なんかサンプルプログラムに出てくる関数の引数もやけに多いですし、透明色(つまり下の画像と色を合わせる色)の処理もなんかいまいち理解できないし。
 本書の解説も、この辺りになってくるとソースコードが多くなってきて、詳細な解説が結構省かれてたりするんです。まぁ著者としても「ソースコード見ればだいたいは分かるよね?」ということでしょうし、こっちとしても大抵はソースコードを見ることでなんとか頑張れるんですが、しかし、やっぱり難易度が高い
 確かに、だいたいの大まかなアルゴリズムは理解できるんです。それについては本当に詳しく解説されています。でも、そのアルゴリズムソースコードにした、そのソースコードを解読するのがなかなか難しいんですよね。構造体がいつくか出てきて、その構造体の配列やらポインタやらで、なんかもう、C言語もすげーややこしいんです。まぁ、C言語ってこんなややこしい言語だったのかよ、とあらためて思うヘタレプログラマな俺も俺なんですが…(だからポインタで挫折したって言ったじゃん。そう言ったじゃん(涙目))。本書はやはりポイントポイントで結構難しい内容があるなぁと思いました。
 それで、このままではヤバイので、一度ちゃんとしたまとめ(復習)を行った方がいいなと思いました。要するに、ちゃんと理解できてない部分だけ徹底的に補強すべきなんですよ。つまり、本書を1日1章ずつ、30日読み進めていっても、おそらくOSを作れるようにはなれない。というより、全部を理解できている状態にはなれない(少なくとも俺は)。それで、じゃあ何が必要かというと、1日1章+これまで学んだ章の復習が必要なわけですよ。中学校で先生から習いませんでしたか?「なによりも復習が大事である」と。そうなんですよ。学問において大事なことは復習なんですよ。負けないことや投げ出さないことや逃げ出さないことじゃないんですよ。信じることでもないんですよ。学問に真心はいらんのですよ。兄弟で活躍するのはマリオとルイージだけでいいんですよ*1。いやでも待てよ、待てよ。投げ出さないことは結構必要かもしれないぞ。うんうん。よし、これだけ認定!(何の?)
 というわけで、明日から少し真心を入れかえてお送りすることにします(といってもBlogの内容はほとんど変わらないと思いますが…)。
 乞うご期待!