超マシン復活 #2 DEC TOPS-20 プログラム言語 その世界

超マシン復活#2

超マシン復活#2

TOPS-20 プログラミング言語の解説書

2020年3月、Amazonから『超マシン復活 #2 DEC TOPS-20 プログラム言語 その世界』という本を出版しました。

|d|i|g|i|t|a|l| DECSYSTEM 20
技術を極める知的冒険の旅へようこそ

 

本書は、レトロなOS TOPS-20で動作する11種類のプログラミング言語とその世界について記載したもので、超マシン シリーズの第2作となります。

プログラミング言語

プログラミング言語

 

表1: プログラミング言語の一覧
項番 言語 開発時期 対話型 一言説明
1 FORTRAN 1954年  No 科学技術計算向け言語
2 COBOL 1959年  No 基幹システムを支える言語
3 ALGOL 1958年  No アルゴリズム記述言語
4 Simula 1967年  No 初のオブジェクト指向言語
5 PASCAL 1970年  No 計算機科学の教育用言語
6 C 1972年  No システム記述の標準言語
7 SNOBOL 1962年  No 強力なテキスト処理言語
8 BASIC 1964年  Yes 思考を助ける対話型言語
9 LISP 1958年  Yes 関数型リスト処理言語
10 LOGO 1966年  Yes 思考方法を学ぶ教育用言語
11 FORTH 1971年  Yes パワフルなスタック型言語

TOPS-20は、DECのPDP-10マシンで動作するOSで、1970年代から1980年代にかけてUNIXと共に人気のあったOSです。従って、TOPS-20で動作する言語処理系は半世紀以上前に生まれた言語であり、21世紀の現在では使われていない言語もあります。

本書で紹介するプログラム言語は、いろんな時代背景で生まれそのユーザーと共に進化してきました。例えば、FORTRAN言語は科学の強力な道具となり、COBOL言語はデータ処理ユーザーに支えられ、C言語はUNIXと共に普及し、LISP言語は人工知能(AI)研究と共に進歩してきました。

本書では、11種類のプログラミング言語を取り上げています。その言語が注目された昭和の時代には日本語で解説した書籍がありましたが、現在は入手が困難です。そういう意味でも、本書は貴重な資料となります。

その言語を理解するには実際に使うことが早道です。例題によるサンプルコードでは、3つの共通例題について11種類のプログラミング言語で記述しています。従って、あるプログラミング言語を知らなくてもどのように記述すれば良いかが比較的簡単に理解できます。また、例題プログラムは本書を見ながらタイプしなくても、QRコードにより簡単に入手可能です。

プログラミング言語の世界の魅力は、本書だけでは語り尽くせません。TOPS-20ワールドは、ワクワクでいっぱいです。この本を出発点として、探究心と好奇心の扉を開いて技術を極める知的冒険の旅へ出発してください。

ソフトウェアの宝庫

偉大な先人が開発したTOPS-20は、歴史的に貴重なソフトウェアの宝庫です。

筆者は1976年から1977年の2年間に大学のDECSYSTEM-2040でTOPS-20を使いました。タイムシェアリング(TSS)方式でターミナルに向かってひとりで独占して使っているかのごとく対話方式で使えました。TOPS-20では、いろいろな言語処理系が動作していました。プログラミング言語の講義の他に、自分でマニュアルを読んでBASICやSNOBOLを使って遊びました。

 

本書のサンプル

本書の内容を紹介します。

第1章 超マシン復活

第1章 超マシン TOPS-20

第1章 超マシン TOPS-20

超マシンTOPS-20の復活について記述します。TOPS-20は、DECがPDP-10マシン向けに開発した基本ソフト(OS)で、Linuxで動作するKN10エミュレーターにより復活します。

1.2 エミュレーターで復活

1.2 エミュレーターで復活

第2章 Let’sプログラミング

第2章 プログラム言語

第2章 プログラム言語

『技術を極める知的冒険の旅』に出るために必要な予備知識を解説します。

また、本書で解説するプログラム例題について説明します。

例題A:時刻のAM/PM変換
例題B:斜方投射の軌道
例題C:階乗の計算

2.4 引数伝達方式

2.4 引数伝達方式

第3章 FORTRAN言語

第3章 FORTRAN言語

第3章 FORTRAN言語

史上初の高級言語であり科学技術計算を得意とするFORTRAN言語とその世界を紹介します。科学技術計算の世界では、重要な言語です。

3.1 科学技術計算向け言語

3.1 科学技術計算向け言語

第4章 COBOL言語

第4章 COBOL言語

第4章 COBOL言語

ビジネスの分野で使われて事務処理が得意なCOBOL言語とその世界を紹介します。企業の基幹システム構築に利用されています。

4.1 基幹システムを支える言語

4.1 基幹システムを支える言語

第5章 ALGOL言語

第5章 ALGOL言語

第5章 ALGOL言語

アルゴリズム(論理的な思考)の記述を得意とするALGOL言語とその世界を紹介します。アカデミックな世界で使われた先駆的な言語です。

5.1 アルゴリズム記述言語

5.1 アルゴリズム記述言語

第6章 SIMULA言語

第6章 SIMULA言語

第6章 SIMULA言語

オブジェクト指向という概念を生み出したSimula言語とその世界を紹介します。ALGOLに先進的な概念を組み込んだ革新的な言語です。

6.1 初のオブジェクト指向言語

6.1 初のオブジェクト指向言語

第7章 PASCAL言語

第7章 PASCAL言語

第7章 PASCAL言語

豊富なデータ構造と構造化した制御構造を持つPASCAL言語とその世界を紹介します。プログラミングの教育を目的とした読みやすい言語です。

7.1 計算機科学の教育用言語

7.1 計算機科学の教育用言語

第8章 C言語

第8章 C言語

第8章 C言語

高水準から低水準までカバーした万能ツールであるC言語とその世界を紹介します。アプリ、システム記述、組み込みシステムなどで使われる汎用性が高い言語です。

8.1 システム記述の標準言語

8.1 システム記述の標準言語

第9章 SNOBOL言語

第9章 SNOBOL言語

第9章 SNOBOL言語

強力なパターンマッチと高度なテキスト処理によるSNOBOL言語とその世界を紹介します。パターンプログラミングという魔法の言語です。

9.1 強力なテキスト処理言語

9.1 強力なテキスト処理言語

第10章 BASIC言語

第10章 BASIC言語

第10章 BASIC言語

思考を助ける強力な道具であるBASIC言語とその世界を紹介します。対話的にプログラミングできるので初心者でも使える言語です。

10.1 思考を助ける対話型言語

10.1 思考を助ける対話型言語

第11章 LISP言語

第11章 LISP言語

第11章 LISP言語

関数型言語でリスト処理の得意なLISP言語とその世界を紹介します。数学的な記法を実行可能にした言語です。

11.1 関数型リスト処理言語

11.1 関数型リスト処理言語

第12章 LOGO言語

第12章 LOGO言語

第12章 LOGO言語

体験と発見から思考方法を学ぶ教育用のLOGO言語とその世界を紹介します。使いやすくて非常に強力な言語で、思考を大きく増幅する道具です。

12.1 思考方法を学ぶ教育用言語

12.1 思考方法を学ぶ教育用言語

第13章 FORTH言語

第13章 FORTH言語

第13章 FORTH言語

仮想スタック・マシンで動作する一風変わったFORTH言語とその世界を紹介します。小さな核に拡張性を備えたパワフルな言語です。

13.1 パワフルなスタック型言語

13.1 パワフルなスタック型言語

付録F 例題プログラムのQRコード

本書のような電子書籍では、掲載したプログラムコードのコピペは困難です。
読者の皆さんが手軽に例題のプログラムを試せるように、プログラムコードをQRコードにしました。

付録F 例題プログラムのQRコード

付録F 例題プログラムのQRコード

付録F.10 LISP 例題C 階乗の計算 (BIGNUM)

付録F.10 LISP 例題C 階乗の計算 (BIGNUM)

超マシン復活 #2 コラム

本書は、プログラミング言語の説明だけではなく、所々にコラムをはさんでいます。コラムは、ちょっとした疑問、豆知識、こぼれ話などを書いていますので、読み物としても楽しめるでしょう。

【コラム】バロースとALGOL

バロースの大型機B5000は、スタックマシン型命令セットを採用して高級言語「ALGOL 60」向けに最適化しました。

バロースとALGOL

バロースとALGOL

【コラム】BNF記法とは

