プログラミング言語の宝庫
2020年3月、歴史的に貴重なDEC社 TOPS-20で「hello, world」をプログラミングしました。
TOPS-20は、DECのPDP-10マシンで動作するOSで1976年に誕生して1970年代から1980年代にかけてUNIXと共に人気のあったOSです。
TOPS-20では、多くのプログラミング言語処理系が動作していました。
TOPS-20で動作する言語処理系は半世紀以上前に生まれた言語であり、21世紀の現在では使われていない言語もあります。
項番 | 言語 | 開発時期 | 一言説明 |
---|---|---|---|
1 | FORTRAN | 1954年 | 科学技術計算向け言語 |
2 | COBOL | 1959年 | 基幹システムを支える言語 |
3 | ALGOL | 1958年 | アルゴリズム記述言語 |
4 | Simula | 1967年 | 初のオブジェクト指向言語 |
5 | PASCAL | 1970年 | 計算機科学の教育用言語 |
6 | C | 1972年 | システム記述の標準言語 |
7 | SNOBOL | 1962年 | 強力なテキスト処理言語 |
8 | BASIC | 1964年 | 思考を助ける対話型言語 |
9 | LISP | 1958年 | 関数型リスト処理言語 |
10 | LOGO | 1966年 | 思考方法を学ぶ教育用言語 |
11 | FORTH | 1971年 | パワフルなスタック型言語 |
これらのプログラミング言語は、いろんな時代背景で生まれそのユーザーと共に進化してきました。例えば、FORTRAN言語は科学の強力な道具となり、COBOL言語はデータ処理ユーザーに支えられ、C言語はUNIXと共に普及し、LISP言語は人工知能(AI)研究と共に進歩してきました。
今回のブログでは、コンパイラー型の項番1から6までの「hello, world」を紹介します。
「hello, world」のルーツ
「hello, world」は、多くのプログラミング言語の入門書で最初にプログラムの例として説明しています。
それは、プログラムが単純で理解しやすいという理由に加えて、言語処理系が正しくインストールされていることの確認、および言語処理系の使用方法を説明するという目的もあります。
「hello, world」のツールは、1978年に出版したC言語のバイブル書『The C Programming Language』(K&R)だと言われています。
日本語版は、共立出版社から『プログラミング言語C』(1981年)、『プログラミング言語C 第2版 ANSI規格準拠』(1989年)が発売になっています。
ソースファイルをhello.cに作成して「cc hello.c」でコンパイルするとa.outという実行可能形式を作成するので、「a.out」というコマンドで走らせると「hello, world」と表示します。
他のシステムでは、このやり方と規則は異なるでしょう。周囲の専門家に確認してください。
『The C Programming Language』では、「hello, world」のソースプログラムをUNIXシステムで使用する方法を説明しています。
本ブログでは、DEC TOPS-20での流儀を説明します。
FORTRAN言語
EDITコマンドで、HELLO.FORというソースファイルを作成します。
FORTRANプログラムのファイルタイプは「.FOR」です。
C234567
PROGRAM HELLO
TYPE *,'hello, world'
STOP
END
EXECコマンドで、FORTRANをコンパイルして実行します。
@exec hello.for
FORTRAN: HELLO
HELLO
LINK: Loading
[LNKXCT HELLO execution]
hello, world
CPU time 0.02 Elapsed time 0.03
COBOL言語
EDITコマンドで、HELLO.CBLというソースファイルを作成します。
COBOLプログラムのファイルタイプは「.CBL」です。
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DISP USAGE DISPLAY-7.
10 FILLER PIC X(12) VALUE "hello, world".
PROCEDURE DIVISION.
DISPLAY DISP.
STOP RUN.
EXECコマンドで、COBOLをコンパイルして実行します。
@exec hello.cbl
COBOL: HELLO [HELLO.CBL]
LINK: Loading
[LNKXCT HELLO execution]
hello, world
ALGOL言語
EDITコマンドで、HELLO.ALGというソースファイルを作成します。
ALGOLプログラムのファイルタイプは「.ALG」です。
begin
write("hello, world");
end
EXECコマンドで、ALGOLをコンパイルして実行します。
@exec hello.alg
ALGOL: HELLO
LINK: Loading
[LNKXCT HELLO execution]
hello, world
End of execution.
SIMULA言語
EDITコマンドで、HELLO.SIMというソースファイルを作成します。
SIMULAプログラムのファイルタイプは「.SIM」です。
begin
OutText("hello, world");
outimage;
end
EXECコマンドで、SIMULAをコンパイルして実行します。
@exec hello.sim
SIMULA: HELLO
LINK: Loading
[LNKXCT HELLO execution]
hello, world
End of SIMULA program execution.
CPU time: 0.01 Elapsed time: 0.01
PASCAL言語
EDITコマンドで、HELLO.PASというソースファイルを作成します。
PASCALプログラムのファイルタイプは「.PAS」です。
program HELLO(output);
begin
writeln('hello, world');
end.
EXECコマンドで、PASCALをコンパイルして実行します。
@exec hello.pas
PASCAL: HELLO
LINK: Loading
[LNKXCT HELLO execution]
OUTPUT :
hello, world
C言語
EDITコマンドで、HELLO.Cというソースファイルを作成します。
Cプログラムのファイルタイプは「.C」です。
#include <stdio.h>
int main(void)
{
printf("hello, world");
}
EXECコマンドで、Cをコンパイルして実行します。
@exec hello.c
KCC: HELLO
HELLO.PRE.1
HELLO.FAI.1
FAIL: HELLO
LINK: Loading
[LNKXCT HELLO execution]
hello, world
TOPS-20の魅力
UNIXや多のほとんどのOSでは、プログラミング言語ごとのコンパイルコマンドがあり、コマンドを使い分けなければなりません。
しかし、TOPS-20はプログラム言語別のコンパイルコマンドを使わなくても、EXECUTEコマンドだけでコンパイル・リンク・実行をします。
ファイルタイプにより適切なコンパイラーを選択してくれます。
ソースプログラムを編集してビルド・実行を繰り返す場合は、ファイル名は省略可能です。
EDITコマンドとEXECUTEコマンドを使うだけですみます。しかも、コマンドは省略名で入力できますので、ED、EXと短く入力することが可能です。
ユーザーは短いキータッチでプログラミングに集中できます。TOPS-20の設計哲学である『システムを学びやすく使いやすいものにする』が活きています。
TOPS-20 プログラミング言語の解説書
「hello, world」を実行できたら、もう少し複雑なプログラムを書いてみませんか。
プログラミング言語の詳細な解説や言語処理系の使い方は、『超マシン復活 #2 DEC TOPS-20 プログラム言語 その世界』という書籍を参考にしてください。
技術を極める知的冒険の旅へようこそ
プログラミング言語の世界の魅力は、この書籍だけでは語り尽くせません。TOPS-20ワールドは、ワクワクでいっぱいです。この本を出発点として、探究心と好奇心の扉を開いて『技術を極める知的冒険の旅』へ出発してください。
超マシン 関連情報