【プログラミング言語】C

当ページのリンクには広告が含まれています。

こんにちは、KiYOです。

システムエンジニア歴20年オーバー。製造現場に特化したシステム開発を主にやってます。

新しい物好きで色々なIT技術を勉強しては、仕事に使って行ってます。

KiYO
KiYO

今回はCについて紹介します。

Cは高速にかつ省リソースで現在も活躍する言語です。

この記事でわかる事
  • Cの特徴
  • Cの歴史
  • Cの利用シーン

今回はこの本を参考に、私の独断と偏見で記事を書いています。

言語を5点中評価

容易性容易に言語習得できるか?
将来性将来性があるか?
普及度普及しているか?
保守性保守性が高いか?
中毒性ハマるか?
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言語ファミリ
  • 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と仕様
  • 歴史の長いCは複数のコンパイラが開発されてきた
  • 独自のルールが持ち込まれ互換性を失うケースが出てきた
  • そのため、ANSI、ISO、JISなどの標準化機関によって、Cの仕様が定められた
代表的なCコンパイラ
  • Cの規格に基づいた有名なコンパイラ「gcc(GNU C Compiler)」と「Clang」がある
  • この二つは共にオープンソースで、広く利用されている
  • Windows用でVisual C++が人気です
なぜCはいまだに人気なのか
  • 汎用性が高いこと」と「動作速度が高速なこと
  • パソコンだけでなく、自動車や家電の組み込みマイコンまで様々な機器のプログラムを作れる
  • プログラムのオーバーヘッドを極限に少なくしているため、計算能力の高くない機器にも搭載できる
システムプログラミング
  • システムプログラミングとは、OSやコンパイラなどの領域の、ハードウェアにより近いプログラミングのことです
  • 動作が高速でオーバーヘッドが少ない、メモリ操作などハードウェア関連の操作が容易なことが求められる
  • Cのメモリ管理などの難しさは実はシステムプログラミング言語としての柔軟さと表裏一体の関係にあるものです

まとめ:全てのプログラミング言語の祖先「C」

今回はCについて解説しました。

OSやコンパイラなどのシステムプログラミング領域や組み込み系のプログラミングにはCが外せないでしょうね。「高速動作」「オーバーヘッドが少ない」「メモリ操作が容易」この3点がCの強みです。

Cの必要性
  • 動作が早い
  • 汎用性が高く、システムプログラムやシステム開発、組み込み系など多くに利用できる
  • オーバーヘッドが少ないため、無駄な処理が少ない

やりたいことを実現するために、Cの使い方をマスタしましょう。

何事も覚えることに遅いことはありません。今日が一番若い日です。行動していきましょう!

以上です。KiYOでした!

今回参考にさせていただいた本はこちらです。今回紹介した言語やその他言語も紹介されているので大変勉強になりました。

Udemyというオンライン講座でもプログラミング学習はできます。 再生速度を早めてみたり、何度も見返すことができるのでおすすめです! 私も色々なプログラムをここで学習しています。

[affi id=2]

まとめページで、他のプログラミングも紹介していますので、ご覧ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ITの事や自分の経験談など綴っていきたいと思っています。

コメント

コメントする

CAPTCHA


目次