大島芳樹のカリフォルニア日記

2004 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 |
2010 | 01 | 02 | 03 | 05 | 09 | 10 | 11 | 12 |
2011 | 10 | 11 | 12 |
2012 | 01 | 02 | 05 | 08 | 10 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 02 | 03 | 04 | 07 | 08 | 11 |
2015 | 01 | 03 | 05 | 10 |
2016 | 01 | 02 | 05 |
 | 

2007-01-23

[] アックス竹岡さん  アックスの竹岡さんを含むブックマーク

MI-506をいじっていたころから名前は伺っていたが、今日始めて直接お目にかかることができた。B1マシーンをちょっとだけ一緒に分解したり。

[] 東大での講演  東大での講演を含むブックマーク

(ちょっとだけ追記しました。その他1/25のあたりも見てみてください。)

"Can programming be reinvented?"というタイトルでの発表。東工大東大で似たような発表をしたのだが、ストーリーラインが比較的新しいため、先にやった東工大での発表には反省点がいろいろあり、それが東大での発表に生かされた形になったのは否めない、かもしれない。以下は、かなり再現性の低いメモ。詳細はさらに聞いてください。「私」はもちろんAlan Kayを指します。

近所の人から、「なんで新しいコンピュータのほうがWindowsの起動やMS Wordの起動が遅いの?」、「大きいディスクがついているはずなのに、なぜ使える容量が少なくなるの?」、「アップデートをしたら、何で再起動しなくてはいけないの?」という質問をされる。なかなか良い質問である。

私自身も、コンピュータに関する疑問がある。「なぜ、コンピュータの外側にあるインターネットは異機種接続されたノードが本物のメッセージを送りあって動いているのに、ある一台のコンピュータの中はそのように動かないのか」、「Shannonの定理によれば、ノイズの上限がわかってさえいれば、どんなにノイズの乗った回線であっても、信頼性のある通信が可能である。なのに、なぜソフトウェアクラッシュすることがあるのか」、「なぜ、今のソフトウェアは必要であると思われるよりも100倍も1000倍も多くのコードで書かれているのか」、「子供が"agents of change"であるなら、なぜ本当の子供コンピュータが無いのか」、というものである。

Encyclopedia Britannicaは11200冊からなる百科事典で、各分冊は1000ページほどでありそれぞれ1.5インチ(?)ほどの厚さである。積み重ねると、だいたいエンパイヤ・ステートビルディングくらいの高さになる。(1/25追記:

1.5インチで1000ページというのは第14版のやつで(だから相当に薄い)、それは全35巻くらいだったそうですが、11200冊と言うのは「もしエンパイヤステートビルディングと同じ高さまでそれを積み重ねることにしたら何冊いるか」という話でした。だからこそ、Windowsが如何に大きなコードであるかということになるわけですね。)

Windows XPは一億行のソースコードからなり、Windows Officeアプリは1.2億行くらいである。これを印刷して積み重ねると、大体エンパイヤステートの半分くらいの高さになる。アドビのものなどを足すとだいたい同じくらいの高さになるだろう。だが、本当にそれだけの意味Windowsにあるだろうか。

人体は60兆個位の細胞からなり、各細胞は6千億くらいの分子から成り立っている。各細胞はいろいろな物質のパターンマッチングをし、お互いにメッセージを送りあって協調して動作している。が、ワトソンクリックの発見というのはそれを記述しているのが1000バイト程度のDNAであるということだった。 (1/25追記:

1000バイトというのは小さめのバクテリアでした。塩基対ひとつは2ビットで、バクテリアはあまりjunk DNAがなくて5000対とかあるということですね。)

マクスウェル方程式は4行だけで、(相対論はその時には理解できなかったが)高校生のときに理解して魅せられた。ひとつの国の中には、しばしばお互いに敵対しているような何億もの要素(つまり人間)がいるが、米国の独立宣言というのは、そのような組織の基本ルールを定めたカーネルであるといえる。だが、弁護士というのは今のプログラマのようなもので、個々の事例ごとに判例を作ってしまう。その判例は3立方マイルにもなるが、原告と被告矛盾する判例をもとに物事を主張し、判事が良くわからないままに判決を出す、というようなことが行われている。

システムデザインというのは、いかにして小さなものが大きなものと相互作用していくかを考えてそれを記述しなくてはならない。

このデモに使っているのはSqueakというソフトで、Xerox PARCで作っていたものの子孫である。当時はオーバーラッピングウィンドウ発明したが、複数のデスクトップを持つシステムも作っていた。新しい作業をするときは、新しいデスクトップを作り、それらが永続化されて、いったりきたりできる。(Project Sorterを見せて)ここにあるのはそういうシステムだが、それぞれのデスクトップウェブページのようにサーバーにおいてアクセスすることもできる。Power Pointをプレゼンテーションに使うというのは本来ばかげている。人々が作っているものは、Power Pointよりも強力なもの(powerful)のはずなのに、Power Pointというより弱いものに載せために、もともと持っていたパワーを捨ててしまわないといけない。なぜ、自分が作っているそのものを見せるようにしないのだろうか。

Altoは2.5MBのディスクを持っていたが、その時代のSmalltalkは10,000行くらいのコードで、印刷すると185ページくらいだった。今使っているのはその子孫のシステムだが、任意のオブジェクトを埋め込んでテキストのまわりこみができるDTPもあるし、子供向けのプログラミングシステムもあるし、動画のようなメディアも操作できるし、パーティクルシステムもある。

これはダイナミックなシステムなので、いろいろなことをシステム自身に問い合わせることができる。すべての実行コードサイズの和は3.5M程度、メソッド数は60000程度なので、1メソッドあたり平均で59バイトである。全体の行数は23万行程度だが、どの数字も必要よりは多くて、同じことが2万行程度でできるはずである。2万行であれば一冊の本に印刷することができるし、数冊の説明をつければ1人の人間がすべてを理解することができるはずである。我々がNSFからの資金を受けてこれからやろうとしているのは、2万行でOSグラフィックスシステムネットワークシステムからエンドユーザーシステムまですべてを書いたようなシステムを作ることである。

アーキテクチャについて。ピラミッドは、ひたすら大量のごみを何十年もかけて積み重ねて、表面を大理石で覆ったようなものだった。まるで今のソフトウェアのようである。エンパイヤ・ステート・ビルディングは、3000人以下の人が11ヶ月(前に建っていたビル破壊するところも含めて)で建てたもので、非常によく計画されていたので、ピッツバーグの製鉄所から運ばれてきた鉄がまだ暖かいうちに使われていたくらいだった。これこそが"engineering"というものであろう。engineeringという言葉を聴くと、吊り橋やジェットエンジンのことを思い浮かべるが、ソフトウェア作りはまだそこまで達していないと思う。1968年ソフトウェアエンジニアリングという言葉が作られたとき、作った人々はまだソフトウェアはまだエンジニアリングと呼べるまでに達していないということは理解していて、「そちらを目指すべきだ」という意図を持っていた。が、問題なのは、今の人は「ソフトウェアエンジニアリング」というものがちゃんと存在していると思ってしまっていることである。

ソフトウェアが達成できているのは、建築で言えばゴシック建築のようなもので、アーチの発明によって百万分の一くらいの材料によってピラミッドと同じ高さのものが作れるようになったというくらいである。いくつか良いアーキテクチャアブストラクションはある。が、アセンブラに対するFortranやAlgol、Algolに対するSimula、LispSmalltalkのように、その前にあったものに対して質的に違う抽象化を提供するというアーチのような新しいものは30年ほど出てきていない。

我々のプロジェクトで目指していることのひとつは、Mooreの法則のソフトウェア版である。インターネットは最初からscalabilityを念頭において設計されたので、14桁15桁以上の拡張をし、いろいろな機械やいろいろな言語で書かれたものが混じっていても、一度もシステムをリブートすることなく動かし続けることができた。ソフトウェアも、そのような拡張性を念頭において設計できないだろうか。インターネットは、実際にメッセージを送りあって動作している唯一のものだが、ひとつのノード上では、境界を越えた最適化が行われてしまっているために拡張性が失われてしまっている。最適化というのはほとんど定義からして境界を破ってしまうことになる。

