今日はビル・ジョイの誕生日(1954)。
漢字では美流上位、と書くそうです。ハッカーは漢字文化好きね。甘酢苦瓜の話とかね。
…彼が何者であるかを書く前に答えを出してしまいましたが、高名なハッカーの一人です。
ハッカーって、犯罪者の意味ではなく、プログラムの天才の意味ね。
ビル・ジョイは大学院生の時に、ほとんど一人で BSD を開発し、世界初のスクリーンエディタである vi を作り、高機能シェルである csh を作り、TCP/IP の実装を作り上げました。
卒業後はサン・マイクロシステムズの16人目の社員になりますが、16人目であるにもかかわらず「共同設立者」という待遇で、NFS を作り、SPARC の設計に関与します。
…コンピューターマニアなら、これだけで大天才だとわかると思いますが、ひとつづつ説明した方がよいでしょうね。
まず、BSD というのは、UNIX の方言の一つです。
UNIX という OS は、AT&T のケン・トンプソンが趣味で作ったものです。
AT&T は当時はアメリカの特別な会社で、法律で定められた事業しかできませんでした。
そのため、UNIX は商売にはなりません。ケン・トンプソンは UNIX のソースコードを教育機関向けに無償公開、カリフォルニア大学バークレー校にケン自身が出向き、UNIX の使用方法などの講義を行います。
ソースコードが公開されましたので、バークレー校ではこれをもとに OS の仕組みなどの研究を行います。
そして、独自に「あったら便利な機能」を次々と追加し始めました。
ちょうどその頃、ビル・ジョイはバークレー校の大学院に入学します。
そして、各々勝手に機能追加していたものをまとめ上げ、ビル自身も改良を加え、元の UNIX とはかなり違うものを作り上げます。
この UNIX は、AT&T の UNIX の使用が許諾されている教育機関に配布されます。
この配布の際、バークレー校が手を加えたことを示すため、Berkeley Software Distribution (バークレイによるソフト配布)と明記されました。この頭文字が BSD 。
当初は BSD UNIX と呼ばれていましたが、後に AT&T が分割され、法律による規制が解除された際に、AT&T が UNIX の配布を始めたため、UNIX の商標が使えなくなりました。
このため、現在では単に BSD と呼ばれます。
いまでは UNIX として有名なのは Linux です。
しかし、Linux のコマンドのほとんどは、BSD から持ってこられたものです。
そのため、UNIX の(見た目上の)方言としては BSD に似通っています。
UNIX の頃は、まだコンピューターをテレタイプ端末で使うのが普通でした。
PDP-1 にはすでにディスプレイが付いていたのに、PDP-11 になってもこれはまだ「特別な」デバイスだったのです。
UNIX は PDP-7 で開発され、その後 PDP-11 に移植され、BSD は PDP-11 版をもとに改良されました。
でも、まだプログラムはテレタイプだったのです。
テレタイプを使うと、キーボードで入力した文字を、紙テープに2進数でパンチできます。
これでプログラムを記述します。もし打ち間違えがあった場合は、文字単位で「消去」することも可能ですが、間違えた行を紙テープ上から消し去ってしまったほうが簡単です。
方法は簡単。間違えたところで紙テープに印をつけて置いて、気にせず入力を続けます。
あとで印を探して、その行をハサミで切り取り、セロテープで貼り着ければ編集完了。ちゃんと読み込めます。
テレタイプは、直接コンピューターに文字を送ることもできましたし、上に書いたように紙テープに長い文章を入れておき、まとめて送ることもできました。
ビルジョイは、プログラムを cat コマンドで書いていた、と言う逸話があります。
cat > prog.c
ですね。この後に「1文字も間違えずに」入力を行えば、プログラムファイルを作ることができます。
大天才だからそれができた、と言う文脈で語られるのですが、おそらくは紙テープから送り込んでいたのでしょう。種明かしをすれば「なーんだ」と言う話。
UNIX では、コンピューター上でファイルを編集する方法も用意されていました。
テレタイプを使って、「エディタ」にファイルを読み込むように指示をしたうえで、何行目の何文字目を編集するか指示します。
するとその行がタイプライターで印字されます。編集する文字を入れると、再度編集後の行が表示されます。
間違いがなければ確定します。
行ごと削除したり、行を挿入したりすることもできました。
あまり大きな変更の場合、一度ファイルを紙テープに出力し、紙テープ上で編集した方が速いかもしれません。
しかし、簡単な手直しをコンピューター上で行える、と言うのは便利でした。
ビルジョイはこのエディタを改良し、PDP-11 に接続されていたディスプレイ端末で編集を行えるようにします。
ディスプレイ端末とは、テレタイプを模倣し、紙に印刷をする代わりにテレビ画面に文字を出力する端末のことです。
テレタイプでは1文字毎に文字が送られましたが、ディスプレイ端末では改行時に1行分の文字が送られるため、改行するまでは端末上で文字の編集が可能でした。
ビルジョイは、このディスプレイ端末の特性を活かし、エディタを改良します。改良エディタなので、 EX エディタと名付けられました。1976年には開発されていたようです。
これは、従来のテレタイプ端末での使用も考慮した、1行単位の編集を行うエディタです。
ただ、ディスプレイ端末で使用した際に使うと便利な「ビジュアルモード」というおまけがつきました。
ビジュアルモードでは、指定した行を表示・編集するだけでなく、前後の数行を表示できます。
これにより、目的の行を探すのが容易になりました。カーソルを上下に動かし、そのまま編集を始めることができます。
EXエディタは、BSD の最初の配布で広まります。1978年3月のことでした。
この1年後、1979年3月の BSD 配布では、ビジュアルモードを中心としたエディタにつくりかえられています。
これが世界初のスクリーンエディタ、vi でした。(vi は VIsual モードから取られています)
いまでは、エディタと言えばスクリーンエディタのことです。しかし、すべては vi から始まっています。
現在では、vi とほぼ同等の機能を持ち、さらに拡張した vim エディタが有名です。
#この記事を公開後、vi は世界初のスクリーンエディタではないのではないか、という指摘がありました。
なかなか興味深いものでしたので、調査して別記事に書きました。
…功績はいっぱいあるのに、2つ紹介したところで予定行数に近づいているな。
後はペースを速めましょう。
csh 。
シェルと言うのは、UNIX でユーザーが作業をするためのプログラムです。
Windows でいえば Explorer (ファイル管理を行い、アプリケーションを起動するプログラム)に当たります。
UNIX は、当初 sh と呼ばれるプログラムが使われていましたが、csh は根本から作り直し、C 言語風のプログラムを解釈できるようにしたものです。
さらに、過去に使った「コマンド」を簡単に呼び出せたり、文字列の一部を正規表現で変更できたり、いろいろと便利な機能が付いています。これらは sh にはない機能でした。
その一方で、csh は大きなプログラムを作るのには適しません。せっかく C言語風の構文を備えているのに、関数を作ることができないためです。
BSD 系のシステムでは、昔は csh や、その拡張である tcsh が標準になっているものが数多くありました。
しかし、現在は sh の拡張である bash などがよく使われています。
ただね、csh / tcsh は、コマンドラインで数行のちょっとしたプログラムを組む時には、bash よりも便利なことが多い。
ディレクトリの中の全てのファイルを一定の決まりに従ってリネーム、とか、その程度の処理ならね。
だから僕は、普段は bash で作業をしていますが、時々 tcsh に切り替えたりします。
TCP/IP。
現在のインターネットの根幹を支える技術です。
元々、UNIX にはネット機能はありませんでした。BSD でネット機能が追加され、その研究の中で TCP/IP というプロトコルが策定されます。
TCP/IP を扱うプログラムは、非常にややこしい上に信頼性が求められたため、外部業者に作成が委託されたそうです。
しかし、出来上がってきたものは、確かに動くし信頼性もありそうなのだけど、動作の遅いものでした。
TCP/IP は根幹部分なので、この部分の動作が遅いとネット―ワークすべてが遅くなってしまいます。
そこで、満足できないビル・ジョイは、大幅に書きなおして性能を上げてしまったそうです。
NFS。
ネットワークファイルシステムです。ネットワークに接続された別のマシンのハードディスクを、自分のマシンのハードディスクのように使える技術。
Windows や Mac でも、他のマシンのハードディスクを使える技術はあります。でも、最初のアイディアは NFS。これがあまりにも便利で、UNIX では広まったので、Windows や Mac でも取り入れられたの。
一時期は一世を風靡した CPU です。RISC の初期のもので、非常に高速でした。
ビル・ジョイが「高速な CPU が欲しい」というので設計が始まったらしいのですが、実際の設計は別の人。
ビルはソフト屋ですから、回路設計は出来なかったのではないかな。
多分、ビルのここでの仕事は、ソフト屋として必要な命令セットを決めたりする作業でしょう。
サンの話もしようと思っていたけど、長くなりすぎるからここでおしまい。
ビル・ジョイが作ったプログラムのうち、有名なものに限った説明だけでこんなに長くなるとは…
まぁ、そんだけすごい人だと言うことです。
同じテーマの日記(最近の一覧)
関連ページ
チキンラーメンの誕生日(1958)【日記 14/08/25】
A Dark Room , Candy box! , Cookie Clicker.【日記 15/07/01】
デイビッド・パターソン 誕生日(1947)【日記 15/11/16】
マーシャル・カーク・マキュージック 誕生日(1954)【日記 16/01/19】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |