C言語
目次[編集]
入門的な内容[編集]
- C言語/開発環境
- C言語/基本的なプログラム (2013-09-25)
- 基礎知識 (2013-10-09)
- 制御文 (2013-07-01)
- 記法 (2013-07-01)
- 配列 (2017-03-21)
- 文字と文字列 (2017-03-21)
- 演算子と式 (2013-09-29)
- 関数 (2013-07-01)
- 構造体 (2013-06-24)
- 共用体
- ポインタ (2017-03-21)
- 配列とポインタ (2017-03-21)
- ファイル入出力 (2019-09-04)
割と高度な内容[編集]
- C言語/データ型と変数の高度な話題 (typedef,enum, const など)
- 中級者向けの話題 (プログラム仮引数, inline, 再帰 など)
- 標準ライブラリ (2013-07-21)
- 診断機能<assert.h>
- 複素数計算<complex.h>C99
- 文字操作<ctype.h> (2013-10-18)
- エラー<errno.h>
- 浮動小数点環境<fenv.h>C99
- 浮動小数点型の特性<float.h>
- 整数型の書式変換<inttypes.h>C99
- 代替つづり<iso646.h>C95
- 整数型の特性<limits.h>[1]
- 文化圏固有操作<locale.h>
- 数学<math.h> (2013-06-29)
- 非局所分岐<setjmp.h>
- シグナル操作<signal.h>
- アライメント<stdalign.h>C11[2]
- 可変個数の実引数<stdarg.h>
- アトミック<stdatomic.h>C11[3]
- 論理型及び論理値<stdbool.h>C99
- ビット・バイトユーティリティー<stdbit.h>C23[4]
- 共通の定義<stddef.h>
- チェック付き整数演算<stdckdint.h>C23[5]
- 整数型<stdint.h>C99
- 入出力<stdio.h> (2014-02-20)
- 一般ユーティリティ<stdlib.h> (2014-04-24)
- _Noreturn<stdnoreturn.h>C11[6]
- 文字列操作<string.h> (2013-11-13)
- 型総称数学関数<tgmath.h>C99
- スレッド<threads.h>C11[7]
- 日付及び時間<time.h>
- Unicodeユーティリティ<uchar.h>C11[8]
- 多バイト文字及びワイド文字拡張ユーティリティ<wchar.h>C95 (2013-06-16)
- ワイド文字種分類及びワイド文字大文字小文字ユーティリティ<wctype.h>C95 (2013-06-16)
C言語の歴史[編集]
C言語の起源は1969年頃にさかのぼります。当時ベル研究所でUNIXの開発が進められていましたが、システムを効率的に実装するための適切なシステムプログラミング言語がありませんでした。そこで当時ベル研究所に在籍していたケン・トンプソンが、MITで開発されたBCPL言語に影響を受けて、新しい言語「B言語」を作り出しました。
1972年頃になると、デニス・リッチーがB言語をベースに「C言語」の開発を開始します。C言語ではB言語になかったデータ型の概念を導入し、構造体なども追加されました。また、ポインタと配列の関係性に特徴的な設計がなされました。当初はUNIXの開発に利用されましたが、徐々に普及が広がっていきました。
1977-78年頃には、ポインタ規則の厳格化やunsigned
型の追加などの改良が行われ、1978年にはブライアン・カーニハンとデニス・リッチーによる「The C Programming Language」という書籍が出版され、C言語の事実上の権威ある解説書となりました。
1980年代に入ると、C言語の標準化の必要性が高まり、1983年にANSIによるC標準化委員会が発足しました。そして1989年に最初のANSI C標準が公開されることとなります。この標準化作業で言語仕様がさらに明確化され、const
、volatile
といった新しい機能も追加されました。
以降、C言語はUNIXをはじめとするOSでメインのシステムプログラミング言語として幅広く利用されただけでなく、アプリケーション開発でも広く使われるようになりました。また、C++などの後継言語の基盤ともなりました。単純でありながらも力強い表現力を持つC言語は、今日にいたるまで重要な役割を果たしてきました。
参考文献[編集]
- C - Project status and milestones. ISO/IEC. (2024-03-05) .
- ISO/IEC WG 14 Document Log. ISO/IEC. (2024-04-28) .
- C2y: ISO/IEC 9899:2024 (en) — N3220 working draft. ISO/IEC. (2024-02-22) .
- C23: N3096 working draft — April 1, 2023 ISO/IEC 9899:2023 (E). ISO/IEC. (2023-04-01) .
- ISO/IEC 9899:2018(en) Information technology — Programming languages — C. ISO/IEC. (2018-07-05) .
- N2176 C17 ballot ISO/IEC 9899:2017. ISO/IEC JTC1/SC22/WG14. オリジナルの2018-12-30時点によるアーカイブ。 .
- C11: WG14/N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. (2011-04-12) .
- C99: WG14/N1256 Committee Draft — Septermber 7, 2007 ISO/IEC 9899:TC3. ISO/IEC. (2007-09-07) .
- C99: ISO/IEC 9899:TC2 Committee Draft — May 6, 2005 WG14/N1124. ISO/IEC. (2005-05-06) .
- JIS X 3010:2003『プログラム言語C』. 日本工業標準調査会[9]. (2003-12-20). — 1999 年に第 2 版として発行された ISO/IEC 9899:1999,(Programming languages―C) 及び Technical Corrigendum 1 (2001)について,技術的内容を変更することなく日本工業規格[10]として採用するために作成されたもの[11]。
脚註[編集]
- ^ <limits.h>は、C99では"Sizes of integer types"、JISCでは、"整数型の大きさ" でしたが、C23では"Characteristics of integer types"となったので、<float.h>の/Characteristics of floating types/浮動小数点型の特性/ にならって "整数型の特性" の訳をあてました。
- ^ N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. p. 268, §7.15 Alignment <stdalign.h> .
- ^ N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. p. 273, §7.17 Atmics <stdatomic.h> .
- ^ N3054 working draft — September 3, 2022 ISO/IEC 9899:2023 (E). ISO/IEC. (2022-09-03). p. 314,§ 7.20 Checked Integer Arithmetic .
- ^ N3054 working draft — September 3, 2022 ISO/IEC 9899:2023 (E). ISO/IEC. (2022-09-03). p. 305,§ 7.18 Bit and byte utilities .
- ^ N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. p. 361, §7.23 _Noreturn <stdnoreturn.h> .
- ^ N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. p. 376, §7.26 Threads <threads.h> .
- ^ N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. p. 398, §7.28 Unicode utilities <uchar.h> .
- ^ 当時、現:日本産業標準調査会
- ^ 当時、現:日本産業規格
- ^ ISO/IEC 9899:1999 (IDT)