Don Knuthのせりふとして、「このコードバグが無いことは証明したけど、まだ試していない」というものがある。数学が取り扱うのは、本当に小さなカーネルなので証明ができる。が、コンピュータが取り扱おうとしているのは、数学が扱うよりも何百万倍も大きなものであるために、証明できる規模を超えてしまっていて実際に試さないといけないものであるように思う。プログラム仕様検証や証明をする際に、私が思う良いアプローチは、仕様プログラムを分けて2度書くのではなく仕様自体を最適化を徹底的に排除した形で意図が完全にわかるようにして実行可能なものとして書くことである。

この漫画は、黒板の前に二人の科学者がいて相談しているところで、左のほうにはいろいろな基礎的知識が書かれており、右のほうにはそこから導かれる興味深いものが書かれている。それらの間には、"and miracle happens"と書いてある。

Energy QM Atoms Molecules Large M cells multi cells orgs intelligent civilization

という軸を考えると、400年前は物理的現象そのものが、物理学が無かったという意味奇跡だった。なぜいろいろな現象が起こるのかということが判っていなかった。その後化学も発達した。私が生まれたころは、生物学奇跡だったが、1953にDNAらせん構造が解明されて、奇跡ではなくなってきた。多細胞生物、知的な多細胞生物、そしてその集合である行動学や、文明というがなぜ今のようになっているのか、ということはまだまだわかっていないことがある。

ソフトウェアでは

Power, Logic gates, Ops, Memory, OS, networking, graphics, word processing, Viewing

というような階層があって、電源や論理ゲート、命令やメモリというものはだいたい判っている。また、エンドユーザコンピュータのビューがどうあるべきかということには少し経験があるのだが、OSがどうあるべきか、ワードプロセッサがどうあるべきか、言語が同あるべきかということはまだ判っていないと思う。これらのことはNSFの提案書を読んでもらった方が良い。その中には、13の原理が書いてあって、1から4までと、9から13まではどうあるべきかということはかなり判っていると思うのだが、5から8までのところはまだどうやればよいか判っていない。

デモはわかっていてもう作ったものしかできないので、まずエンドユーザのビューについて見せようと思う。

そのためにModel-Tについて話したい。Model-Tははじめて大量生産された車でだが、1940年代田舎ではまだ使われていた。一番の理由は、本当に破壊してしまうのが難しかったからである。350個程度の部品からなっていて、10代の子供が週末に完全にばらしてまた組み立てることができたし、町の鍛冶屋が壊れた部品を作り直すことができた。スパークプラグの透き間は、10セントコインの暑さを使って測るようにできていた。Henry Fordにそれはなぜかを聞いたら、「みんなゲージはなくしちゃうだろうけど、ダイムはだいたいもっているからね」と言った。ソフトウェアでも、そういうものを作りたいと思っている。

車を書いて動かせるし、すべてのオブジェクトは同じタイプのものなので、スクリプタ用のスクリプトもかけるし、ビューワの中の部品も回せたりする。フィードバックを使って、道に沿って走る車が同じプログラミング環境で作れる。似た形で、鮭がふるさとの川の匂いをたどるシミュレーションも書けるし、それを数百、数万並列に拡張して、蟻がえさを仲間に教えるシミュレーションも書ける。

テキストレイアウトも、同じように文字をパーティクルとみた並列プログラムとしても書ける。各要素は自分の前のやつについていくことだけを考えるが、単語の途中で切れたら、単語の先頭に次の行に行くように伝える。パラグラフエディターは10個ほどの短いスクリプトで書ける。

あとはincrease byをさまざまなメディアに使う例がいくつか。大事なのは、これらは別に新しい話ではないということだが、ただ動画シンセサイザーモデルの部分だけを捉えるようにすれば、どれも「数行のスクリプト+ディテイル」であるということである。

