1972年に AT&Tベル研究所のデニス・リッチーが主体となって開発されたプログラミング言語の種類の1つです。
プログラミングパラダイムとしては、手続き型プログラミングや構造化プログラミングに対応しているといえますが、さまざまな目的で使用できる汎用的なプログラミング言語と捉えることもできます。
実行速度の速いコードが生成されやすいことに利点があります。また、ハードウェアを直接的に制御するのに適した機能を備えているため、組み込みソフトウェア、ファームウェア、デバイスドライバ、オペレーティングシステムなどの開発に使用されることが多い言語です。
一方で弱点として、メモリ管理の難しさや、型安全性の欠如が挙げられます。メモリ管理を手動でおこなう必要があり(たとえば動的にアロケートしたメモリ領域の解放は、プログラマーの指示によって行わなければならない)、メモリリークやバッファオーバーフローといったバグを入れ込んでしまいやすいという問題があります。また、型のチェックが厳密でないため、ほかの言語であればコンパイラによって検出される問題を見逃すことがあります。このように、プログラマーが正しい知識をもったうえで、注意深くプログラミングしなければならない点が多く、難易度の高い言語であるとされます。
また、標準ライブラリが提供する機能がそれほど豊富ではないため、配列や構造体程度の基本的な型と、if や for などの限られた機能を組み合わせて、自力で記述しなければならないことが多く、こうした点でもプログラマーの力量が求められる傾向があります。
こうした性能面の長所と、機能面の短所があることから、特定の領域では根強く使われ続けている言語である一方、より安全性の高いプログラミング言語に移行する動きもあります(こうした動きは C++ でも同様です)。移行先の言語としてよく名前が挙がる Rust や Go といった言語は、メモリ管理の安全性を強化し、型安全性を向上させることで、プログラマーの負担を軽減し、バグの発生を抑えることを目指しています。これらの言語は、特にセキュリティが重視される分野や、並行処理が求められるプログラム開発での採用が進んでいます。
C言語には標準規格があり、規格に合致するかたちで処理系が実装されることによって、異なるプラットフォーム間での互換性が保たれています。最初の標準規格は 1989年に ANSI(American National Standards Institute)によって策定され、「ANSI C」と呼ばれています。その後、ISO(International Organization for Standardization)によって国際標準としても承認され、「ISO C」と呼ばれます。また、日本においても、JIS規格として「JIS X 3010」が存在しており、国際規格と整合性を保ちながら、日本国内での利用を考慮した内容となっています。しかし、JIS規格は後述する C99 に対応したバージョンが最後になっています。
ISO C は定期的に改訂されており、2025年現在、C90、C99、C11、C17(または C18)、C23(または C24)といったバージョンがあります。それぞれの番号は改訂時の西暦年を表しています。改訂のたびに新機能が追加されたり、仕様の一部が修正されたりしているほか、問題があることが発覚した機能が非推奨となったり削除されたりするケースもあります。
C言語の機能の詳細な解説については、C言語編を参照してください。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |