第1章で「なぜ高水準言語が必要とされたか」を見ました。本章では、その渇望に応えて1950年代に次々と生まれた 最初の高水準言語たちを訪ねます。わずか十数年のあいだに、科学計算・AI・事務処理・学術という 4つの異なる源流が出揃い、今日に至るほぼすべての言語の起点が形作られました。この10年は、 プログラミング史の「カンブリア爆発」とも呼べる時代です。

埋もれた先駆者 — Plankalkül と Short Code

実は、最初の高水準言語のアイデアは1940年代に生まれていました。ドイツのコンラート・ツーゼが 1942〜45年に設計した Plankalkül(プランカルキュール)です。代入、サブルーチン、条件分岐、ループ、 配列、さらには例外処理まで備えた、驚くほど先進的な言語でした。しかしナチス・ドイツ崩壊の混乱で論文は埋もれ、 完全な記述が世に出たのは1972年。当時いずれのマシンにも実装されず、歴史の本流には影響を与えられませんでした。

アメリカでは1949年、ジョン・モークリーらが Short Code を実装します。数式を理解しやすい形で書ける 「電子計算機で実際に使われた最初の高水準言語」でしたが、これはインタプリタ方式で、機械語の約50倍も遅いものでした。 1952年にはマンチェスター大学のアリック・グレニーが Autocode を開発。これはコンパイル方式で 直接機械語へ変換した点が画期的でした。役者は揃いつつありました。

FORTRAN(1957)— 高速性で懐疑論を覆す

決定的な転機が FORTRAN(FORmula TRANslation)です。ジョン・バッカス率いるIBMチームが開発し、 1957年4月にIBM 704ユーザーへ出荷されました。「最初の広く使われた汎用高水準言語」です。

当時、高水準言語には根強い懐疑論がありました。「コンパイラが吐く機械語は、熟練者の手書きアセンブリに性能で劣るに決まっている」。 FORTRANはこれを真っ向から覆します。世界初の最適化コンパイラを実装し、手書きアセンブリに匹敵する実行速度を実現したのです。 この一点が、高水準言語の時代の扉を開きました。

C     FORTRAN 77形式の Hello World(固定書式)
      PROGRAM HELLO
      WRITE (*,*) 'Hello, World!'
      STOP
      END

LISP(1958)— もう一つの宇宙

FORTRANが「数式を速く計算する」世界を切り拓く一方、ジョン・マッカーシーがMITで開発した LISP(LISt Processor)は、 まったく異なる宇宙を生み出しました。1958年に開発が始まり、画期的な論文 「Recursive Functions of Symbolic Expressions...」が 1960年4月に発表されます。

LISPは記号処理・AI研究のための言語で、現代から見ても革命的な概念を一度に導入しました—— 第一級関数、再帰、条件式、自動ガベージコレクション、そしてコードとデータを同じ括弧付きの式(S式)で表現する「同形性」。 FORTRANに次いで「現役で使われる2番目に古い高水準言語」であり、関数型プログラミングの源流です(第5章で深掘り)。

; LISP: すべてが括弧で囲まれたS式(前置記法)
(defun factorial (n)
  (if (<= n 1)
      1
      (* n (factorial (- n 1)))))   ; 再帰で階乗を計算

(format t "5! = ~a~%" (factorial 5)) ; => 5! = 120

COBOL(1959)— 英語のように書く事務処理

科学計算(FORTRAN)、AI(LISP)に続く第3の源流が、事務処理です。 銀行・保険・行政といった業務では、巨額の金額計算や帳票処理を、専門家でなくても読める形で書きたいという要求がありました。 ここで生まれたのが COBOL(Common Business-Oriented Language)。1959年に委員会 CODASYL が策定しました。

COBOLの哲学は徹底した「英語に近い可読性」です。記号より英単語を多用し、ビジネス担当者でも読めることを目指しました。 その背景には、グレース・ホッパーが手がけた FLOW-MATIC の「英語的プログラミング」思想がありました。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. HELLO.
       PROCEDURE DIVISION.
           DISPLAY "Hello, World".
           STOP RUN.

