PCP: C++ Preprocessor
|
PCP: C++ Preprocessorは、PHPを用いてCおよびC++の前処理を行うツールである。PHPは本来HTMLを前処理するためのプログラミング言語であるが、その性質上、HTMLに限らず他のテキストを前処理することも可能である。 PCP: C++ PreprocessorはPHPのこの性質に着目し、CまたはC++の前処理に用いることにした。
前処理に用いる言語にPHPを選んだのは、PHPが本来前処理を目的とした言語であるということ以外にも理由がある。 スクリプト言語にありがちな過度の省略記法はPHPにはなく、可読性が高いことは評価できる。 また、PHPの文法はC由来のものであり、CやC++のプログラマであればすぐに習得できると考えられる。 クラスの記述はJavaの影響を強く受けているが、CやC++のプログラマにとってハードルが高いものではない。
CおよびC++には、その言語仕様としてプリプロセッサが備わっている。 しかし、CやC++のプリプロセッサはテキストの置換を目的としたものであり、静的に複雑なデータ構造を生成するような用途に用いるのは困難または不可能である。 PHPはフルセットの言語処理系であり、PHPを用いたPCPで前処理を行うことで理論上静的に解決可能なあらゆることに対応することができるようになる。
たとえば、CやC++のプリプロセッサでは整列済みの配列を作ることは不可能だが、PCPを使えば簡単に実現できる。 また、バイナリファイルを取りこんで集成体の初期化子を生成することもPCPであれば簡単である。 組込みシステムでは、こうした利点を活かし、複雑なデータ構造をROM上に配置することもできるであろう。
同じようなコードを繰り返し記述しなければならないようなケースでも、PCPで前処理することでコーディングの労力を削減することが可能になる。 テストコードを自動生成させることも、ちょっと工夫すれば実現可能になるだろう。
CまたはC++で書いた関数を、C#などの.NET言語から呼び出す場合にはDllImportを記述することになるが、PCPで前処理することで自動生成できるようになる。 Javaやその他の言語とバイナリデータを送受信するような場合でも、マーシャラ/アンマーシャラを自動生成することもできるはずである。
このように、PCPは多くの可能性を秘めている。
>> クイックスタート