、エンドユーザー向けのプログラミング環境はそういう話であった。もうひとつは、下回りのほうで我々が判っていると思っていることの紹介である。まずは、Ian とAlexのGolen Box。このGolden Boxは、入力として150行程度のBNF的なものを食わせると、その言語からネイティブコードを生成して実行するシステムを作り出すことができる。さらに、1500行程度のそのGolden Boxプログラムを入力として入れると、同じ働きをするGolden Boxを作り出すことができる。これによって、1700行程度でコンパイラ自身も含めてプログラミング言語処理系を作ることができる。20000行のシステムを作ると言い出した背景には、Ianによるこのシステム存在していたことが大きい。

もうひとつは、時間モデルを持ったオブジェクトシステムである。ロックを使った同期はいろいろなやり方が提案されているが、もうひとつ別のやり方は、仮想時刻もモデル化して、微小時間ごとにトランザクションを繰り返すようなモデルである。これはDavid ReedのNETOSで提案されたものだが、David SmithとAndreas RaabのHedgeHogなどで実装されつつある。

googleで"wiring mess"をイメージ検索するといろいろな絵が出てくるが、抽象的なレベルでは、一本のイーサーがあって、すべてのノードがそこからぶら下がっているだけである。これも、モデルとその最適化を分けて考えると良いだろう。

シアトル近郊のTacoma Narrow Bridgeは、風速が100mile per hourを越えると共振するということを計算した教授がいたそのくらいの風が吹いたときに、その教授カメラ屋に走ってその場で橋が落ちるところを録画した。ここから学ぶべき教訓は、late-bindingということである。Butlerが言ったのは、システム作りをするための学習曲線があるが、いろいろな問題点に当たってそれを解決して経験を得て、じゃあもう一度その経験を生かして新しいシステムをもう一度作り直そうと思ったときには、Mooreの法則が学んでいたパラメータをすべて変えてしまうので、結局新しいシステムを作っても良いものにはならない、ということである。late-bindingであれば、最初からすべてのことを知らなくてもシステムを作り出すことができて、新しい経験を得たときに最初から作り直すのではなく、そのシステムそのものを書き換えて、その経験を最初からしていたかのようなシステムに変えていくことができる。

Altoは当時の金額で、$20,000、今日の価値ならおそらくは$80,000程度である。同世代のコンピュータと比べて、Mooreの法則3回分位速かったので、最適化をしなくてもいろいろな実験ができたし、最適化をすれば、10年くらい先のソフトウェアを作ることができた。75年のBravoは、88年のMS Wordと同じようなものだった。今の人は車には$20,000払うが、コンピュータには$2,000以上は使わない。コンピュータに価値を見出してない。研究者なら自分で速いコンピュータを作るべきである。Altoを作ったChuck Thackerは、David Pattersonと共に2 cubic feetの最速コンピュータを作ろうとしている。これは筐体内の2/3くらいはFPGAである。LindaFPGAで作ったりすることを考えると、メッセージングの処理などの性能ががらっとかわり、ソフトウェアの作り方が変わる可能性がある。

大事なのは、Squeakも含めて今のソフトウェアは駄目だということである。特に東工大のほうでの講演はやや話し方にあいまいさが合ったともいえるが、Squeakはすでに大きすぎるし、中身もIanのやつのように柔軟性が無いのであまりよろしくない。Squeak卒業して、もっと良いものを作るのがこれからの目標である。Susan Sontagが言うように、理解というのは現状をそのまま受け入れるのをやめることから始まる。

kwakitakwakita 2007/01/24 09:44 東工大での講演は某委員会と重なって出席できませんでした。6人の委員のうち4人が情報系でみなさん「なんとかならないんですか〜」とブーたれてました。でも、学生さんにビデオを撮影してもらったので、セミナーで眺めようかと思ってます。squeaker には、近いうちに会えそうだから、そのときに DVD に焼いたものを渡します。

ところで、本筋とは離れるんですが「ワトソンとクリックの発見というのはそれを記述しているのが1000バイト程度のDNA」というのは、初耳なんですが本当なんですか?1000バイト = 8000 ビットという意味?それとも、塩基の数が 1000 個という意味?

前者の意味だと、エンコード可能な生物の種類は 2^{8000} = 25.6万種、後者の意味だと 4^{1000} = 100万種ということになります。ランダムなエンコーディングの大部分は意味がない(= 生命体として存在し得ない)と思われるので、異様に少ないように思うんですが。。。