ALGOL 60 — 学術の標準が遺した文法

4つめの、そしてある意味で最も影響力の大きかった源流が ALGOL(ALGOrithmic Language)です。 米欧の計算機科学者委員会が設計し、ALGOL 60の報告書が1960年1月に刊行されました。 ALGOLは特定企業の製品ではなく、「アルゴリズムを論文で正確に記述するための言語」として設計された、学術的な共通語でした。

商業的には普及しませんでしたが、ALGOL 60が遺した文法的遺産は計り知れません—— ブロック構造のネスト、レキシカルスコープ、再帰サブプログラム、そして言語の文法を厳密に記述する記法 BNF(Backus–Naur Form)。これらはPascal、C、Java、JavaScriptへと脈々と受け継がれ、 ALGOL 60は「プログラミング言語ファミリーツリーの祖父」と呼ばれます。次章で扱う構造化プログラミングの土台もここにあります。

graph TD
  Z[Plankalkül\n1945 ツーゼ\n埋もれた先駆]
  SC[Short Code/Autocode\n1949-52]
  F[FORTRAN\n1957 科学計算\n最適化コンパイラ]
  L[LISP\n1958 AI/記号処理\nGC・再帰]
  C[COBOL\n1959 事務処理\n英語的構文]
  A[ALGOL 60\n1960 学術標準\nBNF・ブロック構造]
  Z -.influenced.-> F
  SC --> F
  F --> MODERN[今日の言語へ]
  L --> MODERN
  C --> MODERN
  A --> MODERN
  style F fill:#3b82f6,stroke:#1d4ed8,color:#fff
  style L fill:#8b5cf6,stroke:#6d28d9,color:#fff
  style C fill:#22c55e,stroke:#15803d,color:#fff
  style A fill:#f97316,stroke:#ea580c,color:#fff
  style MODERN fill:#14b8a6,stroke:#0d9488,color:#fff
1950年代に出揃った4つの源流。科学計算・AI・事務処理・学術という異なる目的が、それぞれ別の言語系統を生んだ

4つの源流という見取り図

この黎明期を一望すると、目的の違いが言語の性格を決定づけたことがよくわかります。

言語 目的 革新点 哲学を一言で
FORTRAN 1957 科学技術計算 最適化コンパイラで高速性を証明 数式をそのまま、しかも速く
LISP 1958 AI・記号処理 再帰・第一級関数・GC・同形性 コードもデータも同じ式
COBOL 1959 事務処理 英語に近い可読性、移植性志向 誰もが読める英語のように
ALGOL 60 1960 学術・アルゴリズム記述 ブロック構造・BNF・レキシカルスコープ 正確に、構造的に

Plankalkül 設計完成

ツーゼによる世界初の高水準言語。だが未公刊のまま埋もれる(完全公開は1972年)

Short Code

モークリーら。電子計算機で実際に使われた最初の高水準言語(インタプリタ型、低速)

A-0 と Autocode

ホッパーのA-0が「compiler」を命名。グレニーのAutocodeは初のコンパイル型言語

FORTRAN 出荷

IBM。最初の広く使われた高水準言語。最適化コンパイラで高速性を証明

LISP 開発開始

マッカーシー。翌1959年にガベージコレクションを発明。論文は1960年4月

COBOL 策定

CODASYL委員会。英語的な事務処理言語。FLOW-MATICの思想を継承

ALGOL 60 報告書

BNF・ブロック構造・再帰。後続言語の文法的源流。「言語ツリーの祖父」

たった4年(1957〜60)で、現代のプログラミングを支える主要な系統がすべて出揃いました。 あなたが今書いているコードも、たどれば必ずこの4本のレールのいずれか——あるいは複数——に行き着きます。 次章では、この中でも特にALGOLの遺産から始まった「構造化プログラミング革命」と、 歴史上もっとも有名なプログラミング論争「GOTO論争」に踏み込みます。

理解度チェック

問題 0 / 50%
Q1

FORTRAN(1957)が高水準言語への懐疑論を覆した最大の要因は何でしたか?

キーボード: 1〜4 で選択、Enter で回答