C言語 【C language】
概要
C言語(C language)とは、広く普及している手続き型の高水準プログラミング言語の一つ。汎用的な言語で様々な分野で広く利用されているが、特にオペレーティングシステム(OS)などハードウェアを直接制御するプログラムの開発で利用される機会が多い。特徴と用途
繰り返しや条件分岐、関数定義など構造化プログラミングを実現するための制御構文を多く備え、実行位置を任意の箇所に変更する構文(いわゆるgoto文)を排除した見通しの良いプログラムを記述することができる。自由度が高く拡張性が高いが、プログラムの安全性を高める配慮はあまりなく、よく仕様を理解して注意深く記述することが求められる。
波括弧 { } で括った複数の文を一つの文とみなすコードブロックの仕組みや、セミコロン(;)による文の区切り、「++」「!=」のように記号文字を組み合わせた演算子表記など、C言語で採用された記法の多く(必ずしもCオリジナルではなくそれ以前の言語から移入されたものも多い)は、その後現れた多くのプログラミング言語が踏襲している。
メインメモリ(RAM)のアドレスを直に指定したり変数に格納して操作することができる「ポインタ」(pointer)や、プログラム中にアセンブリ言語を埋め込んで記述することができるインラインアセンブラなど、低水準(ハードウェア寄り)の制御が可能な仕組みが用意されている。
C言語は高速性やハードウェア制御が必要なソフトウェアの開発に用いられることが多く、オペレーティングシステム(OS)やドライバソフト、他のプログラミング言語の言語処理系(スクリプト言語のインタプリタなど)、電子機器の組み込みシステムの制御ソフトウェアなどの開発によく用いられる。
実行環境と移植性
C言語で記述したプログラム(ソースコード)はコンパイラと呼ばれるソフトウェアによって機械語のプログラム(オブジェクトコード)に変換されて実行される。様々な機種やOS向けの開発環境で標準的にCコンパイラが提供されており、最も対応環境が多く移植性の高い言語の一つである。
ただし、環境によって標準ライブラリが提供する関数などが異なったり、ハードウェアの仕様に依存するコードがそのままでは動作しない場合があるため、他の環境へ移植する際には書き換えやプリプロセッサによる条件付きコンパイルなどの調整が必要なことが多い。
歴史
C言語の最初の仕様は1972年に当時のAT&T社ベル研究所でデニス・リッチー(Dennis M. Ritchie)氏とブライアン・カーニハン(Brian W. Kernighan)氏によって発表された。初期のUNIXはC言語で記述されており、UNIXにはC言語の処理系が同梱されていたためUNIX系OSと共に広まっていった。
言語仕様は1989年にANSI(米国国家規格協会)によって「ANSI C」と通称される標準規格となった。1990年にISO(国際標準化機構)とIEC(国際電気標準会議)によってISO/IEC 9899となり、日本でも1993年にISO標準を訳したものがJIS(日本産業規格)の一部として標準化(JIS X 3010)されている。
標準規格は機能の追加など改版を重ねており、当初の標準規格を制定年から「C90」、1999年の改訂版(ISO/IEC 9899:1999)を「C99」といったように通称する。2011年版の「C11」、2018年版の「C18」あるいは「C17」(仕様が固まったのが2017年のため)、2023年版の「C23」が知られている。
「C」という名称の由来は、当時存在した「B」という言語を改良したものであることからとされる。後にC言語の仕様にオブジェクト指向などの仕様を追加した「C++」言語が開発され、現在ではC++言語が用いられることが多い。