InfoPress

InfoPress

産業技術大学院大学(公立大学法人 首都大学東京) 情報アーキテクチャ専攻 Web版InfoPress [社会人大学院][東京都品川区][IT]

1969年の話

1969年生まれの皆さんはもうすこしで50歳、正確には今年で47歳です。1969年は、くしくもUnixARPANETが産声をあげた年です。

  • Unix: 現在のOSの1つの起源
  • ARPANRT: インターネットの起源

また、1969年には米国のアポロ11号で歴史上初めて人類が月面に到達した年でもあります。ソフトウェア危機、ソフトウェア工学という言葉が広まったのが`1968年、インテル集積回路による4004 CPUを開発したのが1971年であり、現在のITを実現するハードウェア、ソフトウェアはこの頃から急激に発展を遂げていきます。今回は1969年のアポロ11号の誘導ソフトウェアのソースコードGitHubに公開されていたので、この話題と、1969年ということで折角だからUnixARPANETの話も書きたいと思います。

アポロ11号

アポロ11号は1969年7月20日に人類初の月面有人着陸を果たしました。アポロ11号には誘導・制御のためにAGS(Apollo Guidance Computer)が搭載されていました。AGSの性能はファミコンの1/10とも言われています。AGSのDSKYインタフェースは次の写真の通りで時代を感じます。

■AGS(Apollo Guidance Computer)のDSKYインタフェース http://www.lakecountyspaceport.com/image/71506937.jpg

これで本当に月面着陸できたのでしょうか。すごいですね。アポロ陰謀論が出てくるのも頷けます。

AGSの誘導ソフトウェアのソースコードは以下のGitHubで公開されています。

ソースコードアセンブリ言語で書かれていますので、拡張子は.sです。MS-DOSの時代には.asm等が使われることもありましたが、Unixでも.sが使われます。当時の高級言語FortranCOBOLLisp、BAISCぐらいの頃ですから、何も根拠はありませんが、.sはソースのsに由来しているでしょうか。

関連記事はこちら。

Unix

Unixの開発は1969年に始まりました。1971年当時のV1のソースコードは以下で参照することができます。

■ V1(1971年)
http://minnie.tuhs.org/cgi-bin/utree.pl?file=V1

当時の開発マシンは次の写真のPDP-11です。ディスプレイが無いことに気が付きましたか。このころ、ブラウン管のディスプレイというか端末が無かった訳ではありませんでしたが、まだ珍しい頃です。VT100の初期型のVT05が登場したのが1970年です。したがって、Unixの各コマンドは概して寡黙ですが、寡黙である理由はこの環境に起因します。

https://goo.gl/jY8R4F

また、Unixは移植性の高いOSという評判でしたが、Unixの移植性が高い理由は以下の3段階に区切ることができます。

  • 1973年: V3は、C言語高級言語)で書かれ、ソースコードが配布されていた。
  • 1988年: 4.3BSD-Tahoeで、ハードウェア依存コードが整理された。
  • 1989-1995年: NET/1から4.4BSD-Lite2で、AT&T Bell Labs由来のコードから独立したコードを配布する努力が行われた。

要するに現在の感覚での移植性の高さが実現されたのは1988年以降ですが、当時の移植性の高さという評判は、C言語という高級言語で書かれ、ソースコードが事実上公開されていたということだけによってもたらされ、しかし、結果として、Unixは各種のハードウェアに移植されました。

しかし、V1はまだAGSのコード同様、アセンブリ言語で書かれ、拡張子は.sです。1992年にはC言語が開発され、V2のいくつかのコマンドはC言語で書かれてます。

■ V2(1972年)
http://minnie.tuhs.org/cgi-bin/utree.pl?file=V2
■ 実装に関するドキュメント(1972年)
http://minnie.tuhs.org/Archive/PDP-11/Distributions/research/Dennis_v1/PreliminaryUnixImplementationDocument_Jun72.pdf
■ The Evolution of the Unix Time-sharing System(1979年)
http://www.read.seas.harvard.edu/~kohler/class/aosref/ritchie84evolution.pdf

Unix及び関連OSのソースコードは以下から参照できます。AT&T Bell Labs由来のいわゆるResearch Unix以外に、BSD4.4等の各種BSDOpenSolarisMinix、Xinu、Linux等のソースコードも参照できます。

■ The Unix Tree
http://minnie.tuhs.org/cgi-bin/utree.pl

実際にUnixソースコードを眺めたいというのであれば、「Lions’ Commentary on UNIX」等の教科書が存在するV6ぐらいが手頃ですが、

Lions’ Commentary on UNIX (Ascii books)

Lions’ Commentary on UNIX (Ascii books)

V5のコードも、K&R以前のCを感じることができて趣があります。

■ V5のchmod.c
http://minnie.tuhs.org/cgi-bin/utree.pl?file=V5/usr/source/s1/chmod.c

ARPANET

現在のインターネットは約50億台の機器が接続され、現代社会に欠くことが出来無い情報インフラとして一般に広く普及していますが、 インターネットの起源として参照されるARPANETは、1969年に米国西海岸の4大学(UCLA、SRI、UCSB、Utah)の4台が相互接続されたことから始まりました。

http://www.thocp.net/reference/networks/pictures/1969_4-node_map.gif

現在のプロトコルTCP/IPですが、当時のプロトコルはNCP、速度は50Kbpsでした。現在、インターネットはまさに各社のハードウェア、OS、ソフトウェアが混在するヘテロジニアス環境ですが、ARPANETは1969年当時から3社4機種のヘテロジニアス環境から始まっています。

また、インターネット発展の過程ではBSDUnixが深く関係し、また現在でもインターネット基盤にはBIND等のBSD起源のソフトウェアが多数使われています。このあたりの話はまた次の機会に。