ゆとりーなの日記

日記的な事を書いて行くと思はれる

ページビュー40000越え記念?「私のC++歴」

私がC++を初めてもうすぐ1年半になろうとしています。プログラミング自体はHSPでゲーム作ろうと思ったのが6年くらい前ですので実は私の中ではC++の歴史はかなり浅いんですね。
何故こんな話から入ったのかといとですね、私もうすぐ二十になってしまうので、これまでの人生(私が人であるかという議論は取り敢えず置いておきます)を振り返ってみてもいいのではないかと思ったからですね。何せ日記ですから。
C++を初めて触れたのがちょうど去年の冬。当時高校では東方が物凄く流行っていてですね、友人の殆どが東方東方言っていたわけです。勿論言っていなかった人もいましたが、その手の人は大抵今でいうところのリア充なので、東方なんて言わないのです。で、東方位私でも作れるんじゃねという謎の妄想が入り、C++DirectX弾幕シューティングを作る作業を始めたわけです。その頃の私のメインランゲージはHSPであり、しかも最後の触れてから大分経っていたので大丈夫かと思ったのと、今更メインランゲージを変えて何とかなるのかという思いもありました。よりにもよってクソエグイことで有名なC++に行くとか無謀ではという感じもしてました。唯、何時までもHSPに甘えてはいられないなという思いがあったのと、当時HSPを物凄くバカにしてC言語を崇拝する友人がいたので彼を黙らせるにはC++やるしかないということになったのですかね。実はよく覚えてないです。このあたりは。
どういうわけか、私の通っていた高校は春休みなるものが2カ月もあったので勉強する時間は沢山ありました。最初に買ったのが「独習C」。C++をやる前にC言語をやっといた方が良いという噂につられたのですね。正確にはこの本はC++を始める1年前に買ったので引っ張り出して読みなおしたという方が正しいですね。当時思ったのは、HSPGUI作るのが当たり前だった私にとって、コマンドプロンプト上で動くアプリ作っても何も楽しくないなということです。C言語を1年間ほったらかしてた原因がここにあります。
そこで「独習C」では、C言語の文法を抑えるに留めて、「猫でもわかるゲームプログラミング」を読むことにしました。やっぱり作りたいものを最初から作っていく方が効率がいいと思ったんですね。ここらへんからwin32APIに浸かっていくことになり、私が標準Cライブラリに弱い一因となっております。
win32APIだけでは実はHSPで出来た演出が出来ないと分かると即座にDirectXに移行しました。DirectXの本を買ったのですが、流石にC++の知識なしではとても読めたものじゃないので「独習C++」を購入。ここでも文法を抑えただけなのでSTL等はさっぱりでした。
で、とりあえず汚いながらもなんとか弾幕シューティングなるものを書くことが出来ました。この頃はコードは汚かったものの、ある意味生産性は高くて、1週間で1ステージ分を書き上げることに何故か成功しました。
余りのコードに汚さに見かねて、C++の本をもっと読もうということになって、読んだのがCプラーの必読書として名高い「Effective C++」。ここ辺りから私の目的がゲーム製作からC++そのものに変わってきました。なんか型設計とか見てるとそっちの方が楽しくなってきたんですね。
STLもなんか凄いと聞いて「Effective STL」を読んだ辺りから、私の中のNIF症候群が消えました。ゲーム作る時に使うコンテナが自作からSTLになったのがこの辺り。
そしてBoostが凄いと聞けば「Boost C++ Libraries(赤本)」を買って読んで、この辺りから殆どのものを自作せずにBoostに頼るようになりました。今自分で書いているのといえば、ゲームを作るのになかなかいいラップライブラリがないwin32DirectX周りだけです。その結果アルゴリズムの自作等に物凄い弱い人が出来てしまいました。どちらかというと既存の優れたライブラリを如何に上手く使うかに最適化されてきてる気がします。
新規格である0xに萌え萌えしつつ、デュアルブートに成功したのでLinuxの方のゲームライブラリの製作を開始。クライアントコードを変えずにWindowsVC++2010とLinuxg++どちらでも使える的なサムシングを目指すことになったわけです。それに伴ってSDLOpenGLにも手を出し始めました。
ここまでが多分私の中のC++の履歴。闇の軍団と呼ばれる方々はどの様な経緯でC++に染まっていかれたのか、気になるところです。
今回は私が今迄読んだC/C++絡みの本の履歴を兼ねてリンクを貼っとこうとか思ったので貼っておきます。新版が出たのはそっちを置いときました。
http://booklog.jp/users/nagoya313