open-mgl-dev (開発バージョン) (0.7.9.80) | 2009-11-02 22:25 |
open-mgl (DirectX9, VC++2008) (0.7.9) | 2009-09-27 20:32 |
roast-dev (開発バージョン) (0.0.1.40-dev) | 2009-11-02 23:09 |
>戻る
しかし、いざそのライブラリを使用してゲームを作ってみたものの、そのソースコードは非常に複雑で、汚く難解なものでした。
これを解決するには、恐らく、単なる呼び出し型のライブラリでは駄目。
テンプレート・プログラミングか、それともMix-inか・・・でも、それらを用いた所で、本当に綺麗で、真に分かりやすいプログラムが書けるようになるのだろうか・・・?
・・・単なるライブラリでは限界があるかも知れない。
例えDirectX関連の部分が簡略化出来たとしても、今度は”ゲームプログラミングとしての複雑さ”にぶち当たります。
確かに、テンプレート・プログラミングやMix-in、またはそれ以外の手法を用いることにより、ある一定量の成果は出せるかも知れない。
しかし、私はこのライブラリを作る過程で、どんなに仕組みを、設計を極めたとしても、ある一定の所で壁にぶち当たるのではないか。と思いました。
C++は非常に柔軟な言語であるため、それが”C++と言う言語の壁”だとは思いません。
私が思うに”プログラミング言語としての壁”にぶち当たるのではないかと思いました。
例えば、テンプレート・プログラミングにて上手く設計出来た(ように見えた)としましょう。
しかしその実、「Hoge<Hoge2,<Hoge3,Hoge4>>」のように非常に複雑なテンプレートであったり、もしくは継承関係が非常に複雑であったとしたら・・・
それは本当に「シンプルになれた」と言えるのか?
恐らく、ここで「スクリプト言語」と言う道への選択を考える人も居るでしょう。
私も最初はそうでした。しかし途中まで作った所で辞めました。
理由は色々あります。一番大きかった事は、プログラムが思っていたよりも複雑になってしまった事です。
コンパイラコンパイラとしてはflex/bisonを用い、
言語仕様としては殆どCに近い感じで、空白改行が自由、行末をセミコロンで定義する仕様としました。
しかし結果、その定義ファイル(.lや.y)は非常に複雑なものとなってしまいました。
Bisonの定義ファイルはあっという間に300行を超え、定義ファイルの内容自体も非常に複雑で、「何が何だか・・・」と言う状態でした。
かきかけ