EN JA
C(7)
C(7) FreeBSD Miscellaneous Information Manual C(7)

名称

c, c78, c89, c90, c99C プログラミング言語

解説

C は、Unix オペレーティングシステムのかなりの大部分が C 言語に書かれて以来、 Unix オペレーティングシステムとその派生物との強い関係がある、汎用のプログラミング言語です。 C 言語は、BCPL 言語から DEC PDP-7 マシンのために 1970 年に Ken Thompson によって書かれた B 言語を通していくつかの基本的なアイデアを含んでいます。 Unix オペレーティングシステムの開発は、PDP-7 マシンのアセンブリ言語で開始されましたが、既存のコードを他のシステムに移植することをたいへん難しくします。

1972 年に、Dennis M. Ritchie は、Unix オペレーティングシステムのさらなる展開のために C プログラミング言語を考え出しました。アイデアは、異なったプラットフォームのために C コンパイラだけを実装することであり、異なったアーキテクチャの間の移植性を簡素化する新しいプログラミング言語でオペレーティングシステムのほとんどの部分を実装することでした。従って、C は、オペレーティングシステムと低レベルのアプリケーションを書くために (限定されない) たいへん適しているということになります。

C 言語は、長い間、仕様または標準化されたバージョンがありませんでした。それは、ずいぶん長いこと、多くの変更と改良を経験しました。 1978 年に、Brian W. Kernighan と Dennis M. Ritchie は、「 C プログラミング言語」というタイトルで C に関する最初の本を発行しました。この本を言語の最初の仕様として考えることができます。このバージョンは、しばしば、作者の名前にちなんで K&R C として言及されます。また、それは、本の最初の版の出版年にちなんで、しばしば、C78 として言及されます。

言語の命令セットは、単純化のための最も基本的な要素に制限されることに注目することが重要です。標準 I/O の取り扱いと一般的な関数は、コンパイラとともに出荷されるライブラリで実装されています。また、これらの関数が広く使用されるように、言語自体に厳密でなく、ライブラリが適合するべきどのような要件かを記述に含めるように要求されます。それに応じて、前述の標準は、同様にライブラリの要素をカバーしています。この標準のライブラリの基本は、より複雑なタスクのためには、まだ十分ではありません。この場合は、与えられたオペレーティングシステムの提供されたシステムコールを使用することができます。これらのシステムコールを使用することによって移植性が失われないように、 POSIX (Portable Operating System Interface) 標準は、発展させました。どのような関数が移植性を保つために利用可能であるべきかを説明します。 POSIX は、C 標準ではありませんが、オペレーティングシステムの標準であり、したがって、このマニュアルの範囲を超えていることに注意してください。下記で議論される標準は、すべて C 標準であり、C プログラミング言語と付随するライブラリのみをカバーしています。

以前に言及された本の出版の後に、American National Standards Institute (ANSI) (米国規格協会) は、言語を標準化する作業を開始し、それらは、1989 年に ANSI X3.159-1989 をアナウンスしました。通常、それは、ANSI C または C89 として言及されます。この標準の主な違いは、関数を宣言する新しい方法である、関数プロトタイプです。古いスタイルの関数宣言では、コンパイラは、関数呼び出しで実際のパラメータの整合性をチェックできませんでした。互換性のないパラメータは、プログラムコードで検出しにくく、問題は、実行時にのみ現れたので、古い構文は、たいへんエラーを起こしやすいものでした。

1990 年に、International Organization for Standardization (ISO) (国際標準化機構) は、1990 年に ISO/IEC 9899:1990 として ANSI 標準を採用しました。これは、また、ISO C または C90 として言及されます。それは、ANSI C に対してごくわずかな小さな変更を含むだけであるので、 2 つの標準は、しばしば完全に同等と考えられました。これは、C 言語の歴史で非常に重要なマイルストンでしたが、言語の開発は、止まりませんでした。

ISO C 標準は、後に、1995 年に ISO/IEC 9899 AM1 として修正して拡張されました。これは、例えば、wchar.h と wctype.h のワイド文字のサポートを含みました。また、2 つの正誤表も発行されました: 1995 年の ISO/IEC 9899 TCOR1 として Technical Corrigendum 1 および 1996 年の ISO/IEC 9899 TCOR1 として Technical Corrigendum 2 です。連続した開発と成長が行われ、新機能を含んで、言語の知られている不備と欠陥を修正した、新しい標準を成立する必要があります。結果として、ISO/IEC 9899:1999 が、1999 年に誕生しました。他の標準と同様に、これは、出版年にちなんで C99 として言及されます。改良は、次を含んでいます:

  • インライン関数
  • 可変長配列のサポート
  • 新しい高精度整数型は、long long int と名前が付けられ、他の整数型は、 stdint.h で定義されています
  • stdbool.h で実装された新しい boolean データ型
  • C++ 言語から取られた 1 行コメント
  • いくつかの新しいプリプロセッサの機能
  • プログラムまたはプログラムブロックの始めだけではなく、どこにでも、新しい変数を宣言することができます
  • 暗黙の int 型は、ありません。

それ以来、新しい標準は、発行されていませんが、C 言語は、まだ発展しています。新しくて役に立つ関数は、次の最も有名な C コンパイラに現れています: GNU C。 UNIX 風のオペレーティングシステムのほとんどは、システムコンパイラとして GNU C を使用していますが、GNU C のそれらの追加部分は、標準機能としてみなすべきではありません。

関連項目

cc(1), c89(1), c99(1)

規格

ANSI, X3.159-1989.

ISO/IEC, 9899:1990, Programming languages -- C.

ISO/IEC, 9899 AM1.

ISO/IEC, 9899 TCOR1, Programming languages -- C, Technical Corrigendum 1.

ISO/IEC, 9899 TCOR2, Programming languages -- C, Technical Corrigendum 2.

ISO/IEC, 9899:1999, Programming languages -- C.

歴史

このマニュアルページは、 FreeBSD 9.0 ではじめて登場しました。

作者

このマニュアルページは、もともと Gabor Kovesdan <gabor@FreeBSD.org>によって書かれました。
May 30, 2011 FreeBSD