第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つの源流という見取り図

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

言語目的革新点哲学を一言で
FORTRAN1957科学技術計算最適化コンパイラで高速性を証明数式をそのまま、しかも速く
LISP1958AI・記号処理再帰・第一級関数・GC・同形性コードもデータも同じ式
COBOL1959事務処理英語に近い可読性、移植性志向誰もが読める英語のように
ALGOL 601960学術・アルゴリズム記述ブロック構造・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 で回答