こんにちは、KiYOです。
システムエンジニア歴20年オーバー。製造現場に特化したシステム開発を主にやってます。
新しい物好きで色々なIT技術を勉強しては、仕事に使って行ってます。

今回はCについて紹介します。
Cは高速にかつ省リソースで現在も活躍する言語です。
- Cの特徴
- Cの歴史
- Cの利用シーン
今回はこの本を参考に、私の独断と偏見で記事を書いています。
言語を5点中評価
容易性 | 容易に言語習得できるか? | 2 |
将来性 | 将来性があるか? | 3 |
普及度 | 普及しているか? | 5 |
保守性 | 保守性が高いか? | 3 |
中毒性 | ハマるか? | 4 |
17 |

Cの特徴

Cは高速・省リソースで現在も多く使われています。主要なプログラミング言語に大きな影響を与えている言語です。
- Cは現代の主要プログラミング言語に多大な影響を与えた「祖先」とも言える言語
- 誕生は1972年、初期のプログラミング言語の1つです。
- プログラムの実行速度やメモリの使用効率に非常に優れている
- 仕様やコンパイラは今でも更新されている
- メモリ管理が複雑であり、文法が不親切なため、習得難易度は高め

Cの歴史

開発者 | Dennis MacAlistair Ritchie(デニス・マカリスタ・リッチー) |
誕生 | 1972年に開発 |
公式サイト | http://www.open-std.org/jtc1/sc22/wg14/ |
分類 | 静的型付け、手続き型 |
影響を受けた言語 | B言語 Assembly Fortran |
影響を与えた言語 | C++ C# Java Go JavaScript PHP 現代の主要な言語のほぼ全て |
言語の歴史
1972年 | ベル研究所でデニス・マカリスタ・リッチーによって開発 |
B言語をベースに開発されていたため、それに続く言語としてCと名付けられた |
- Cはコンパイル言語です
- ソースコードを実行可能なパフォーマンス的に優れたバイナリを生成できます
- Cは複数の人気処理系(コンパイラ)が共存しています
- C++とObjective-Cは特にCからの影響が強いため、C言語ファミリと呼ぶことがある
- 共通の処理などを「ヘッダファイル」という仕組みで管理
- プログラムにこのヘッダファイルを使いますという指定をして利用
- 標準入出力(Standard I/O)の機能をまとめたstdio.hはプログラミング入門で多く目にする
デニス・マカリスタ・リッチー氏(以降、リッチー)はCだけでなく、多くの分野でコンピュータの発展に寄与しています。Cと並び著名な貢献は、現在のAndroidスマートフォンやiPhoneのOSにも影響を与えているUNIXというOSの開発です。
現代の主要プログラミング言語や現代のスマートフォンOSのいずれもリッチー氏なしでは語れません。
Cの利用シーン

AndroidのベースであるLinuxはほぼ全ての部分がCで書かれています。Cの素早い応答速度がその理由の1つでしょう。他にはメモリ使用効率が求められる組み込みシステムにも用いられます。
Cはガベージコレクションと呼ばれるメモリ管理機能がなく、オーバーヘッドなしにプログラムを実行できます。
- Cの特徴の一つがポインタ
- ポインタとは、変数のアドレスを記録するもののことです(アドレス)
- 関数や変数の参照先の受け渡しができたりすることで高度なプログラミングが可能
- 歴史の長いCは複数のコンパイラが開発されてきた
- 独自のルールが持ち込まれ互換性を失うケースが出てきた
- そのため、ANSI、ISO、JISなどの標準化機関によって、Cの仕様が定められた
- Cの規格に基づいた有名なコンパイラ「gcc(GNU C Compiler)」と「Clang」がある
- この二つは共にオープンソースで、広く利用されている
- Windows用でVisual C++が人気です
- 「汎用性が高いこと」と「動作速度が高速なこと」
- パソコンだけでなく、自動車や家電の組み込みマイコンまで様々な機器のプログラムを作れる
- プログラムのオーバーヘッドを極限に少なくしているため、計算能力の高くない機器にも搭載できる
- システムプログラミングとは、OSやコンパイラなどの領域の、ハードウェアにより近いプログラミングのことです
- 動作が高速でオーバーヘッドが少ない、メモリ操作などハードウェア関連の操作が容易なことが求められる
- Cのメモリ管理などの難しさは実はシステムプログラミング言語としての柔軟さと表裏一体の関係にあるものです
まとめ:全てのプログラミング言語の祖先「C」

今回はCについて解説しました。
OSやコンパイラなどのシステムプログラミング領域や組み込み系のプログラミングにはCが外せないでしょうね。「高速動作」「オーバーヘッドが少ない」「メモリ操作が容易」この3点がCの強みです。
- 動作が早い
- 汎用性が高く、システムプログラムやシステム開発、組み込み系など多くに利用できる
- オーバーヘッドが少ないため、無駄な処理が少ない
やりたいことを実現するために、Cの使い方をマスタしましょう。
何事も覚えることに遅いことはありません。今日が一番若い日です。行動していきましょう!
以上です。KiYOでした!
今回参考にさせていただいた本はこちらです。今回紹介した言語やその他言語も紹介されているので大変勉強になりました。
Udemyというオンライン講座でもプログラミング学習はできます。 再生速度を早めてみたり、何度も見返すことができるのでおすすめです! 私も色々なプログラムをここで学習しています。
[affi id=2]
まとめページで、他のプログラミングも紹介していますので、ご覧ください。

コメント