2003年9月13日

Javaが生まれる前の話


1988年12月14日に行われた東京大学大型電算機センター会議室でのBill Joyの講演のメモ
Edited 13-SEP-2003 by Kenji Rikitake 力武 健次
(1988年12月14日に紙に書いた私的メモを編集したもの)

From V7 to Phase-3 (メモ原文ではΦ-3)
   The evolution of UNIX
   7 from AT&T (Sys V rel 3)
   7 from BSD (4.3)
Phase-3: restructured UNIX
   20年前とは基本的構造は変わっていない
MULTICSから3つのideaしか使っていない
  Processes : "GENIE" / Ken Thompson
  File System : KT (Ken Thompsonのことと思われる)
  Pipes: McIlroy
Shell以上がけっこう複雑になっている

その後の改造
   VAX-11/780
      virtual memory
      keep PDP-11 model
      paging is invisible
        → 3BSD 1979
   Local Area Networks
      Ethernet
      TCP/IP
      model of sockets
        → 4BSD 1981
Problems
   No "tenex" pmap functionality → mmap() ← 載らず
   Communications is asynchronous → select() ← まだ不十分

New technologies -> New system facilities -> Larger O/S

Trends

   1. Minis -> WSes & Servers ⇒ NFS
   2. Library Complexity      ⇒ Dynamic Linkage
      -> back to MULTICS

Graphics and Windowing -> complicated
   5 kinds of graphics
      X11 PHIGS PostScript Renderman & what? (image processing)

Current UNIX:
   Applications: Communication が不足
   Unix Kernel:  networking 1M lines
                 original 200K lines
   Graphics: 1M lines

4 Application Styles
   main(): App.
   sleep(): Traditional Kernel
   Networking
   Graphics
   ⇒ The single paradigm:
         No Concurrency/Parallel Programming
         Too Complex

New Central Concepts
   Mach -> ports & RPC -> first bigger -> next smaller
     --> HUGE DEFICITS ("first cut taxes" ではだめ)
   ⇒ UK(英国)みたいに <first cut spending>

Sun's Approach:
   Focus on applications: one programming environment
     Concurrency / C++ / Shared memory / Fiber optics
   ⇒ Making UNIX be an application

Status of the nre project:
   Nucleus (wnj: assembler (Microcode)) ... 1 sys call
   Language (mitchell, powell... ) ... C++++-=
   Services (gingell, ...) ... UNIX, networks...

Key will be success of language

C++ ++ -= ⇒ implemented in ANSI C ⇒ SPARC (microcode)
    ++:      concurrency / parameterized types / garbage collection
       -=:   general complexity (unsafe function ⇒ ANSI C で書け)

Summary:
   Phase 3 is RISC for OS
   RISC relative to Applications
   Not a OS kernel; applications platform!
   This is first public talk -> do work, not promote.

-----

Cross examination or Q&A session

UNIXとのコンパチビリティはどうか?
→上位OSで確保する

C++とObjective-Cは?
→どっちも生産性向上のためのツールである
  C++を使っている

フォールト・トレラント性はどうするつもりか?
→オブジェクト指向ならば各オブジェクトのコピーは楽である.
  これを利用してシャドウ・ディスクを作れる.

多言語での可能性は?
→ほとんどの言語はinterpreterである.
  良いinterpreterはむつかしい.

SPARCの命令は今後拡張されるか?
→固定している.整数乗算や64bit長についてでさえ議論が行われているが,
  これからどうなるかはもっと若い人にまかせたい.
  5000ゲート+レジスタ・ファイルでしかないから,改造は楽である.
  いずれにせよ,386みたいにやればインテルに告訴されるだろうが,
  SPARCではそんなことはせず広めていきたい.
  ハードウェア記述言語が米国の大学では開発されており,
  それをつかってSPARCを作れる.それにはスーパーコンピュータが
  必要であろう.(逐次探索でやるしかない)

SPARCのコンテキストスイッチングはおそい.
→全部レジスタを変える必要があるかどうかは,統計的な問題である.
  言語の複雑さにもよるであろう.

OSと言語との関係は?
→UNIXではCのmain()の世界で生きる.しかしこれだけではgraphicsなどには
  対応できる環境がない. C++++-= ではこれらに対応できる環境を提供する.
  さらに一つでやりたい.

グラフィクス以外の音声などのメディアは?
→リアルタイムOSに近くしたいと思う.
  (レスポンスの時間が予測できるようにしたい)
  そのためには非常に速いマシンが必要である.
  小手先の対応では対処できない.

DVIは見たか?
→あまり好きではない. orphan technology だと思う.
  絵が汚い.ISDN用に絵画を圧縮したいんだと思うが,Appleの方が良く
  やっていると思う.みんなやっているから,すぐにできるだろう.
  机の中にTVが入るだろう(HDTV)

Securityはどう実現するつもりか?
→ simple .vs. diverse
   common .vs. complex
   単純なものは弱い.
   common ⇒暗号を使う必要がある.
   モジュール化して,違う組み合わせで違うシステムでやる必要がある.
   Cは堅いが,もろい←強固に書く必要がある.
   建物と違い,動かす前にテストできない.

暗号はどうするつもりか?
→ DESはどうしようもない.政治の問題だ.
   公開鍵暗号は研究されているが,これを広めようとすれば政治問題になる.
   その証拠にまだ第3世界はエニグマ暗号を使っている.
   トロイの木馬みたいだけど,銀行のシステムを攻撃してやれば
   みんなわかるんじゃないだろうか.

Phase-3 では「きれいな」プログラミングを強要されるだろう.
ガベコレなんかがあると, malloc()なんかは使いにくくなる.
→ 古いプログラマの10%が理解してくれればいいと思う.

プログラムは C++++-= ではエレガントになるのか?
→ 今マニュアルがないので例を示すことはできない.
   できるだけ変えずにエレガントにするのは,むつかしいだろう.
   コンパイラが答えられないような例があるのは情けない限りである.

SunのHardware仕様書がない.
→ 手には入れられるようにしてある.
   Sunのソースコードも提供している.
   いくつかのドライバはしょうもないだろうが.

680x0 が× SPARC が○となったのはなぜか
→ 自分でデザインするしかなかった.
   半導体業界は協調してくれないので大変だった.
   SPARCは hybrid chip の核として使われることを予想している.
   わずか20000ゲートでしかない(2μmテクノロジ)
   そのうち家具同士で通信することもできるようになるだろう.
   Nano Technology
      Drexler "Engines of Creation"

大容量記憶装置はどうなるか?
→ Audioを見よ.CDプレーヤーは安い容量はでかい.
   いわゆるdiskはRAMになり,CDが主流になる.
   そのうち原子構造を利用したものになる.

[以下雑談となり終了]

編者注:

  • C++++--= (Cプラスプラスプラスプラスマイナスマイナスイコール) はその後 Java となり実用化された言語の祖先であったと考えて良いだろう.
  • 1988年末当時,まだSun-4が登場したばかりであり,UNIXあるいはSunOSもソースコードを見るにはAT&Tのライセンスが必要だった.また,当時は米国国務省の認めない暗号技術の輸出は厳に禁じられていた.


[end of memorandum]