Diary Blog of Dary

temtanが書いた文章

「まなめ 2000」を作るのにだって意外と大変なんだよという話

あの「まなめ 2000」は見た目バカバカしいし、機能もそんなに多いわけじゃないから似たようなの簡単に作れるって思えるかもしれないけど、あれだって作る背景となる知識とか結構必要なのよ。

「まなめ 2000」で使ってる(OSとかの)機能とかだけならそんなに多くなくて、それら「だけ」勉強するなら全然たいしたことないんだけど、アレを作る際に数ある機能から「必要な機能」「必要でない機能」「使った方がより良い機能」を取捨選択してより良く作るにはそれなりに広い知識が必要なのよ。

例えば、GUI を作る際にマルチプロセスにして、CUI の方を呼び出してプロセス管理する方法も考えたんだけど、それだと管理が思ったより難しいのとプロセス間通信のデータのやりとりのタイミングも複雑になるし駄目だと。その結果マルチスレッドを選択した訳なのね。けれでも、マルチスレッド構成の場合、スレッド間通信は排他制御の後でメモリを使ってやりとりするのが一般的だけど、それだと、GUI の制御との排他制御が面倒なのと WindowsGUI プログラミングとの相性が悪いから、プロセス間通信で使われるパイプ接続を使ったのね。その結果今の「まなめ 2000」の GUI 版が出来たのよね。けど、この形にするのに、「プロセス管理」「プロセス間通信(パイプ)」「スレッド管理」「スレッド間通信」「Windows GUI」の全てをそれなりに知っている必要があるし、相互の関連性も知っている必要がある。その上で「スレッド管理」「プロセス間通信(パイプ)」を選択したの。

これはあくまで 1 例なんだけど、まあ、他にもいろいろあるわけで、「まなめ 2000」で使った技術って自分が大学入ってから本格的にプログラミングの勉強を始めてから、最近まで勉強した事が入ってるのね。だから、自分でもそれなりにプログラマとしての自負はあると同時に、けどここまでやってあの程度なんだから、他のソフトウェアを作る人はやっぱすげーと思う訳で。

だから、何が言いたいのかというと、まあ、「プログラミングの世界はそんなに甘く無いよ」と言いたい訳で。まあ、自分に対してもだけど。