バッカス・ナウア記法(BNF:Backus-Naur Form)とは、ジョン・バッカス(John Backus)とピーター・ナウア(Peter Naur)がALGOL60の文法定義のために考案したメタ言語です。

BNF記法とは

BNF記法とは

【コラム】1バイトは何ビットか

あまり考えたことが無いと思いますが、1バイトは何ビットでしょうか?  そうです。バイトとは、1文字のビット数を表す単位です。

英数字(26+26+10文字)と記号を定義したASCIIコードで7ビット必要です。さらに、半角カナを追加したANKコードでは8ビット必要になります。

しかし、昔のコンピューターには、1バイトが6ビットや9ビットのマシンもありました。これらのマシンは、ワードサイズをいくつかに分割してバイトとしていました。本書で説明しているDECのPDP-10は、36ビットワードマシンなので、1ワードを6ビット×6文字や9ビット×4文字に分割して扱っていました。

1バイトは何ビットか

1バイトは何ビットか

【コラム】構文グラフとは

PASCALは、構文グラフで文法を定義しています。『アルゴリズム+データ構造=プログラム』[19]という書籍の付録に記載があります。

構文グラフとは

構文グラフとは

【コラム】DECとLISP

DECはLISPと深い関わりがあります。
なんとLISPの創案者であるマッカーシーがPDP-6マシン開発プロジェクトに参画していたのです。

DECとLISP

DECとLISP

【コラム】LISP S式とM式

現在のLISPプログラムは、S式(Symbolic-expression)という括弧が多く読みづらい表記法を使っています。しかし、ジョン・マッカーシーが最初にLISPを考案したときは、M式(Meta-expression)という表記法を使っており、S式はリスト構造を表現するデータ形式でした。

では、なぜLISPはS式で書くようになったのでしょうか。

LISP S式とM式

LISP S式とM式

【コラム】IBM 704の特別な命令

LISPを初めて実装したIBM 704は、36ビットワードマシンでした。そして、LISPの2つのポインターをAddressフィールドとDecrementフィールドに格納するよう実装しました。

IBM 704の特別な命令

IBM 704の特別な命令

【コラム】BBNとLOGO

BBNテクノロジーズは、MITで教授をしていたレオ・リロイ・ベラネック(Leo Leroy Beranek)らが設立した研究機関で、コンピューターサイエンス研究と革新的なアプリケーションにおいて重要な技術を創出しました。

BBNとLOGO

BBNとLOGO

【コラム】バロースとFORTH

FORTHを設計したMoore氏は、バロース*7の大型機B5500を使った経験からスタックアーキテクチャーに強い影響を受けました。

バロースとFORTH

バロースとFORTH

超マシン復活 #2 DEC TOPS-20 プログラム言語 その世界

『超マシン復活 #2 DEC TOPS-20 プログラム言語 その世界』は、ラズパイで動く超マシンシリーズ2です。

超マシン シリーズ
シリーズ  書 名
1 超マシン復活#1 DEC TOPS-20 レトロOSワールド
2 超マシン復活#2 DEC TOPS-20 プログラミング言語 その世界

本の情報

  • 超マシン復活 #2 DEC TOPS-20 プログラム言語 その世界
  • 2020年3月25日
  • フォーマット: Kindle版
  • ファイルサイズ: 55157 KB
  • 紙の本の長さ: 1082ページ
  • 出版社: 私の計算機科学研究
  • 販売: Amazon Services International, Inc.

 

目次