Alan に聞いておいて下さい。

kwakitakwakita 2007/01/24 09:49 あと、20,000行には Ian のシステムは含まれるんですか?システムの生成系を使っているようなんですが、生成系自体の規模はどれくらいなんでしょうか。

このあたりの議論は、最近の言語技術を利用したセキュリティの話にも通じますね。Java は一定の安全性を保証していることになっていますが、あの JVM を Trusted Code Base (TCB) と考えることは、受け入れられません。どうやっても、あの巨大なシステムに対して機械的な照明を与えることはできないでしょうから。

そこで、TCB の小さなシステムを考案して、そのシステムについて形式的な証明を与えるわけですが、今度は小さなシステムへの変換系の信頼性が問題となる。だから、証明つきの変換系を考案するとか、面白いことになっています。

kwakitakwakita 2007/01/24 09:52 すみません。最初のコメントの計算はとんでもなく間違っています。穴があったら入りたい。。。

でも、染色体の塩基配列の長さは 1,000 という数字は遥かに長いので、やっぱり気になります。教えてください。

あずまあずま 2007/01/24 11:48 講演ビデオ観たいです。

1000バイトってのは二重螺旋構造発見の対象だったタバコモザイクウイルスのことでしょうか。よしきのメモの文脈では細胞の話ととれて、ウイルスと細胞では複雑度が桁違いですが。

squeakersqueaker 2007/01/24 15:31 GoldenBoxにGoldenBoxの仕様を入れると新しいGoldenBoxができるというのが、その「生成系」です。基本的には、木の書き換えを続けてネイティブコードを出すというものですが、それが1500行程度ということで、それも20000行の中の一部です。
DNAのコードの量に関しては、怪しいと思います。僕の記憶違いかもしれませんし。

kwakitakwakita 2007/01/24 19:01 生成系とDNSの解説ありがとうございました。

あずまくん、しばらくです。どうやって DVD を渡せばいいですか?もしかして、YouTube デビューとか?

そもそも、渡してもいいんですよね? → squeaker

あずまあずま 2007/01/24 20:04 kwakitaさん、ご無沙汰しております。
ビデオはよしきに、できましたら2〜3コピーを、渡しておいていただければ何とかしてくれると思います。公開できるものであればYouTubeでもBitTorrentなどでも良いです。

squeakersqueaker 2007/01/24 21:54 ビデオのコピーは良いと思います。東大でやったやつも録画されていたと思うので、東大のほうをホストしてくださった増原さんがそちらのほうを持っているかもしれません。

とみざわとみざわ 2007/01/24 22:59 FPGAでLinda、というのに撃たれてしまいました。あずまくんのあとで良いのでビデオ拝見させていただきたいです。私のMacBook(白の上位モデル)だったらコピーできますよね、きっと。

kwakitakwakita 2007/01/24 23:46 いま MacBook Pro が必死になって encoding しています。安直に高品質とかいうのを選択したら、とんでもない容量になりそうだったのでキャンセルして、解像度を落してほかのエンコーディングを選択したら、朝までかかりそうです。squeaker に QuickTime 入りの DVD を数枚渡します。それでいい?

viscuitviscuit 2007/01/25 08:48 面白かったです.2000行くらいの仮想マシン(インタプリタでもコンパイラでも)を5階層くらい重ねればいいんじゃないかと思いました.あと,やっぱり情報の双方向性かな.

sumimsumim 2007/01/25 10:50 メモの公開、ありがとうございます。ときに、Golden Box というのは pepsi & coke の流れのもの(あるいはそれが呼び名を変えたもの)だと考えていてよいのでしょうか?

squeakersqueaker 2007/01/25 13:51 Golden BoxとはCokeそのものです。まあしゃれとして「秘密の箱」というニュアンスをつけているわけですね。

sumimsumim 2007/01/25 14:21 なるほど。

