プログラミング言語 C言語について調べてみました。
C言語とは
C言語は、現時点で最も使用されているプログラミング言語の一つです。
C言語(シーげんご)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発したプログラミング言語である。英語圏では単に C と呼んでおり、日本でも文書や文脈によっては同様に C と呼ぶことがある。
C言語は、AT&Tベル研究所のケン・トンプソンが開発したB言語の改良として誕生した。
1973年、トンプソンとUNIXの開発を行っていたデニス・リッチーはB言語を改良し、実行可能な機械語を直接生成するC言語のコンパイラを開発した。UNIXは大部分をC言語によって書き換え、C言語のコンパイラ自体も移植性の高い実装のPortable C Compilerに置き換わったこともあり、UNIX上のプログラムはその後にC言語を広く利用するようになった。
C言語の特徴、できること
C言語はポインタを扱えることで、よりハードウェアに密着したコードを書くことが可能です。
また、ほぼすべての処理系に対応しているために、ほとんどのプログラムを記述することが可能です。
実際、例えば、UNIXのカーネルやシェルはC言語で記述されています。
- 汎用性が高い。プログラムの自由度や、目的に応じた拡張が容易であるため、オペレーティングシステムやアプリケーションソフトウェア・ファームウェアの記述、デバイスドライバー開発や機械制御など、あらゆる分野に適応している。
- 対応する機器の範囲が広い。パーソナルコンピュータはもちろん、自動車や家電の組み込み用マイコンからスーパーコンピュータまで、C言語を使用できるハードウェアは多様である。多目的性と、対応機器の多彩さのため、「コンピュータを使ってやること」は大抵、C言語で対応可能である。
- 商用・非商用を問わず、採用ソフトウェア分野が広い。作成や使用のための補助的なソフトウェアが豊富である。
- 機械語に変換するソフトなどの開発環境がCPUに付属していたり無償だったりするものもあるため、ライセンス料の支払いをしなくても使用が始められる。
- 開発時期が古く、文法に機械語の影響が強く、複雑である。この欠点を補正するためのちに開発された新言語に比較し、記述することが多く、面倒で習得しにくい低水準言語である。
- アマチュアからプロ技術者まで、プログラマ人口が多く、プログラマのコミュニティが充実している。C言語は使用者の多さから、正負の両面含め、プログラミング文化に大きな影響を及ぼしている。
- 言語の適用先であるUNIXの場合、大抵のことがスクリプト言語・マクロプロセッサやフィルタやそれらの組み合わせで処理できるため、うまく分野の棲み分けができていた面があった。仕様規格・派生言語も多く幅広い領域への移植の結果、適切でない分野にC言語が使われている場合もある。
- C言語は手続き型言語の側面と関数型言語の側面がある。コンパイラ言語とOSを念頭に設計している。アセンブラのコードと同じことを実現できるようなコンピュータ寄りの言語仕様になっている。低水準な記述が出来る高級言語とも、高級言語の顔をした低級言語と言うことがある。
- Cコンパイラは、移植の容易性、自由度、実行速度、コンパイル速度などを追求した。代わりにコンパイル後のコードの安全性を犠牲にしている。セキュリティーの脆弱性や潜んだバグによる想定外の動作、コンパイラによる最適化の難しさがある。最適化するとコンパイル速度が遅くなるなどの欠点が生じることがある。自動車分野ではMISRA CというC言語の部分集合(subset)を定義して、C言語の弱点を補っている。
- UNIXおよびCコンパイラの移植性を高めるために開発してきた経緯から、オペレーティングシステムカーネルおよびコンパイラ向けの低水準記述ができる。
C言語 初心者のための入門サイト
C言語を初心者が学ぶための入門サイトはいくつかあります。
以下にまとめました。
苦しんで覚えるC言語
C言語
C言語入門
C言語のアプリ開発に必要なソフト
C言語の学習に必要なソフトは何でしょうか?
Windowsでのアプリケーション開発で、最もよく使われているのはVisual Studioでしょう。
本格的な開発を行うにはVisual Studioがおすすめです。
ブラウザだけで学習に必要な機能を網羅している以下のサイトもあります。
Online C Compile
C言語を学習する本
C言語を学習するためのバイブルと言える本が、B.W.カーニハンとD.M.リッチーが書いた「プログラミング言語C」でしょう。
中古価格 |
ただ、少し古い本であるために、新しい本では、「スッキリわかるC言語入門」がおすすめです。
新品価格 |
C言語の演算子の意味
C言語の算術演算子、論理演算子、条件演算子、比較演算子、ビット演算子、べき乗の演算子、余りの演算子の意味について以下にまとめてあります。
C言語 ポインタ、関数の使い方
C言語を学習するにあたって、最もつまずくのはポインタと関数の使い方でしょう。
以下にポインタと関数の使い方についてわかりやすく書いたサイトをまとめました。
ポインタのわかりやすい使い方
関数の作り方、呼び出し方
C言語でゲームを作る、サンプル
C言語は、汎用的なプログラミング言語であり、ゲーム開発にも適しています。
以下にサンプルプログラムの載っているゲーム開発に適したサイトをまとめました。
C言語サンプルプログラム
C言語ゲーム制作入門
新・C言語 ゲームプログラミングの館
C++、C#、Javaとの比較
C言語とC++、C#、Javaとの比較は、次の通りです。
コメント