
C言語のきほん|プログラミング言語の歴史
0と1からC言語へ。歴史を知ると、プログラミングがもっとわかる。
C言語を学ぶとき、いきなり文法から入ってももちろん勉強はできます。
でも、プログラミング言語がどう生まれて、どう進化してきたかを先に知っておくと、C言語の立ち位置がとてもよく見えてきます。
なぜ昔は機械語だったのか。
なぜアセンブリ言語が必要になったのか。
なぜさらに高級言語が登場したのか。
この流れを知ると、C言語が単なる昔の言語ではなく、今でも多くの技術の土台を支える重要な言語だと実感しやすくなります。ここでは、機械語 → アセンブリ言語 → 高級言語 という流れを、表や図を使ってやさしく整理していきます。

プログラミング言語の歴史を学ぶ意味
まず最初に、歴史を学ぶメリットを整理しておきます。
歴史を学ぶメリット
| 視点 | わかること |
|---|---|
| 仕組みの理解 | コンピュータが本当は 0 と 1 で動いていること |
| 言語の役割 | 人間が書きやすくするために言語が進化したこと |
| C言語の位置づけ | 低レベルと高レベルの橋渡し的な存在であること |
| 学習のコツ | 文法暗記ではなく、意味で理解しやすくなること |
C言語の学びやすさや難しさの理由も、歴史の流れを知ると納得しやすくなります。
最初期のプログラムは機械語だった
1946年ごろの初期のコンピュータでは、プログラムは 機械語 で書かれていました。
機械語は、コンピュータが直接実行できる命令の形です。
ただし、人間にとっては非常に読みづらく、書くのも修正するのも大変でした。
機械語のイメージ(図)
機械語(コンピュータが直接読む)
10111000 00101101
00000001 10001110
11010000 10111100
00110100 00000101
00110110 10001100
00011110 01011000
00000000 10110100
00110000 11001101
この図は、コンピュータには理解しやすいけれど、人間には意味がつかみにくいことを表しています。
0 と 1 の並びを見ても、どんな処理をしているのか直感的にはわかりませんよね。
アセンブリ言語の登場
機械語の扱いにくさを改善するために登場したのが アセンブリ言語 です。
アセンブリ言語では、機械語の命令を人間が覚えやすい記号(ニーモニック)で表します。
たとえば、加算なら ADD、データ移動なら MOV のように書けます。
機械語とアセンブリ言語の比較(図)
機械語
10111000 00101101
00000001 10001110
11010000 10111100
00110100 00000101
↓ 人間にわかりやすい記号へ置き換え
アセンブリ言語
main:
MOV BX,1
MOV AX,2
ADD BX,AX
XOR AX,AX
RET
この図で見てほしいのは、アセンブリ言語になると 命令の意味が少し見えるようになる ところです。
MOV は移動、ADD は加算、というように、処理の意図を人間が追いやすくなります。
機械語とアセンブリ言語の違い(表)
| 項目 | 機械語 | アセンブリ言語 |
|---|---|---|
| 読みやすさ | とても低い | 機械語より高い |
| 実行速度 | 直接実行できる | アセンブラで変換して実行 |
| 書きやすさ | とても難しい | かなり改善される |
| CPU依存 | 非常に強い | 強い(CPUごとに書き直しが必要) |
ポイントは、アセンブリ言語は便利になったとはいえ、まだ CPUごとの差 が大きいことです。
つまり、別のコンピュータで動かそうとすると、書き直しが必要になることが多かったんですね。
ニーモニックとは?
本文にも出てくる大事な言葉なので、ここで整理しておきます。
ニーモニックの説明(表)
| 用語 | 意味 | 例 |
|---|---|---|
| ニーモニック | 機械語の命令を覚えやすい記号にしたもの | MOV, ADD, SUB, JMP |
ニーモニックは、言ってみれば 命令の短いラベル です。
0と1の並びをそのまま覚えるより、MOV や ADD のほうが圧倒的に扱いやすいですよね。
高級言語の登場
1950年代になると、さらに人間が扱いやすい 高級言語 が登場します。
ここで一気に、プログラムを書く作業が実用的になっていきました。
代表例としてよく登場するのが、以下の2つです。
- Fortran(科学技術計算)
- COBOL(事務処理・業務アプリケーション)
高級言語の特徴(表)
| 項目 | 内容 |
|---|---|
| 読みやすさ | 英語に近い書き方で理解しやすい |
| 開発効率 | アセンブリ言語より大幅に高い |
| 保守性 | 修正しやすく、複数人で扱いやすい |
| 共通性 | CPU差を吸収しやすくなった(処理系が変換) |
大切なのは、人間が書く負担が大きく減ったことです。
高級言語の登場によって、プログラミングは一部の専門家だけのものから、より広い分野で使われる技術になっていきました。
FortranとCOBOLのサンプル
Fortran の例
program hello
print *, 'Hello, World!'
end program hello
COBOL の例(日本語メッセージ・日本語コメント)
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY "Hello, World!".
STOP RUN.
FortranとCOBOLの見た目の違いを比べてみる
同じ「文字を表示する」処理でも、書き方には違いがあります。
ここで、見た目と特徴を比べてみましょう。
Fortran と COBOL の比較表
| 項目 | Fortran | COBOL |
|---|---|---|
| 主な用途(当時) | 科学技術計算 | 業務処理・事務処理 |
| 書き方の印象 | 比較的コンパクト | 文章的で構造がはっきりしている |
| 読みやすさ | 数式処理に向く | 帳票や業務手順の表現に向く |
| 学習時の注目点 | シンプルな命令構造 | 部(DIVISION)ごとの構成 |
この表からわかるように、言語は「得意分野」に合わせて設計されています。
つまり、プログラミング言語は1つではなく、目的に応じて進化してきたわけです。
高級言語とは?
ここも用語としてしっかり押さえておきたいところです。
高級言語の説明
| 用語 | 意味 |
|---|---|
| 高級言語 | 人間が理解しやすい形でコンピュータに指示を書くための言語 |
| 反対のイメージ | 機械語やアセンブリ言語(コンピュータ寄り) |
| 代表例 | C言語、Fortran、COBOL、Java、Python など |
高級言語という言い方は、優れているという意味よりも、**抽象度が高い(人間向けに整理されている)**という意味で使われます。
C言語も高級言語に分類されますが、比較的コンピュータ寄りの感覚も残っている、ちょうどいい位置の言語です。
言語の進化の流れを図で整理する
ここまでの内容を、1本の流れとして整理しておくと理解が安定します。
プログラミング言語の進化(図)

