Portable C Compiler

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 をソースツリーに投入

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。