ライブラリはスクリプトで書き下せ!!!

そう、今まで、私はC/C++でライブラリを組んできたが、今思うにライブラリはスクリプトで書き下したほうがとても効率的だと思うようになってきた。
何故そのように思ったか、それはgoogle:OpenSSL]の[google:Perlによるスクリプト群を見てからだ。
md5やsha256等のプログラムを様々な環境(例えばアセンブラ間の文法の差異)に合わせたように出力するスクリプトがあるのだ。
これには感心した。スクリプトであらかじめ書いておけば ソースコード自体を多種多様な環境にあわせるように出力するのも容易だし、C++コンパイラの文法の問題のようなコンパイラに依存した厄介な問題ともおさらばできるのだ。*1


しかしながらデメリットもある。
デバッグがしにくいという点。
各環境用の出力したコードのテスト面倒という点。
そして、スクリプトで記述する出力アルゴリズム自体に欠陥があると思いもしないバグコードを出力するスクリプトを書いてしまうかもしれないという点である。*2


だが、このような他のスクリプトに依存するような面倒な事をしないためにC言語ではプリプロセッサという機構を取り入れたのではないかとも感じるのだが、C++のような複雑なコンパイラ間の文法事情を考えると私はどう考えてもC++でまともなライブラリを製作するよりは*3スクリプトC言語のコードを出力したほうが良いと感じるのだ。
C言語ならば普通のコンパイラであれば文法の差異によってコンパイルが出来ないといったような面倒な事が非常に起きにくくなるというメリットもある。
もちろんスクリプトで出力するライブラリのインターフェイスは統一しなくてはならないが、このメリットさえあればライブラリアン冥利に尽きるので私は提案した次第である。

*1:私の日記でもMinGWのC++の文法問題を取り上げている

*2:しかしながら、ライブラリやビジネスロジックを書き下す事に精通しているならばその手のバグを出さないように出力アルゴリズムを設計しスクリプトを書き下すのは容易であると感じる。

*3:まともなライブラリとは、各コンパイラ間の文法事情も考慮したり、インターフェースを統一したり等、ライブラリ内部のビジネスロジック部とは無関係の場所もぬかりなく作るという事である。