「使いにくい → 改善する」という流れで進化してきたことがわかります。
C言語はこの歴史の中でどこにいるの?
ここが、C言語学習の入口としていちばん大事なポイントです。
C言語は高級言語の一種ですが、ほかの高級言語よりもコンピュータの仕組みに近い感覚を学びやすい言語です。
そのため、次のような場面で今でも重要です。
C言語の位置づけ(表)
| 観点 | C言語の特徴 |
|---|---|
| 歴史的な役割 | 高級言語でありながら、低レベルな制御も意識しやすい |
| 学習面の強み | メモリ、処理の流れ、CPUに近い考え方を学べる |
| 実用面の強み | OS、組み込み、ライブラリ開発などで使われる |
| 他言語との関係 | C系文法の言語を学ぶ土台になりやすい |
ポイントは、C言語が「古いから学ぶ」のではなく、今でも通用する基礎力が身につくから学ぶということです。
機械語とアセンブリ言語
この図は、同じ処理でも表現方法が違うことを示しています。
上の機械語はコンピュータ向け、下のアセンブリ言語は人間向けです。
特に注目したいのは、アセンブリ言語では MOV や ADD など、命令の意味が見える記号が使われている点です。これが、プログラミングを人間に近づける最初の大きな一歩でした。
FortranとCOBOL
この図は、高級言語になるとさらに読みやすくなることを示しています。
Fortran は比較的コンパクト、COBOL は手続きが構造的に書かれていて、用途に応じて言語設計が違うことも見えてきます。
つまりこの図は、単にサンプルを並べているのではなく、言語の進化と多様化を見せる図になっています。
ここまでのまとめ
最後に、今回の内容を整理しておきます。
まとめ表
| テーマ | 要点 |
|---|---|
| 機械語 | コンピュータが直接実行できるが、人間には難しい |
| アセンブリ言語 | ニーモニックで少し読みやすくなったが、CPU依存が強い |
| 高級言語 | 人間が書きやすくなり、開発効率が大きく向上 |
| Fortran / COBOL | 用途に応じて発展した代表的な高級言語 |
| C言語 | 高級言語の中でも、仕組み理解に強い重要な言語 |
この歴史の流れを知っておくと、これからC言語の文法を学ぶときに、
なんでこういう書き方をするんだろう? が、歴史と役割の視点から理解できるようになります。