はじめに
第1章 超マシン復活
1.1 DEC TOPS-20の世界
1.2 エミュレーターで復活
1.3 システム設定
1.4 TOPS-20コマンド
1.5 知的冒険の旅
第2章 Let’sプログラミング
2.1 プログラミング言語
2.2 プログラムの宝庫
2.3 ビルドと実行
2.4 引数伝達方式
2.5 論理演算
2.6 プログラミング 例題
2.6.1 例題A:時刻のAM/PM変換
2.6.2 例題B:斜方投射の軌道
2.6.3 例題C:階乗の計算
第3章 FORTRAN言語
3.1 科学技術計算向け言語
3.2 FORTRAN 解説
3.3 FORTRAN の実行
3.4 FORTRAN の例題
第4章 COBOL言語
4.1 基幹システムを支える言語
4.2 COBOL 解説
4.3 COBOL の実行
4.4 COBOL の例題
第5章 ALGOL言語
5.1 アルゴリズム記述言語
バロースとALGOL
BNF記法とは
5.2 ALGOL 解説
1バイトは何ビットか
5.3 ALGOL の実行
5.4 ALGOL の例題
第6章 SIMULA言語
6.1 初のオブジェクト指向言語
6.2 SIMULA 解説
6.3 SIMULA の実行
6.4 SIMULA の例題
第7章 PASCAL言語
7.1 計算機科学の教育用言語
構文グラフとは
7.2 PASCAL 解説
7.3 PASCAL の実行
7.4 PASCAL の例題
第8章 C言語
8.1 システム記述の標準言語
8.2 C 解説
8.3 C の実行
8.4 C の例題
第9章 SNOBOL言語
9.1 強力なテキスト処理言語
9.2 SNOBOL 解説
9.3 SNOBOL の実行
9.4 SNOBOL の例題
第10章 BASIC言語
10.1 思考を助ける対話型言語
10.2 BASIC 解説
10.3 BASIC の実行
10.4 BASIC の例題
第11章 LISP言語
11.1 関数型リスト処理言語
DECとLISP
11.2 LISP 解説
LISP S式とM式
11.3 LISP の実行
11.4 LISP の例題
11.5 CARとCDR ルーツ探訪
IBM 704の特別な命令
第12章 LOGO言語
12.1 思考方法を学ぶ教育用言語
BBNとLOGO
12.2 LOGO 解説
演算子記法と関数型言語
12.3 LOGO の実行
12.4 LOGO の例題
第13章 FORTH言語
13.1 パワフルなスタック型言語
バロースとFORTH
13.2 FORTH 解説
13.3 FORTH の実行
13.4 FORTH の例題
13.5 FORTHのギミック
付録A マニュアル
付録B エディターの操作
付録C TOPS-20起動と停止
付録D アカウント登録
付録E 端末出力の制御
付録F 例題プログラムのQRコード
おわりに
参考文献
索引
改訂履歴
著者紹介
著者書籍 一覧
奥付

内容紹介

アマゾンの内容紹介を下記に示します。

プログラミング言語別に、次に示す内容を書いています。

* プログラミング言語の概要・特徴・沿革
* プログラミング言語の解説
* TOPS-20での実行方法
* 例題によるサンプルコード

本書は、11冊の解説書をセットにしたような書籍ですが、
それだけではありません。
同じ例題を11種類のプログラミング言語で記述しているので、
他の言語ではどのように記述するのかがわかります。

本書では、11種類のプログラミング言語を取り上げています。
その言語を理解するには実際に使うことが早道です。
例題によるサンプルコードでは、3つの共通例題について
11種類のプログラミング言語で記述しています。
従って、あるプログラミング言語を知らなくても
どのように記述すれば良いかが比較的簡単に理解できます。
また、例題プログラムは本書を見ながらタイプしなくても、
QRコードにより簡単に入手可能です。

■ TOPS-20の動作環境

本書では、Panda TOPS-20 Distributionを利用して
KLH10というPDP-10エミュレーターを使います。
そして、「TOPS-20 Monitor 7.1」を起動します。
Panda Distributionには、TOPS-20をインストールした
ディスク・イメージが付いています。
しかも、本書で説明する11種類のプログラミング言語も
インストール済みなので動作します。

■ 本書の主な対象読者

☆ ソフトウェア技術者をめざして情報技術を学ぶ学生
☆ 経験の浅い新人の技術者
☆ 経験豊富なベテラン技術者

■本書の目的

本書の目的は、レトロなOSであるTOPS-20で動作する
数々のプログラミング言語とその世界に触れることです。
新しい言語を学ぶことは新しい世界を広げることになり、
プログラマーとしての見識を広めてくれます。

プログラミング言語の世界の魅力は、本書だけでは
語り尽くせません。TOPS-20ワールドは、ワクワクでいっぱいです。
この本を出発点として、探究心と好奇心の扉を開いて
『技術を極める知的冒険の旅』へ出発してください。

 

超マシン 関連情報

『超マシン誕生』と『超マシン復活』

超マシン復活 #1 DEC TOPS-20 レトロOSワールド

超マシン復活 #1 DEC TOPS-20 レトロOSワールド (無料サンプル)