「再起動」すら死語になるかも知れないのだ


404 Blog Not Found:21世紀のコアメモリーより。

そんな時代のソフトウェアがどんな風になるのか。夢がひろがりんぐというものだ。


ちょ、それ、Smalltalk システム…(aka、ALTO で動いていた暫定的ダイナブック環境)。www って、立て続けにこんなのばっかでスミマセン。



ALTO の OS のひとつとして開発されていた「暫定ダイナブック環境」(Interim Dynabook。その実体は Smalltalk。1973-)は、その少し前(1969)に誕生していた UNIX(そしてその後登場した Mac や Win)とはちがって、ファイルシステムを原則として必要としない設計になっています(ソース管理とか、あとで述べる仮想イメージの扱いとかについて、例外はありますが…)。UNIX ライク OS では、データやプログラムの保持はファイルの役割ですが、暫定ダイナブック環境ではオブジェクトがそれを担っています。


改めて書くまでもなく、通常、ファイルは、ファイルシステムにより管理された補助記憶装置内にあり、適宜、メモリに読み込まれ、必要なら実行されます。対して、暫定ダイナブック環境において、オブジェクトは「オブジェクトメモリ」という、保存も実行も可能というくだんの“21世紀版コアメモリ”のような特徴を有することを想定された仮想デバイス上で管理されています。オブジェクトは、もうすでにメモリにあるので、お馴染みの「メッセージ」を送ることで活性化(それが保持するデータにアクセスできたり、プログラムを実行したり)できます。


UNIX ライクシステムの有り様は、補助記憶装置内でアクセス可能な“ファイルの組み合わせ”で決まりますが、暫定ダイナブック環境ではそれをオブジェクトメモリ内にありアクセス可能な“オブジェクトの組み合わせ”で決めることになります。前者における機能拡張は、ファイル(アプリケーションソフト)を入手してローカルな補助記憶装置に追加することで行なわれるところを、後者では、オブジェクトの定義を記述した Smalltalk コードを「ファイルイン」することでオブジェクトメモリ内に新しいオブジェクト(たいていはクラス)を生じさせることを介して行なうことと対応させられます(さらに前者について、より“ UNIX 的”には、ソースである C のコードを make して、新たな実行形式のファイルをローカルな補助記憶装置内に生じさせる…という作業に対応させれば、もっとぴったりくるでしょうか)。


なお、このような動作モデルによるため、暫定ダイナブック環境(パーソナルコンピュータ史の文脈では、一般にはたんに「ALTO」。これって大いに誤解を生みますよね…)では、“アプリケーションソフト”を実行可能ファイルから逐次、読み込んで起動する…という作業スタイルをとりません。アプリケーションソフトように見えるものはあるにはありますが、これらは、オブジェクトメモリ内にあるオブジェクトのアドホックな協働により機能します。



余談ですが、そんなわけで、Mac の特徴である Finder のようなものは、暫定ダイナブック環境には、そもそも必要とされませんでした。したがって、ウインドウやメニュー、テキスト表示(マルチスタイル)や編集方法(カット&ペースト)などのルック&フィールに関しては、その多くを Smalltalk から拝借してたたき台にしている Lisa/Mac も、こと Finder に限っては、完全に Apple のオリジナルだと考えてよさそうです。まあ Star システム(やはり暫定ダイナブック環境を大いに参考にして、しかし独自の哲学に基づき XEROX で開発された…)からの影響を云々する向きもあるようですが、Lisa 開発者は、一応、これを否定しています(関連:id:sumim:20050805:p2)。


余談ついでに、暫定ダイナブック環境にも「ファイルリスト」というファイラがありますが、昔の Windows Explorer にファイルエディタを合体させたような、いたってシンプルなものです。でも、今の Mac における Finder 的な役割は、このファイラよりむしろ「システムブラウザ」や「インスペクタ」が担っていたと解釈する方が自然でしょう。またこのことは、Mac の Get Info...(情報を見る)や Win の Properties(プロパティ)が Smalltalk のインスペクタを連想させることや、NEXTSTEPOS X の前身)の「ファイルビューワ」に Smalltalk のシステムブラウザを彷彿とさせる特徴的なルック&フィール(今の Finder の「カラム」表示モード)が採用されたことと、けっして無関係ではないはずです。


閑話休題。再起動の話でした。


もちろん実際には、ALTO でも、今と同じ、普通に電源を落とせば消えてしまうメモリを使っていたので「仮想イメージ」と呼ばれる“コア”(オブジェクトメモリ内情報のダンプ)はファイルとしてはき出しておく必要はありました。当然、次回使用時にも、この仮想イメージを読み込まなければなりません。でも、再起動というよりは休止状態からの復帰に近く、まったく同じ状態で作業を再開することができました。


Smalltalk-72(ごく初期のものは、起動時に必要な定義を読み込むブートストラップ方式を使っていましたが…、そのあと)から Smalltalk-76、そして Smalltalk-80 へと、大きなバージョンアップの際にも仮想イメージが受け渡された(そのまま、あるいは全部ではないでしょうが…)経緯を鑑みて、ちょっと大げさかもしれませんが、暫定ダイナブック環境は、1970 年代初頭から、現在の Squeak システムに至るまで、ほんの数えるほどしか「再起動」ということをしていない OS と考えることもできそうです。これはすごいことだと思いませんか?