Portable C Compiler
Portable C Compiler (略して pcc) はベル研究所のスティーヴン・カーティス・ジョンソンが1970年代に書いたC言語コンパイラである[1]。異なるアーキテクチャ用のコードを出力することが容易なコンパイラの先駆けであり、1980年代初期には多くのCコンパイラがpccをもとにしていた[2]。Version 7 Unixにおいて、デニス・リッチーのコンパイラであるccと並行して添付され、ccとpccが同時に使えるようになったのがpccの初出である。その後、1990年の4.3BSD-Renoに含まれるなど、4.4BSDでGNU Cコンパイラに取って代わられるまで、長く標準コンパイラとして君臨していた。
pccの成功の鍵は移植性と診断能力にある。
- ソースファイルの大部分がマシン非依存である。
- 文法違反に強く、不正なプログラムを受け付けない。lintはもともとpccの一部だった。
- pass1の時点でも最適化する。
こうした特徴を持つコンパイラは当時としては斬新で、たとえばデニス・リッチーによる最初のCコンパイラはPDP-11に強く依存していた。
なお、pccはAlan Snyderによる別のportable C compilerからアイディアを取り入れているが、Snyderのものは遅く複雑で、実装上の問題もあった。
現在(2014年12月10日)
編集近年ではAnders MagnussonがC99対応を目指して開発を続けており、2007年9月にはNetBSDのpkgsrcとOpenBSDのソースツリーに導入された[3]。どちらもまだ標準コンパイラとして利用しているわけではないが、GCCより軽量でメンテナンスしやすく、BSDライセンスであることから、関心が高まっている[4]。
利用者の観点からGCCと比較すると、以下の大きな違いがある。これは両者の目標とするものが異なるためである。
- pcc自体が小さく、ビルドしやすい。移植も容易である。
- pcc自体の動作が高速である。
- 出力されるコードが大きく、遅い。GCCは各種最適化に優れている。
2011年4月1日、PCC version 1.0がついにリリースされた。BSD FundのプログラムマネジャーであるMichael Dexterは、プロジェクトへの寄付者に向けて、こう語っている。
「 | I am pleased to announce that the Portable C Compiler version 1.0 was released on April 1st, 2011 and is not an April Fools joke! (Portable C Compiler version 1.0が2011年4月1日にリリースされたことをアナウンスいたします。これはエイプリルフールではありません!) | 」 |
2014年12月10日、PCC version 1.1.0がリリースされた。
関連項目
編集参考文献
編集- Johnson, S.C. (1978). "A portable compiler: theory and practice". Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages. Tucson, Arizona. pp. 97-104. Online reprint at ACM.
- Ritchie, Dennis M. (1993). "The development of the C language". The second ACM SIGPLAN conference on History of programming languages. Cambridge, Massachusetts. pp. 201-208. Online reprint.
- Snyder, A. (1975). "A Portable Compiler for the Language C". Master’s Thesis. M.I.T., Cambridge, Mass. Online reprint.
- Johnson, S.C. (1981). "A Tour Through the Portable C Compiler". Unix Programmer's Manual, 7th edition, Volume 2, ISBN 0-03-061743-X. Online version. (mirror)