C言語 とは?ページ内リンク ↓ウィキペディア(Wikipedia)記事 ↓Yahoo!知恵袋C言語(しーげんご)は、1972年にAT&Tベル研究所のデニス・リッチー (Dennis M. Ritchie) が主体となって作ったプログラミング言語である。英語圏では単に Cと呼称されており、日本でも著作によっては C と記述される。 出典: 『ウィキペディア(Wikipedia)』 C言語 出典: 『はてなダイアリー』 関連商品
荻原 剛志 /
最安値(新品): ¥ 4,410
最安値(中古): ¥ 4,800
|
||||||||||||||||||||
| C言語 | |
|---|---|
| パラダイム | 手続き型 |
| 設計者 | デニス・リッチー |
| 開発者 | ベル研究所 |
| 型付け | 弱い静的型付け |
| 主な処理系 | GCC、MSVC |
| 影響を受けた言語 | B言語、ALGOL、 アセンブリ言語、Pascal |
| 影響を与えた言語 | awk、csh、C++、Objective-C、D言語、Java、JavaScript、Limbo |
C言語(しーげんご)は、1972年にAT&Tベル研究所のデニス・リッチー (Dennis M. Ritchie) が主体となって作ったプログラミング言語である。英語圏では単に Cと呼称されており、日本でも著作によっては C と記述される。
UNIXの移植性を高めるために開発された経緯から、オペレーティングシステムカーネル向けの低レベルな記述ができることを特徴としており、移植用アセンブラと呼ばれることもある。
目次 |
Cは手続き型言語であり、コンパイラ言語として設計された。Cは、自由度、実行速度、コンパイル速度などを追求したが、代わりにコンパイル後のコードの安全性を犠牲にもしているので、コンピュータ寄りの言語仕様になっている。
Cの主な特徴は以下の通りである(歴史的な経緯からBASICやPascalと比較されることが多い)。
現在のPCではこれらの脆弱性対策を施しても実行速度の低下は殆どの場合において無視できる程度であるため、そのような環境でCを使う者からは欠点・不要などと言われることが多い。
Hello worldプログラム
CのHello worldプログラムには、入門書によって趣が異なるいくらかのバリエーションが存在する。Cライブラリのprintf関数を利用したものが最も一般的で、以下のようなものである。
#include <stdio.h> int main(void) { printf("Hello, World!\n"); return 0; }
なお、printf関数は変数や書式化された文字列などが表示できる比較的高機能な出力関数である。
Cライブラリに含まれる、より単純なputs関数を用いた例を下に示す。
#include <stdio.h> int main(void) { puts("Hello, World!"); return 0; }
また、Cの仕様から言えば、puts関数に渡している引数は文字列ではなく文字列へのポインタである。引数に明示的に文字列へのポインタを指定した例を下に示す。
#include <stdio.h> int main(void) { char *str = "Hello, World!"; puts(str); return 0; }
文字列をchar型へのポインタではなく配列として扱った例を示す。
#include <stdio.h> int main(void) { char str[] = "Hello, World!"; puts(str); return 0; }
このように、Cの自由度の高さから多様な記述のHello World!プログラムが存在しうる。
詳細は標準Cライブラリを参照
Cは、AT&Tベル研究所のケン・トンプソン (Ken Thompson) が開発したB言語を改良して作られた。
1973年、トンプソンとUNIXの開発を行っていたデニス・リッチー (Dennis MacAlistair Ritchie) はBを改良し、実行可能な機械語を直接生成するCコンパイラを開発した。UNIXは大部分がCによって書換えられ、その後にCは広く利用されるようになった。
アセンブラとの親和性が高いためにハードウェアに密着したコーディングがやりやすかったこと、言語仕様が小さいためコンパイラの開発が楽だったこと、小さな資源で動く実行プログラムを作りやすかったこと、UNIX環境での実績があり、後述のK&Rといった解説文書が存在していたことなど、さまざまな要因からCは業務開発や情報処理研究でのシェアを増やしていった。特にメーカー間でOS・CPUなどのアーキテクチャが違うUNIX環境では再移植の必要性がしばしば生じて、プログラムをCで書いて互換性を取ることが標準となった。
1980年代にROM-BASICを搭載するパーソナルコンピュータ(パソコン)が普及してBASICで初めてプログラミングに触れるプログラマが世界的に多数を占めるようになった。これらのパソコンの主流がROM-BASIC搭載機からMS-DOS実行機に移った1980年代後半には、当時パソコン向けのコンパイラとしては安価な2万円前後のコンパイラが存在したことなどから、ユーザーが急増した。8ビットや8086系のパソコンへの移植は、ポインタなどに制限や拡張を加えることで解決していた。
1990年代中盤以降は、最初に学ぶプログラミング言語としても主流となった。GUI環境の普及とオブジェクト指向の普及によりC++、Java、Visual Basic、各種スクリプト言語のシェアも増加したため、広く利用されるプログラミング言語の数は増える傾向にあるが、現在でもCは業務用開発やフリーソフトウェア開発、C++などの実装が困難な組み込みなどの小規模のシステムで、幅広く利用されている。
1978年に出版された、リッチーとカーニハンの共著である「The C Programming Language (いわゆる「K&R」)」は、その後標準化がなされるまで実質的なCのリファレンスとして使用された。しかし、「The C Programming Language」の記述にはいくつか曖昧な部分が存在していた。そのため、Cが普及するに従い、互換性のない処理系が数多く誕生することとなった。
そこで、ISOとANSIは協同でCの規格の標準化を進め、1989年12月にANSIのANSI X3.159-1989, American National Standard for Information Systems -Programming Language-C が、1990年12月にISOの INTERNATIONAL STANDARD ISO/IEC 9899 : 1990(E) Programming Languages-C が発行された。これらの規格の内容は同じであり、それぞれ C89、C90 という通称で呼ばれることがある。
日本では、これを翻訳したものが日本工業規格『JIS X3010-1993 プログラム言語C』として、1993年10月に制定された。
最大の特徴は、C++と同様の関数プロトタイプを導入して引数の型チェックを強化したことと、voidやenumなどの新しい型を導入したことである。一方、「処理系に依存する」とするに留めた部分も幾つかある(int型のビット幅、char型の符号、ビットフィールドのエンディアン、シフト演算の挙動、構造体などへのパディング、等)。
規格上には、コメントのネストや、BCPL・C++タイプの一行コメント(//)は無いが、オプションでサポートした処理系も多い。
主として英語圏での利用を想定して制定されたC89に対して、主に国際化のためワイド文字版ライブラリを追加したAmendment1が1995年に発行された。
1999年12月には、ISOで規格の改定が行われ、C++の機能のいくつかを取り込むことを含めた機能拡張がなされ INTERNATIONAL STANDARD ISO/IEC 9899 : 1999(E) Programmin Language-C (Second Edition) が制定された。この版のCの標準規格を通称としてC99と呼ぶ。
日本では、日本工業規格版として『JIS X 3010-2003 プログラム言語C』がある。
正式名称は“Guidelines for the Use of the C Language in Vehicle Based Software”。欧州の自動車業界団体MISRA (Motor Industry Software Reliability Association)によって発表された、車載用ソフトウェアを対象としたCによるコーディングガイドライン。 日本では、(社)自動車技術会より、テクニカルペーパーTP-01002「自動車用C言語利用のガイドライン」として発行されている。
現在はC/C++兼用となっている処理系が多い。
サーティファイが実施しているC言語プログラミング能力認定試験がある。
PageRank5以上の相互リンク
・相互リンクスクエア
(PageRank 5)
・相互リンク インプロス
(PageRank 5)
→便利!NINJA TOOLS
→FC2検索
用語
Wikipedia
YouTube
![]() |
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |