戻る

単なる”ライブラリ”からその先へ・・・

しかし、いざそのライブラリを使用してゲームを作ってみたものの、そのソースコードは非常に複雑で、汚く難解なものでした。
これを解決するには、恐らく、単なる呼び出し型のライブラリでは駄目。
テンプレート・プログラミングか、それともMix-inか・・・でも、それらを用いた所で、本当に綺麗で、真に分かりやすいプログラムが書けるようになるのだろうか・・・?

・・・単なるライブラリでは限界があるかも知れない。

例えDirectX関連の部分が簡略化出来たとしても、今度は”ゲームプログラミングとしての複雑さ”にぶち当たります。
確かに、テンプレート・プログラミングやMix-in、またはそれ以外の手法を用いることにより、ある一定量の成果は出せるかも知れない。
しかし、私はこのライブラリを作る過程で、どんなに仕組みを、設計を極めたとしても、ある一定の所で壁にぶち当たるのではないか。と思いました。

C++は非常に柔軟な言語であるため、それが”C++と言う言語の壁”だとは思いません。
私が思うに”プログラミング言語としての壁”にぶち当たるのではないかと思いました。

例えば、テンプレート・プログラミングにて上手く設計出来た(ように見えた)としましょう。
しかしその実、「Hoge<Hoge2,<Hoge3,Hoge4>>」のように非常に複雑なテンプレートであったり、もしくは継承関係が非常に複雑であったとしたら・・・

それは本当に「シンプルになれた」と言えるのか?


恐らく、ここで「スクリプト言語」と言う道への選択を考える人も居るでしょう。
私も最初はそうでした。しかし途中まで作った所で辞めました。

理由は色々あります。一番大きかった事は、プログラムが思っていたよりも複雑になってしまった事です。

コンパイラコンパイラとしてはflex/bisonを用い、
言語仕様としては殆どCに近い感じで、空白改行が自由、行末をセミコロンで定義する仕様としました。

しかし結果、その定義ファイル(.lや.y)は非常に複雑なものとなってしまいました。
Bisonの定義ファイルはあっという間に300行を超え、定義ファイルの内容自体も非常に複雑で、「何が何だか・・・」と言う状態でした。

かきかけ