リリース・改善中
Programming language · 1972年公開
C言語は、高速なネイティブコードにコンパイルされ、メモリやハードウェアを直接制御できる、小さく移植性の高いシステムプログラミング言語です。
C言語は、ベル研究所のデニス・リッチーが Unix オペレーティングシステムを書くために設計した、汎用の手続き型プログラミング言語です。その後 ANSI と ISO で標準化され、現在は ISO/IEC JTC1/SC22/WG14 が規格を管理しており、C99、C11、C17 といった改訂版が広く使われています。キーワードが少なく、関数・構造体・ポインタといった単純な要素で構成されていて、コンパイラがソースコードを直接機械語に変換します。
C言語は、予測可能な性能、小さな実行ファイル、メモリの直接制御が求められる場面で力を発揮します。OS カーネル、デバイスドライバ、マイコンのファームウェア、他言語のランタイム、データベースなどが代表例です。ほぼすべてのプラットフォームに C コンパイラがあり、C の呼び出し規約(ABI)は言語どうしがライブラリを呼び出し合う際の共通の接点になっています。一方で、配列の境界チェックや自動メモリ管理がないため、バッファオーバーフローや解放済みメモリの使用といった不具合はプログラマ自身が防ぐ必要があります。
学び始めるなら、GCC・Clang・MSVC のいずれかをインストールし、ターミナルで小さなプログラムをコンパイルしてみましょう。変数と型、制御構文、関数、配列と文字列、ポインタ、構造体、動的メモリの順に進めるのが一般的です。-Wall -Wextra で警告を有効にし、標準ライブラリは cppreference で調べ、AddressSanitizer と GDB でメモリエラーを追う習慣をつけると理解が深まります。
ポインタでメモリアドレスを直接扱い、malloc と free でメモリを自分で管理できるため、データの配置や資源の使い方を細かく制御できます。
言語仕様が小さく ISO 規格で定義されているため、規格に沿ったコードはさまざまな OS やプロセッサ向けに再コンパイルして使えます。
ネイティブの機械語にコンパイルされ、ランタイムがほとんど不要なので、OS なしで動くファームウェアやブートローダにも使えます。
C の関数インターフェースは事実上の標準 ABI として使われ、Python、Rust、Go などの言語が FFI を通じて C ライブラリを直接呼び出せます。
Debian・Ubuntu 系の Linux では、下のコマンドで GCC と Make をインストールします(Fedora では sudo dnf install gcc make)。macOS では xcode-select --install で Xcode コマンドラインツールを入れると Clang が使えます。Windows では MSYS2 をインストールして UCRT64 シェルで pacman -S mingw-w64-ucrt-x86_64-gcc を実行するか、Visual Studio Build Tools の「C++ によるデスクトップ開発」ワークロードをインストールします。
sudo apt install build-essential新しいターミナルを開き、コンパイラのバージョンが表示されることを確認します。macOS の gcc コマンドは Apple Clang を指しているため、Clang のバージョンが表示されます。MSVC の場合は Developer Command Prompt で cl を実行して確認します。
gcc --version最初のプログラムを hello.c として保存し、警告を有効にして C17 規格でコンパイルしてから実行します。MSVC では cl /W4 hello.c でコンパイルし、hello.exe を実行します。
gcc -Wall -Wextra -std=c17 hello.c -o hello && ./hello#include <stdio.h> は、printf が宣言されている標準入出力ヘッダを読み込みます。main 関数はプログラムの開始点で、(void) は引数を受け取らないことを表します。printf は文字列を出力し、\n は改行です。return 0 は正常に終了したことを OS に伝えます。gcc がソースを実行ファイル hello にコンパイルし、./hello で実行します。
hello.c
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
return 0;
}
gcc hello.c -o hello && ./helloインストールから C の中心となる考え方まで、6 章で順を追って学びます。
C について質問し、経験を共有し、意見を交わす場所です。
まだディスカッションはありません。最初の話題を始めましょう。
コメント 0件
ログイン · ログインするとコメントできます。
最初のコメントを書いてみましょう。