2016年02月11日の日記です


世界で最初の{弓括弧}  2016-02-11 00:26:46  コンピュータ 歯車

Twitterでフォローしてる人が、「弓括弧 { } が使えるキーボードを持った最初のマシンはどれだろう」という質問を投げかけた。

TK-80BS や APPLE II にはなかった、という注釈付きで。


たちまちいろいろな意見が集まった。見ていて面白い。

是非参加しようと思って、自分が知っている中で一番古い、キーボードを持つマシン…Whirlwind I と、 TX-0 の資料をあさってみた。


この2機種は、ともに Friden 社の Flexowriter というテレタイプが接続されている。

そして、当時は ASCII コードの制定前。使える文字の種類も、今よりずっと少なかった。


Whirlwind I は、弓括弧は使えなかった。

じゃぁ、TX-0 は?…とおもったら、2種類のテレタイプが繋げられていたようで、そのうち片方では使える。


正確にいえば、1959年に改造して使えるようになった


弓括弧だけでなく、Σとかαβγや、⊂☞などの記号も使える。

一方で、アルファベットは大文字だけで、小文字は使えない。


その人に報告した。


で、報告ついでに再び Twitter の会話を見ると、C言語の祖先でもある BCPL ではブロックを示すのに弓括弧を使うけど、当時はまだ弓括弧が使えないのが普通だったのではないか、との疑問が質問の意図だった。



BCPL は ALGOL 系の言語で、ALGOL はプログラムをひとまとまりにした「ブロック」を多用するのが特徴。

ALGOL では BEGIN ~ END でブロックを示した。後の Pascal なんかでも同じ。


でも、BCPL は最初に弓括弧でブロックを示した言語で、後にC言語も同じ方法をとる。

今ではこちらの方法のほうが主流だ。



そして、BCPL は 1970 年ごろ。TX-0 は1960年ごろ。

ちょっと時代が違うか。報告はしたものの、あまり関係なかったかな。




返事が返ってきた。

これは、数式の印字専用かもしれませんね、との感想。


うん。僕もそんな気がする。BCPL の謎を追っている、ということなので、あまり関係なかったかな。


でも、僕もこのテレタイプが何のために作られたのか気になり始めた。


再び調べてみる。

先にリンクしたのだけど、改造した際の文書によれば、TX-0 の後継機である TX-2 用に作られたものだそうだ。

TX-0 / TX-2 は MIT のリンカーンラボで作られたのだけど、別資料によればリンカーン Flexowriter とも呼ばれているようだ。


じゃぁ、そこら辺をキーワードにググってみる。


「The Lincoln Keyboard - a typewriter keyboard designed for computers imput flexibility」


というタイトルの論文が見つかった


コンピューターを柔軟に使うためのキーボード。大きく出たじゃないか。


でも、論文の中身が読めないので、なんに使おうとしたのかさっぱりわからない。


#翌日追記。上の論文、1ページだけで、別ページで公開されていました。

 リンク先もそのページに切り替えています。


 1958/6/1 に公表されたもので、定義した記号の実際の使われ方の例も挙げています。

 主な仕様用途としては「プログラムを書く際や、コミュニケーションをする際に、記号が多い方が便利だから」。




こちらはこれ以上先に進めないので、別方面を調べる。

TX-0 のあとの歴史を追ってみよう。


TX-0 の製作者は、TX-0 に熱中する学生を見て、これが商売になると直感し、DEC 社を起こす。

最初の製品 PDP-1 は、TX-0 をプロトタイプとして作り出されたものだ。


でも、PDP-1 は普通の Flexowriter が接続された。リンカーン Flexowriter ではなく、弓括弧は使えない。


PDP-1 の後継は PDP-7 で、UNIX が最初に作られたマシンだ。

PDP-7 の資料を読むと、ASCII コードを前提として作られているのだけど、テレタイプ社の ASR33 というテレタイプが標準だ。

テレタイプの都合で、弓括弧は使えない。


UNIX が移植され、C言語が作られる PDP-11 では、完全に ASCII コードの時代になっている。

テレタイプもアスキーコードで、すべての文字が入れられるのが前提。

多少キーボードの配置は今と違ったようだが、弓括弧も使えたようだ。



