何ですか C Programming Language?
⚡ スマートサマリー
C Programming Language は、1972年にベル研究所のデニス・リッチーによって作成された汎用構造化言語です。マシンに依存せず、高速で、システムソフトウェア、オペレーティングシステム、組み込みファームウェア、および のような現代の言語の基盤となっています。 C++, Java, Python.

何ですか C Programming Language?
C は、非常に人気があり、シンプルで柔軟性のある汎用プログラミング言語です。構造化されたマシン非依存の言語で、オペレーティングシステムから、 Windows Linux から複雑なプログラムまで Oracle データベース、Git、そして Python 通訳。
C言語は、現代プログラミングの基礎となる言語としてよく知られています。C言語を習得すれば、他の言語の習得は格段に容易になります。なぜなら、ほとんどの言語はC言語の概念を借用しているからです。また、コンピュータのメモリに関する基本的な知識も役立ちます。メモリはほぼすべてのCプログラムにおいて中心的な役割を果たすからです。
IEEE ― 2018年のトップ10プログラミング言語。
このガイドでは、C言語の基本、すなわちその歴史、基本コマンド、主要な用途、なぜ今でも学ぶ価値があるのか、そしてコンパイルモデルの仕組みについて解説します。
C言語の歴史
C言語は単独で出現したのではなく、それ以前のシステム言語の連鎖から発展したものである。
- アルゴル(1960年): プログラミング言語の父と呼ばれることも多いALGOLは、構造化プログラミングをより広範な開発者コミュニティに導入し、ヨーロッパの大学で広く採用された。
- BCPL(1967): 基本複合プログラミング言語(Basic Combined Programming Language)は、システムソフトウェアを作成するためにマーティン・リチャーズによって設計された。
- B(1970): AT&Tベル研究所のケン・トンプソンによって導入された。BはBCPLの多くの機能を継承し、初期のUNIXツールの開発に使用された。
In 1972デニス・リッチーが制作 C ベル研究所で開発されたCは、ALGOL、BCPL、Bの優れたアイデアを取り入れ、さらに新たな概念を加えることで、それまでのどのバージョンよりも表現力豊かなものとなった。
C言語はUNIXと密接に関連しており、UNIXオペレーティングシステム自体の大部分はC言語で書き直されました。C言語がベル研究所を超えて広まるにつれ、多くのプラットフォーム向けに商用コンパイラが登場し、言語は互換性のない複数の方言に進化しました。一貫性を回復するために、米国規格協会(ANSI)はC言語の標準を1998年に発行しました。 1989国際標準化機構(ISO)はこれを承認した。 1990標準化されたバージョンは広く呼ばれています ANSI C.
Cの歴史
などの言語 C++ and Java C言語から直接開発された言語が多く、多くの現代的な言語もC言語の構文や慣習を採用している。そのため、C言語は今日のソフトウェアの大部分の基盤となっている。
C基本コマンド
以下のコマンドは、ほぼすべてのCプログラムの骨格を形成する。
| C言語の基本コマンド | 説明 |
|---|---|
#include <stdio.h> |
コンパイル前に、Cライブラリの標準入出力ヘッダーファイルを含めます。 |
int main() |
主要な機能、つまりすべてのCプログラムの実行はここから始まります。 |
{ |
メイン機能ブロックの開始を示します。 |
/* some_comments */ |
コメント。コンパイラは、以下のすべてを無視します。 /* and */. |
printf("Hello, World!"); |
画面に出力を表示します。 |
getch(); |
キーボードから1文字を読み取ります(非標準機能、主にTurbo Cで使用されます)。 |
return 0; |
メイン関数を終了し、オペレーティングシステムに値0を返します。 |
} |
メイン関数ブロックの終わりを示します。 |
C言語はどこで使われているのか?主な用途
C言語はほとんどのユーザーが目にすることのない場所で動作していますが、そのフットプリントは膨大です。一般的な動作領域は以下のとおりです。
- 組み込みシステムおよびマイクロコントローラのファームウェア。
- システムレベルのアプリケーションとドライバ。
- デスクトップアプリケーション。Adobe製品も多数含まれる。
- ウェブブラウザとその拡張機能 — Googleのクロムには大量のC/が含まれていますC++ コード。
- データベース — MySQL は、C言語で書かれた最も人気のあるデータベースの1つです。
- Operaアップルのシステム macOS (ダーウィン) Microsoft WindowsLinux、そして歴史的にはSymbianもすべてC言語を使用して構築されました。
- コンパイラ、言語ランタイム、およびインタプリタ。
- モノのインターネット(IoT)デバイスおよびホームオートメーション用ファームウェア。
C言語を学ぶ理由とは?
C言語は多くのプログラミング言語の基盤となっているため、C言語を学ぶことで、その後のすべての言語の習得が容易になります。C言語では、他の言語で見られるのと同じデータ型、演算子、制御文が導入されます。 C++, Java, Python、 じゃ、行け。
Cに投資する主な理由は以下のとおりです。
- その2:シャフトスピード(回転数): C言語はネイティブコードにコンパイルされ、メモリをきめ細かく制御できます。
- 移植性: C言語で書かれたプログラムは、事実上あらゆるプラットフォームで再コンパイルして実行できる。
- 構造: C言語のプログラムはモジュールに分割されているため、テスト、保守、デバッグが容易になります。
- コンパクトなコア: C言語にはキーワードが32個しかなく、データ型も複数あり、強力な組み込みライブラリも備えている。
- 拡張性: ライブラリに独自の関数を追加して、組み込み関数であるかのように呼び出すことができます。
- キャリア価値: 組み込みシステム、カーネル、高性能エンジンといった分野では、依然として高度なC言語スキルが求められます。
認定条件 C Programming Language ワークス
C言語はコンパイル言語です。コンパイラはソースコードを読み込み、マシンが理解できるオブジェクトファイルを生成します。リンカは、1つ以上のオブジェクトファイル(および参照するライブラリ)を結合して、ターゲットプラットフォームで実行可能な単一の実行可能ファイルを作成します。下の図は、実行フロー全体を示しています。
オンラインとオフラインの両方で多くのコンパイラが利用可能であり、それらはすべて同じパイプラインに従います。人気のある選択肢には以下が含まれます。
- GCC — GNUコンパイラコレクション。Linuxおよび多くの組み込みシステムにおける事実上の標準となっている。
- クラン — LLVM ベースのフロントエンドは、デフォルトで次の場所で使用される。 macOS.
- ミンウ — ミニマリスト GNU WindowsGCC を導入 Windows ユーザー。
- ポータブルCコンパイラ(pcc)。
- ターボC —多くの学術コースで今でも使用されている古典的なコンパイラ。
Cの利点と欠点
以下の表は、新しいプロジェクトでCを選択する前に検討すべきトレードオフをまとめたものです。
| 優位性 | デメリット |
|---|---|
| メモリおよびハードウェアへの高速かつ低レベルなアクセス。 | 手動でのメモリ管理は、メモリリークやバッファオーバーフローなどのバグを引き起こす可能性があります。 |
| アーキテクチャやオペレーティングシステムを問わず移植可能。 | オブジェクト指向やジェネリクスは組み込まれていません。 |
| わずか32個のキーワードで構成された、簡潔な構文。 | 安全対策が組み込まれていないため、未定義の動作が静かに発生する可能性がある。 |
| コンパイラ、デバッガ、ライブラリからなる巨大なエコシステム。 | スクリプト言語と比較すると、高水準のアプリケーションコードとしては冗長である。 |
| Foundation 現代語の場合、スキルは容易に応用できる。 | マネージド言語で十分なタスクにおいては、生産性が低下する。 |
C言語を書く際のベストプラクティス
以下の習慣を守れば、C言語のコードベースは読みやすく、移植性が高く、一般的なメモリバグが発生しにくくなります。
- 警告を有効にする: コンパイルする
-Wall -Wextra -Werrorそのため、些細な問題でもビルドが失敗する。 - 変数を初期化します。 値が割り当てられていない変数から読み取ってはいけません。
- 戻り値を確認してください。
mallocファイル入出力、システムコールなど、すべてのエラーはリターンコードによって通知されます。 - すべてのペア
mallocまた、free: 静的解析またはAddressSanitizerを使用して、情報漏洩を検出してください。 - より安全な文字列関数を優先する: つかいます
snprintfsprintfandstrncpy注意して。 - ヘッダーガードを使用する: すべてのヘッダーを保護する
#ifndef / #define / #endifガード。 - 標準に頼る: コンパイラ拡張機能を使用するやむを得ない理由がない限り、移植性の高いANSI/C99/C11規格のコードを記述してください。