奈良の山篭り男奈良の山篭り男 2007/01/25 22:30 いやあ、面白かったです。どうもありがとうございました。ただ、一点だけ良く分からないところが。「 人体は60兆個位の細胞からなり、各細胞は6千億くらいの分子から成り立っている云々」のところです。まず、細胞の活動の話をするのならDNAだけじゃなくて各種たんぱく質の働きは避けて通れないのではないかと思います。DNAだけ分かれば細胞の働きに関して本当に全部分かるんでしょうか?(いや、おいらが学部一回生の時に『細胞の分子生物学』をゼミで読みながらセントラルドグマへの懐疑を熱く語り合っていた時の事を思い出して)

squeakersqueaker 2007/01/25 22:43 久米さんを納得させるのは難しいと思いますが、「プログラムコードとの対比をしたときの最小限の記述」という話ですからね。プログラムから、実行時に何個のオブジェクトがどう作られるのかを考えないとそのプログラムの「活動の話」はできないかもしれませんが、まあそういう話ではないわけで。

いあいあはすたーいあいあはすたー 2007/01/25 22:44 それからこれは京都で会った時にも言ったと思うのですが(あの時はナノテク絡みの話でしたっけ?)人体なんかだと細胞って基本的には同じ造りだったと思うんですよ。赤血球なんかだと一部何かが無くなっていたりするけど、基本的には皆同じものが「分化」してるんですよね。で、各器官や各組織毎では中の人々ならぬ中の細胞の同質性はさらに高いんですよね。だから、この比喩はどうかなあ、と思うんです。Brooks先生の有名な``No Silver B ullet’’論文でも(生物学の話は出てこないけど)ソフトウェアの構成要素の多様性に関して言及されていたと思います。

奈良の妖怪ハンター奈良の妖怪ハンター 2007/01/25 22:53 ああ、じゃあこれは行ってみれば「こういう言語を受理する一番小さなサイズのオートマトン」みたいな話なのかな?そういう話はまあ確かに面白いとは思うのですが、ソフトウェア工学的にはどういう意味があるんでしょうか?

squeakersqueaker 2007/01/25 23:11 分化のメカニズムの話も実は今日Alanとしましたが、分化を誘発する情報(化学物質の勾配とかなぜそれが分化を誘発するのかとか)は、最近どのくらいまでわかっているんですか?細胞の同質性はこの文脈では普通「低い」というのではないかと思いますが。

こういうねたになると久米さんは納得しないような気がするのでまあ良いのですが、アナロジーを使って説明したいことであったはずの「小さな記述を上手に使って、複雑なシステムの振る舞いを決める」というエッセンス以外のところでアナロジーがどう破綻しているかをいくら論じてもしょうがないとは思います。DNAだけが唯一の記述法ではないはずだが、今生きている生物のDNAはいろんなところに共通の鎖があって同じような機能を果たしているらしいですね、そういえば。

俺が久米だとばれて…俺が久米だとばれて… 2007/01/25 23:32 > アナロジーがどう破綻しているかをいくら論じてもしょうがないとは思います。

説明のためのアナロジーじゃなくて発想の根底にある哲学の問題だと思ったから気になったのです。まあ、でも確かに実物を見ていないと評価出来ないのは事実ですな。因みにブルックス先生の論文には「ソフトウェアの複雑性は規模と共に非線形に増大する」という一節も有ったと思います。今までこの洞察を肯定する事例しか知らなかったので…複雑性の話を視界の外に置いただけのものが多かったので…初めてそうでないものが出来るのであればそれは確かに素晴らしい事だと思います。

あずまあずま 2007/01/26 12:36 私はいまや門外漢なので意見無しですが、質問です。一、よしき(とAlan)の話はシステムの複雑さとその記述量の単純な比の話と考えていいんでしょうか。二、久米さんの分野での『規模』・『複雑さ』は記述量とシステムメカニズムどちらに対して定義されてるんでしょう?

日経サイエンス(sci-am日本版)レベルの知識での感想を言いますと、DNAはよいアナロジーに思えます。ただ、現在DNAに生体の全情報が記述されていると思っているのはテレビニュースレベルの話ですよね。ねずみの遺伝子数と人間の遺伝子数が大差なかったといって驚いているんですから。大腸菌の遺伝子数なんて人間より二桁くらい多いんじゃなかったでしたっけ。
DNAには解釈系となる酵素自体もコーディングされていると記憶しますが、そう考えると記述量最小化にはviscuitさんの言うような解釈系の階層化が連想されます。