特に手がかりはないな、と思って元の Twitter のスレッドを見ると、ASR37 というテレタイプでは弓括弧が使え、ケン・トンプソンは PDP-7 に ASR37 を接続して UNIX を作ったという調査を書いている人がいた。


なるほど。ASR37 ではもうすべての記号が使えるのか。


…でも、それは話が違う。


元の話は、BCPL で弓括弧が使えた理由、なのだ。UNIX の時にはすでに BCPL を簡略化してB言語としているのだから、その前にどこかで弓括弧が使えたはずだ。


#B言語が発展したのがC言語。




TX-0 に繋げられたキーボードは、もともと TX-2 用に作られた特殊なものだった。

じゃぁ、ちょっと TX-2 を調べてみよう、と思ったら、いきなり TX-2 用の BCPL マニュアルが見つかった。


え? なんで?

TX-2 って、BCPL 作られるよりかなり前のマシンだと思うのだけど、BCPL の移植があったの?


しかもこれ、BCPL の発表が行われた年のうちに移植されている。

あまりにも速い。



ここに来てやっと、BCPL を洗い出してみよう、という気になる。


BCPL は、イギリスのケンブリッジ大学で開発されたはずだ。

遠いアメリカに、すぐに移植されるとは思えない。


ここで、思いもよらない事実を知る。


BCPL の作者、マーティン・リチャーズはケンブリッジ大学の人だけど、MIT を訪問しているときに BCPL を作ったという。


BCPL を作ったのは、プロジェクト MAC で作られた、IBM 7094 上の CTSS 上。

世界最初の「マルチタスク・マルチユーザー環境」で動作するソフトウェアだった。


しかし、IBM 7094 には、標準接続のテレタイプがない。

当たり前だ。当時の IBM はバッチ処理専門で、人が直接操作するようなことは考えていないのだ。


でも、プロジェクト MAC は実験プロジェクトとして、IBM 7094 に複数台のテレタイプ端末を接続し、ユーザーが直接使用していた。



ところで、プロジェクト MAC は、リンカーンラボも関与している。

そしてどうやら、ここで使われたテレタイプ端末が、TX-2 用のリンカーン Flexowriter だったようなのだ。




つまり、そういうことなのだ。

TX-0 で弓括弧が使えた、というのは、BCPL の話題からは的外れだったな…と思っていたのだけど、調査したらそれこそが大当たりだった。


相変わらず、TX-2 用の特殊テレタイプが何のために考案されたのかはわからない。

数学の式を出力するためだったかもしれない。



でも、BCPL は、このテレタイプを前提に設計された。

普通のテレタイプには存在しない波括弧があったから、それを「ブロック」を示すのに使用した。


BCPL の開発は 1967年からで、1969年に発表されたらしい。

そして、TX-2 への移植版も、同じ年に作られている。実際には同時並行で作られていたのだろう。


となると、文法的にも類似と思われる。

Σとか∧∨などの、非アスキーコード文字が普通に使われている。


BCPL は基本的にアルファベットの大文字を使い、小文字を使わない。これも、リンカーン Flexowriter による制約だったのだろう。


僕は現代の…アスキー文字だけで書く BCPL の文法を知らないので比較できないのだけど、知っている人は比較したら面白いと思う。



2016.2.13 追記


上に書いてあること、いくつか間違いがありました。


まず、CTSS で開発された BCPL では、リンカーン Flexowriter を使っていません。

そのため、{ } を使うこともできず、TX-2 版 BCPL とは記号の使い方が大きく異なっていました。


最大の間違いは「BCPL は { } を最初に使った言語である」という点。

この記述自体は間違えていないのですが、正しくもありません。


詳細は、訂正記事としてまとめています


#いつものように、訂正記事のほうが長いです。




同じテーマの日記(最近の一覧)

コンピュータ

歯車

関連ページ

ボブ・バーマー 誕生日(1920)【日記 17/02/08】

世界最初のドメイン登録(1985)【日記 17/03/15】

クリストファー・レイサム・ショールズの誕生日(1819)【日記 16/02/14】

BCPLについて、訂正【日記 16/02/13】

ニクラウス・ヴィルト 誕生日(1934)【日記 16/02/15】

別年同日の日記

03年 海のチーズケーキ

04年 衝動買い

17年 リチャード・ハミング 誕生日(1915)


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

6000

-- follow --




- Reverse Link -