ふたつ目の話は、コンパイラは道具ではないということ(3)

昨日、一昨日の私の日記につけられているコメント、非常に白熱したものになっている。もう既にコメント上で結論めいたものは出ているので、私がここでいまから書いていくこと自体が蛇足っぽくなるのだが、そのへんはご容赦願いたい。


いま一度、基本に立ち返って、プログラムのうち、何がどうなればお金になるのか考えてみよう。言うまでもなくふつうのプロジェクトで最終的に欲しいのは、製品のコードである。典型的な場合、そのコードはマシンコードで書かれており、サウンドやグラフィックリソースが付随しているだろう。そのマシンコードの元はアセンブリ言語か、あるいはC言語だろう。C言語のソースは、製品仕様というプランナー、ゲームならばゲームデザイナーが考えだした仕様書に基づくものと思われる。さらに、そのプランナーの製品仕様というのは、いまはこういうのが流行りだからだとか、従来作品のリメイクでないとクライアントに受け入れてもらえないからだとか市場の論理が介在する。


それぞれの工程はすべて<変換>というひとつのタームでとらえることが出来る。プランナーが仕様書を作成してからは、ほとんどは文字から文字へのトランスレートである。そして言うまでもなく、このなかで、C言語からマシンコードに落とし込むという<変換>を行なうのが、Cコンパイラの担う役割である。変換は通例、抽象度の高いほうから低いほうへ変換していくが、CからJavaへの移植というようなときは、この変換によって必ずしも抽象度は低くはならない。


本当は、最終的な製品がお金になるわけで、この一貫した工程を経て製品をプロデュースして初めてお金になるわけである。ただし、特定のプロジェクトのプログラムのみ、あるいは移植のみを請け負ったりすることがあるように、それぞれの工程における部分的な変換もお金になり得るし、そういう土壌は既に出来ていると考えて良い。(つづく)