速い計算機については、FPGAみたいなハードロジックをナノ秒単位で書き換えられるプロセッサーアーキテクチャーも出てきているので、ソフトウェアの方もこれまでのスタック計算機モデルから修正されていくように思われます。

なかやなかや 2007/01/26 21:08 私は、Alan Kay さんの講演をはじめて聴いたのですが、片手間に適当な講演をしているわけでなはいのですね。学生室で真剣にラップトップと睨み合う様子をみてそう感じました。もちろん、講演の内容からも。

シンプルさと複雑さの関係が大事なのですね。個人的にですが、かなり納得のいく内容でした。

ありがとうございます。

squeakersqueaker 2007/01/26 21:59 ショーマンシップのある人なので、「準備がちゃんとできていない講演なぞはする価値がない」ということはよく言っています。部下や学生が作ったスライドを使って、次にどんなスライドがあるのか判らずに発表をするえらい人を見ることがときどきありますが、まあそういうのりとは対極にありますね。

くめくめ 2007/01/27 01:48 > 二、久米さんの分野での『規模』・『複雑さ』は記述量とシステムメカニズムどちらに対して定義されてるんでしょう?

「久米さんの分野」って「プログラム解析」を意味するんですか?それとも「ソフトウェア工学」一般?プログラム解析の論文の場合規模に関して「行数○万行のプログラムを対象にして実験しました」的な書き方をしているものが多いですよね。そもそも全ての状態数とか一般に勘定出来ないし。

しかしBrooks先生の論文では「プログラムはその長さに対して状態の数が多杉なんで複雑な存在なんだ云々」「要素間の相互作用は規模に対して非線形に増大する」という書き方がしてあったと思います。上でBrooks先生を引き合いに出して小生が述べた「複雑性」とはシステムメカニズムの方です。

物理学なんかでは単純なモデル化で現象を理解する方法が上手く行ったけど、それは抽象化によって排除された複雑性が本質的なものじゃなかったからだ。でもソフトウェアの場合、複雑性は本質的なものだからね…という書き方がしてあったわけです。これはそもそも従来の自然科学的な発想では上手く行かないよ、という示唆が込められていると小生は解釈している次第でしてね。だから「発想の根底にある哲学」(だと小生が思った)に関して質問したわけです。

まあ、でもAlan Kayは超有名なBrooks先生の論文の内容なんぞ先刻承知だろうとは思ってますけどね。単に二人の超大物がそれぞれ違う哲学を持っている、というだけの話かもしれませんな。

squeakersqueaker 2007/01/27 08:32 どこが哲学の違いであると久米さんが思われているのかは良くわかりませんが、ソフトウェアははるかに複雑なものである、ということは上のメモにもDon Knuthの引用のあたりででてますね。

squeakersqueaker 2007/01/27 08:54 念のため書いておきますが、Brooksの話は同じ言語でプログラムを書いていて、プログラムに機能追加などをしたときにどう複雑性が増大するか、という話ですが、我々がやろうとしているのは、言語の作り方も変えて言語も変えて抽象化の与え方も変えて、という要素が入っているので、「行数と複雑性の関係」を論じるのはそれほど単純ではないと思います。

kwakitakwakita 2007/02/06 08:31 いまさら何ですが、講演のビデオを焼きました。ウェブサーバに置いているので、興味のある人はわたしにメールを下さい。メールアドレスを知らないひとには教えてあげない。今頃、書いても反応、ないかな?

トラックバック - http://d.hatena.ne.jp/squeaker/20070123
 | 

最近のコメント

1. 05/12 squeaker
2. 05/12 shiro
3. 11/10 squeaker
4. 11/28 squeaker
5. 11/10 kwakita
6. 11/28 (わ)
7. 11/10 squeaker
8. 11/10 abee2
9. 03/27 squeaker
10. 03/27 加藤正臣
11. 12/10 nomisuke
12. 12/12 squeaker
1075323