Portable C Compiler (pcc) について
Portable C Compiler(pcc)は、
ベル研究所のスティーブン・カーティス・ジョンソンが1970年代に開発した
C言語コンパイラです。その最大の特徴は、異なるアーキテクチャへの移植性の高さであり、1980年代初期には多くのC
コンパイラがpccをベースにしていました。
歴史
pccは、
Version 7 Unixにおいて、デニス・リッチーによるcc
コンパイラと並行して提供され、初めて広く利用されるようになりました。その後、4.3BSD-Renoにも含まれるなど、長く標準
コンパイラとして採用されていましたが、4.4BSDでGNU C
コンパイラに取って代わられることになりました。
pccの成功要因
pccが成功した要因は、主に以下の2点にあります。
高い移植性: ソースコードの大部分がマシンに依存しない設計となっている。
強力な診断能力: 文法違反を厳しくチェックし、不正なプログラムを受け付けない。また、lintが元々pccの一部であった。
さらに、pccはコンパイルの初期段階(pass1)から最適化を行うという、当時としては斬新な特徴を持っていました。これは、デニス・リッチーによる最初のC
コンパイラが
PDP-11に強く依存していたこととは対照的です。
なお、pccはアラン・スナイダーによる別のポータブルC
コンパイラからアイデアを得ていますが、スナイダーの
コンパイラは遅く、複雑で、実装上の問題も抱えていました。
近年の動向
近年では、アンダース・マグヌッソンが
C99対応を目指してpccの開発を続けており、2007年9月には
NetBSDのpkgsrcと
OpenBSDのソースツリーに導入されました。まだ標準
コンパイラとして利用されているわけではありませんが、GCCと比較して軽量でメンテナンスが容易であり、BSDライセンスであることから、注目を集めています。
GCCとの比較
pccとGCCの主な違いは、両者が目指す目標が異なる点にあります。pccは
コンパイラ自体の小ささ、ビルドの容易さ、移植性、高速な動作を重視しています。一方で、GCCは出力されるコードの最適化に優れています。
具体的には、以下のような違いがあります。
pcc: コンパイラ自体が小さく、ビルドや移植が容易で高速に動作する。
GCC: 出力されるコードが高度に最適化され、より高速に実行される。
リリース情報
2011年4月1日にはpcc version 1.0が、2014年12月10日にはversion 1.1.0がリリースされました。
まとめ
pccは、高い移植性と診断能力を兼ね備えた
C言語コンパイラであり、初期のC
コンパイラ開発に大きな影響を与えました。近年では、軽量でメンテナンスしやすいという利点から、再び注目を集めています。GCCとは異なるアプローチで開発されているため、それぞれの特性を理解して使い分けることが重要です。
関連項目
clang
参考文献
Johnson, S.C. (1978). "A portable compiler: theory and practice". Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages.
Ritchie, Dennis M. (1993). "The development of the C language". The second ACM SIGPLAN conference on History of programming languages.
Snyder, A. (1975). "A Portable Compiler for the Language C". Master’s Thesis.
Johnson, S.C. (1981). "A Tour Through the Portable C Compiler". Unix Programmer's Manual, 7th edition, Volume 2.
外部リンク
初期のソースコード
Anders Magnusson 版の PCC サイト
BSD Licensed PCC Compiler Imported,
OpenBSD Journal
* スラッシュドット ジャパン |
OpenBSD が PCC をソースツリーに投入