この動画は、Microsoft の伝説的なソフトウェア開発者であるDave Plumerによる、プログラミングと自閉症についての深い洞察を提供する。Windows 95、NT、XPの開発に携わり、何億人もの人々が使用するWindows Task Managerを作成したPlumerが、初期のコンピューティング体験からMicrosoftでの輝かしいキャリア、そして自閉症とともに生きることの挑戦と利点について語る。技術的な詳細から人間的な側面まで、ソフトウェア開発の歴史と未来を語る貴重な証言である。

Dave Plummer: プログラミング、自閉症、そして古き良きMicrosoftの物語
これからお聞きいただくんは、Dave Plumerとの対談や。彼はプログラマーで、昔ながらのMicrosoftソフトウェア・エンジニアとして、Windows 95、NT、XPの開発に携わってきた人なんや。何億人もの人が使う素晴らしいツールをたくさん作ってきたんやが、その中でも特に有名なんが、あの伝説のWindows Task Managerや。そう、あのWindows Task Managerなんや。
それから、Windowsのzip/unzip圧縮サポートも彼が作ったし、Space Cadet Pinball、つまり3D Pinballのコードを移植したんも彼なんや。今日では、多くのプログラマーや技術者から愛されてる、「Dave’s Garage」という素晴らしいYouTubeチャンネルをやってるんで、ぜひチェックしてみてほしいな。それから、自閉症についての本も書いてるんや。「Secrets of the Autistic Millionaire」という自分の人生について書いた本で、自閉症とともに人間関係、キャリア、日常生活をどう歩んでいくかについて、本当に興味深い洞察を与えてくれるんや。
こういうことを全部ひっくるめて、これは本当に楽しい対談になったで。プログラミング、コンピューティング、テクノロジーの歴史と未来、そしてあの象徴的なガレージでクールなもんを作ることについて語ってもらったんや。これがLex Fridmanポッドキャストや。サポートしてくれるなら、説明欄のスポンサーをチェックしてくれ。それでは、親愛なる友人たちよ、Dave Plumerの登場や。
あんたの最初のコンピューターについて話してくれ。覚えてるか?
覚えてるで。長いこと自分のコンピューターは持ってなかったんやが、初めて使ったコンピューターはTRS-80 Model 1 Level 1の4Kマシンやった。小学5年生か6年生の時、11歳ぐらいの時に、地元のRadio Shackまで自転車で行ったんや。そこには標準的なコンポーネント、ステレオシステム、その他Radio Shackが扱ってるもんが全部あったんやが、コンピューターと書かれた箱が積んであったんや。
それで、そこで働いてる人たちにそれについて聞いたんや。彼らはそれを手に入れたばっかりで、まだセットアップしてなかってん。それで、わしが生意気にも「わしがセットアップしたるわ」と言うたら、「よっしゃ、やってみ」と言われたんや。
何をしてるかわかってた?
全然わからんかった。コンポーネントステレオよりましなぐらいやった。ただ、Tandyが無限の知恵で、電源、ビデオ、それからカセットかな、全部に同じ5ピンコネクタを使ってたんや。
全部同じで、間違った場所に差し込んだら壊れるんや。それでラベルを読んで、うまくいかせることができて、結局それで遊ぶことになったんや。コンピューターについては何も知らんかったから、英語のコマンドを打ち込んでたんや。「print 2 plus 2」は完璧に動くんやが、BASIC Level 1インタープリターに入力するもっと単純な英語では、そんなに遠くまでは行けへんかったんや。
つまり英語で話しかけようとしてたってことやな。
そうや。それ以上は知らんかった。それで、小学6年生の時に書いたプログラムの古いフルスキャップがまだあるんやが、論理的には正しいんやが、当時存在してたどのインタープリターでも動く見込みのないもんやった。それで、実際にそれらがどう動くかを理解するのにしばらくかかったんや。
でも、毎週木曜日と土曜日に自転車で行って、親切にもマシンを使わせてもらってたんや。
それはいつ頃の話?
79年80年や。
その頃のコンピューティングの最先端はどんなもんやった?
まあ、ビッグスリーが出てきてたんや。TRS-80 Model 1があって、PET 2001があって、Apple 2がほぼ同時に出たんや。
Apple 2はこれまでに作られた最高のコンピューターと言えるかな?
たぶん振り返ってみればそうやろな。まあ、わしはたぶんCommodore 64に軍配をあげるやろうな。
そうや、わしらはこの点で同意見やな。それがわしの最初のコンピューターやった、たぶん発売から何年も経ってからやが。でも、そうや、Commodore 64は素晴らしかった。
でもそうや、Apple 2はパーソナルコンピューターの歴史に大きな影響を与えたよな?
長期的な影響を測るのは難しいが、64自体はたぶんもっと多くの人に影響を与えたと思う。それがわしがそれを選ぶ理由や。
そう思うか?
売上は確実に高いからな。Commodore 64はたくさん売れたんや。
数字は信じられへんぐらいや。どの数字を信じるかによるが、中程度の推定でもかなり高い。
わかった、すごいな。それで、最終的にCommodore 64に移ったんやな。そのマシンについて話してくれ。Commodore 64で何をしてた?
最初にしたことは、フロッピードライブを過熱させてしもたんや。不運なことに、これは保証のあるマシンやなかった。わしの両親はお金があまりなかったから、大手小売店じゃなくてComputer Houseから買ったんや。つまり、壊れたらドイツかどこかに送って修理してもらわなあかんかった。それでフロッピーなしになってしもて、カセットデッキしかなかった。当時はそれが最善やった。
それで小さなもんを書いてて、カセットから読み込めるマシン語モニターがあった。組み込みのアセンブラーはなかったが、逆アセンブラーはあった。それで6502のオペコードを16進で入力できたんや。
計画をしっかり立てれば、基本的なプログラムを書くことができた。そんな感じで学んだんや。最初に書いたもんはGalagaのクローンやった。下手なGalagaクローンやが、時間とともに攻撃してくる主要な敵がいる。全部手書きマシン語で書かれてて、6502は再配置できひん。
だから、途中でコードを追加する必要があったら、手動でどこか別の場所にジャンプして、作業をして、元の場所に戻らなあかん。ひどいスパゲッティコードや。でも、最終的には全部動いた。それで、将来の学者のため、あるいは何をしてたかわからんが、そのバックアップを取ろうとした。それで、空のフロッピーをデータフロッピーにコピーしてしもたんや。
それがデータ管理の最初の経験やった。それで、最初のプログラムのコピーはもうないんや。
その気持ちはどうやった?覚えてるか?プログラミング経験の一部である、失礼やが、そんなばかなことをしたときの気持ちは?
すごい罪悪感があった。数週間の作業を台無しにしてしもたからな。急いだか、ばかなことをしたか、賢くない選択をしたからやった。
そのプログラミングについて何か教えてくれるか?文字通りマシン語やったんやろ?
そうや、マシン語や。アセンブリでさえない。組み込みのアセンブラーがなかったからな。最初のタスクとしてアセンブラーを書くべきやったが、そこまで賢くなかった。
それをするのはどれぐらい難しい?
簡単や。何度もやるから身につくもんの一つやと思う。Cの構文エラーを出されても、Cで絶対に忘れへんし、間違えへん構文的問題がある。
それなら、プログラマーとしてマシンコードでプログラミングすることの制限は何や?
一番大きな問題は、完全に順次的に書かなあかんことや。少なくともその6502のバリアントでは、後で物を追加できひん。最後にしか追加できひん。ある意味でテープにプログラミングするようなもんや。
マシン語で作った一番複雑なもんは何やった?
そのゲームやろうな。アセンブリ言語では結構複雑なもんをやったが、実際のマシン語では、そのゲームが文字通り作った唯一のもんやと思う。素晴らしいゲームやないが、動いた。
わかった。それで消してしもたんやな。
そうや。
いつプログラミングに恋をしたんや?これは何か特別なもんやと気づいたのはいつ?
わしには2つの段階があったと思う。TRS-80 Model 1からすぐに、これらのマシンに魅了されてることはわかってた。したかったことは自転車でそこに戻って、もっと時間を過ごすことだけやった。できるだけ迷惑をかけるまでそれをやってたんや。
もう一つの啓示は、大学の2年目か3年目の時に来たと思う。プログラミングは大好きやけど、何をするかさっぱりわからんことに気づいた。VCRの時計を点滅させるんか、オペレーティングシステムの作業をするんか、卒業後に何をするか全然わからん。でも、やってることは大好きや。それで、それはすごい慰めやった。この時点で何をやってても、やってることが好きやからどうでもいいみたいな感じやった。
それで何とかなるやろうと。
そうや。最終的に正しい分野にいることがわかったんや。
高校を中退したんやってな。
そうや。一番賢い選択やなかった。
でも、学校に戻って、学校でもプログラマー、開発者、ソフトウェア作成者として一般的にも成功したんやな。中退してから道を見つけるまでの旅を教えてくれるか?
中退した瞬間はない。だんだん行かなくなって、気づいたら長いこと行ってないから顔を出すのが恥ずかしいやろうな、と思うようになる。そのうちもう行かんくなる。それが高校を中退する方法や。もしそんな道を歩んでるなら、やめとけ。
でも、まさにそれをやった。学校に行かなくなったから、仕事を見つけなあかん。それで7-Elevenとペンキ倉庫とかで働いてた。7-Elevenは実際結構面白い仕事やった。夜勤で経理と事務の仕事を全部やる頭のいい人間を回転させるんやが、個人的な理由で7-Elevenで働かなあかん人たちなんや。
高校の卒業証書がなかったから、わしもそんな人間の一人やった。
その7-Eleven時代の思い出に残る瞬間は何や?その仕事の難しさについて何か感謝してることはあるか?
たぶん一番最悪やった瞬間は、ナイフで襲われたりもしたが、それは楽しかった。でも一番最悪で一番つらかった部分は、ガソリンの計測をすることやった。15から20フィートの長い木の棒があって、インチとフィートの目盛りで測られてて、それをガソリンタンクに落として、持ち上げてガソリンがどこについてるかを測るんや。電子センサーがないからな。
それをやってて、初めてやった時に棒を落として、またつかんだんや。そしたら手に千本ぐらいの木の破片が刺さって、外は氷点下40度で、本当にひどかった。
それで、凍えて手に破片が刺さったまま立ってたんや。
人生について何か啓示があって、次回は違うやり方でやろうと思った。それから約3秒後に、それがどれだけばかげてるかがわかったんや。
それが本当にわしにとって、何か違うことをしなあかんと気づいた瞬間やったと思う。
21歳やったけど、地元の高校の校長に話をしに行った。「戻らせてもらえるか?」と聞いたら、「だめや、年を取りすぎてるし、場所がない」というのが主な理由やった。「今から卒業までの間に誰か中退するやろうから、場所はできる。場所があると仮定して、戻れるか?」と言ったら、親切に戻らせてくれた。
それで必要な3、4クラスを履修した。
ちょっとそこにとどまってもいいなら、ゆっくりとした中退、それは脳でできる奇妙なことや。他のみんながやってることをやらんでもええということがわかる。それは危険な気づきや。社会の一員として特定のことをやらなあかんからな。他のみんながやってることをやらんでもええと気づくと、素晴らしい人生を送るか、本当に困難な人生を送るかのどちらかになる。
そのプロセスの問題は、もっと小さな決定をしてるということや。今日は授業に行かないだけや。それだけを決めてるんや。でも、それを十分やると、もっと大きな決定をしてることになって、それが問題なんや。非標準的な方法で人生を生きたいなら、大きな決定を明示的にしてから、行くのをやめる方がいい。
そうや。小さな決定をさせてはいけない。
最終的には決められてしまうからな。
戻って、結局大学に行って、学生として非常に成功して、前はそんなにいい学生やなかった。
いや、高校では最悪の学生やったし、大学の最初の学期でさえまだそれほど真剣に取り組んでなかった。Geometry 90で情けで通してもらったからな。これは12年生の幾何学クラスの補習クラスみたいなもんやった。それが怖かった。教授の慈悲で1%で通してもらったか、大学全体のキャリアを終わらせるところやったからな。幸い、それらの成績は補習クラスやから成績表に載らへんし、次の学期に新しいスタートを切れて、本気でやって、自分のためにやった。それが全ての違いを生んだ。
学生として成功するためのアドバイスは何かできるか?
理想的には、学校で楽しめる側面があること。芸術でも、コンピューターサイエンスでも、工作クラスでも、何でもいい。そういうクラスを取って、難しいことは我慢してやればいい。後でやるよりずっと楽やからな。50歳の時に言うのは簡単やが、15歳の時に言うのは難しい。でも、すごく理にかなってる。
7-ElevenからMicrosoftまでの話を教えてくれ。どうやってそこまで行ったんや?
大きなジャンプやな。学校に戻って、大学3年生の時やったと思う。夏の仕事として電話会社で働いてて、UbetからTCP IPと最新のネットワーキングへの変換をやってた。カードを交換するだけやが、設定のせいでLotusが動かなくなる理由を考えなあかん。以前より10K少ないからな。コンピューターで働くには最悪の時期やったが、それをやってた。
昼食時に、年寄りと一緒にフードコートに座ってた。「Microsoft Hard Drive」という本を読んでたんや。Bill GatesとMicrosoftの作り方について書かれた本やと思う。素晴らしい本やった。Microsoftがどう生まれたか、どんな感じか、どう運営されてるか、そこの人たちがどんな人かについての事実に基づいた歴史や。
その本を読んでてすごく魅了されて、夢中になった。まさに自分が行きたい場所に聞こえたんやが、わしはSaskatchewanにいる。どうしたらいいんや?
結局やったことは、「Hyperache」というプログラムで学校の学費を払ってたんや。Amigaのファイルシステムキャッシュやった。箱から出しては何もなかったからな。それが結構うまくいってた。
それで登録カードを見返した。当時は4×6のカードがあって、人々が名前と住所、メールアドレスがあればメールアドレスを書いて送ると、シェアウェアでアップデートの通知などを受け取れた。全部の束を見返して、Microsoftのメールアドレスの人を探したら、3、4人見つけた。そこにコールドメールを送ったんや。「Saskatchewanでオペレーティングシステムを学んでる学生で、機会を探してる」とか何とか言った。
一人の男、AlisterかAlister Banksが返事をくれて、「連絡できる人を知ってる」と言ってくれた。Ben Slifkaという男につないでくれたと思う。電話面接をして、最終的に夏の間MS DOSで働くために雇ってくれることになった。それがそこに行った方法や。
Hyperacheについて教えてくれ。ソフトウェアを作って学校の学費を払ったんやな。
ハードドライブのダイエットプログラムや。十分多くの人に十分役立って、何らかの方法でお金をくれたんや。
結構お金になった。2000部ぐらい売って、20ドルか40ドルのコピーやった。
何語で書かれてたプログラムか?
C言語や。アセンブラーも少しあった。実際にキャッシュとの間でデータを転送する実際の本当にタイトなコードは68000アセンブリやった。他は全部C言語やった。
これはファイルシステムIOデバイスブロックIOみたいなもんやな。
ドライブからサービスされるどのブロックもまずわしのキャッシュを通って、N-way associativeキャッシュやった。ドライブのジオメトリに合わせようとして、一度に全トラックを読もうとして先読みをするような感じやった。
その時代にソフトウェアを世に出すのはどんな感じやった?どこでどうやって顧客を見つけることができたんや?
面白いな。Usenetといくつかのamigaフォーラムから始めたと思う。「ここにトライアル版がある、30日間試してみて、気に入ったらどうぞ」と投稿して、最終的にいくつかの小売店が取り上げてくれた。今の妻と彼女の車にいた時のことを覚えてる。彼女の父親が彼女の安全を心配してて携帯電話を持ってたんや。80年代後半で、屋根にアンテナがあって、トランクに大きな箱がある完全装備やった。でも、ソフトウェア小売店の一つから電話があって、20ドルで50部買いたいと言われた。わしにとっては1000ドルで、1989年か何年かには大金やった。最終的に多くの会社が在庫を買ってくれた。
Bill GatesとMicrosoftのその時代に行こう。すごく興味深い時代やった。なぜMicrosoftがその時代、そして本当に長年にわたって、ソフトウェアとパーソナルコンピューティング空間を支配してたと思う?
その時は、わしが参加した中で最も強力な賢い人たちの集合体やったと思う。学術界にも産業界にもいたが、普通のコンピューター会社で働いてる時、実際に何をやってるかわかってる一人の男の賢い友人は、たぶんMicrosoftで働いてる。
そこに行くと、小さな町の大物で、たくさんのことを知ってると思ってたのに、突然、「うわ、ばかに見えたくないから話さんとこ」みたいな環境にいることになる。
Bill Gates自身についてはどうや?Microsoftの成功に貢献したBill Gatesの性質は何やと思う?
彼の一つの夢である「すべての家庭にコンピューターを、すべての机にコンピューターを」という古いスローガンの追求において容赦なかったと思う。それが彼の特別な興味で、賢い男で、超決然としてて、自分と同じかそれ以上に賢い人を雇って実行を手伝わせて、前進してシンプルな製品を作る、止められないほどの知性の機械を作った。MS DOSは決して複雑な製品やないが、まさにその時市場が必要としてたものやった。
MS DOSはゲームを変えたし、実際あんたが参加したのはMS DOSチームで、Windows 95がリリースされる前に参加したと思う。MS DOSの話を教えてくれ。
MS DOSの成功は、たぶんMicrosoftの成功に極めて重要やった。DOS以前は、主に言語会社やった。
多くのコンピューター用にBasicを作ってて、4RコンパイラーとPascalコンパイラーなどを持ってた。でも、MS DOSをPCの全バージョンまたは全インスタンスに含める契約が、何十年もの間活用できる標準として確立させた。ある程度それにロックインされたし、一方でそれをやったのは賢かった。
IBMにはあまりお金を請求しなかったが、それを標準にすることで、時間をかけて彼らの利益に本当に活かされた。
その時MS DOSにはグラフィカルインターフェースがなかった。MS DOSとは何なのか説明してくれるか?
主にコマンドランチャーや。コマンドの名前を入力すると、それが現在のディレクトリや特別なフォルダのパスにあるかどうかを調べて、あればメモリーに読み込んで実行する。
それがMS DOSがすることの90%や。環境変数と少しの複雑さと小さなスクリプト言語が組み込まれてるが、基本的にはハードドライブやCPUなどのコンピューターのリソースを使うことを可能にするオペレーティングシステムシェルや。マルチタスクはできひん。グラフィカルインターフェースもない。
Microsoftは、エディターやQuick BasicなどのためのテキストベースのグラフィカルインターフェースをDOS 5で追加したと思う。DOS 4ではDOSシェルがあって、MS DOSでのグラフィカルファイルマネージャーみたいなもんやった。実験したが、主にコマンドプロンプトやった。
外部デバイスと通信する能力、つまりドライバーとかそういうもんはあったか?MS DOSはどれぐらい広範囲なオペレーティングシステムやった?
640kに制限してた元のx86命令セットによって制限されてて、その上に高メモリーや拡張メモリーなどのさまざまなバンドエイドがあって、ベースRAMを消費せずに何かを動作させるために多くのフープを飛び越えなあかん。
MS DOSでプログラミングしてたんやな。どんな感じやった?面白い詳細は何かある?640キロバイトのメモリー制約があると言ってたが。
640kが利用可能になる最大や。オペレーティングシステム開発者として利用できるもんやない。使うもんは、ユーザーが得られないもんやからな。無駄に10K使ったら、世界中のあらゆるマシンで10K少なくなる。結構大きな責任や。
Bill Gatesが「誰も640K以上は必要としない」と言ったという引用は本当か?
わしは彼が言ったもんやないことを知ってる。
彼に帰属されてるが、本当やない。
わかった。MS DOSやそれ以降で、インターンとして、そして参加した時にできた興味深い側面は何かある?
最初にやったことの一つは、Smart Drive、ディスクキャッシュを取ることやった。ディスクキャッシュに慣れ親しんでたから、新人としてCDROMキャッシュを追加することやった。CDROMがちょうど出てきたところやった。Microsoft BookshelfがそのためのCDROMで実行できる数少ない製品の一つやった。
想像できるように、CDをキャッシュすると、賢くやれば数十倍速くなる。それで大きなパフォーマンス向上になって、取り組むのに素晴らしいもんやった。それより大きな部分は、Smart Driveの多くと最終的にはDouble Space圧縮エンジンを高メモリーと呼ばれるところに移すことやった。x86の技術的側面にラットホールしないようにするが、A20ラインと呼ばれるもんがあると思う。
たぶん逆に覚えてるか、50-50の確率やが、A20ラインがアサートされてたら、メモリーポインターは1メガバイトマークでラップする。
そうやないと、ラップせずにメモリーを上に続けていく。
セグメントとオフセットレジスターを組み合わせて1メガバイト以上の数にすることで、上のメモリーに書き込んで、余分な64kを得て、そこにコードを置いて、低メモリーからそこにジャンプするスタブを置くだけで、マシンからもう64k取り出せる。いくつかの製品でそれをやった。Amigaプログラマーやったし、そこに行く前にx86コードを書いたことがなかったから、ハイメモリーが何かわからんかった。
それは君が参加したクールな最適化やったんやな。
そうや。Windowsはどうやった?その時Windows 95の並行開発があったよな。その人たちと交流する機会はあった?
実際Windows 95で3、4ヶ月働いた。WordやExcelスプレッドシートやチャートをWordドキュメントに挿入する時のプレゼンテーションキャッシュをやってたCommチームにいた。
毎回Excelを読み込んでレンダリングしたくないやろ。それで拡張メタファイルのプレゼンテーションキャッシュがある。それに取り組んでた。だからWindows 95で出荷されたが、Microsoftに来て約6ヶ月後にシェルチームに移った。それからはNTに取り組んだ。
95とは何や?NTとは?
Windows 95は元の16ビットWindows 3.1の進化版や。これが最初の人気のあるWindowsのバージョンやった。32ビットサポートとVXDドライバーと多くの新しいテクノロジーと完全に新しいユーザーインターフェースを追加してる。当時は革命的なもんやった。人々が夜中に並んでそれを買うのを待ってた。
95がなぜ3.1からそんな巨大な飛躍やったかを説明してくれるか?
Appleはすでにグラフィカルインターフェースがあった。Windows 3.1もグラフィカルインターフェースがあった。なぜWindows 95はそんな巨大な飛躍やった?
スタートメニューほど基本的なことにしたくないが、それが大きな部分やと思う。初めて見た時、何が違ってて素晴らしいかを定量化できんかったが、その一部になりたいと思った。
それでシェル拡張を書き始めて、それがいずれかzipフォルダーになった。新しいシェルに魅了されたんや。それで、そのシェルをNTや今日のWindowsに持ち込んだチームで働くことになった。
それが史上最高のオペレーティングシステムと言えるか?最も影響を与えたオペレーティングシステムは何や?
Windows 95はわしにとって2番目やな。OS 360が1番やと思う。
面白いな。1962年にマシンを持ってCOBOLプログラムを書いたか?タイムマシンに乗って、ピッカピーに行って、IBM Z17メインフレームを起動して、今日それを実行してくれ。何年もそれをやってる。全部ビジネス側やから、消費者としてはあまりアクセスできないが、Windows 95が家庭側で与えた影響と同じぐらい、商業側で影響があったと思う。
それから、たぶんLinuxが3番目やろうな。LinuxをUnixより大きいと位置づけてるが、一方なしでは成り立たないからうまくいかない。しかし、Unix BSDなどの影響は主に学術空間や。プログラマーによるプログラマーのためのもんや。Linuxはオープンソース精神の体現を最大規模で作り出した。
ほぼコミュニティを作り出して、今日まで伝播するプログラミング精神を作り出した。
そうやな。規模が重要やし、サーバー側での浸透は、System 360が達成したもんと同等かどうかはわからんが、ほぼ遍在してる。世界はこれがLinuxで動いてるという静かな秘密や。
当時の仕事の日々について教えてくれ。MS DOS、Windows 95の日々はどんなもんやった?生産的な一日を教えてくれ。
一日は入ってきてアドレスブックをダウンロードするところから始まる。Microsoftはこの時点で1万から1万5千人の従業員がいて、みんなMS Mailを使ってる。Miss Piggyと呼ばれるPDP11から切り替わったところで、それがWhizmailを走らせてた。
MS Mailを実行してるが、MS Mailは毎朝全ユーザーがダウンロードしなあかん固定アドレスブックがある。1万人が1万人をダウンロードすると、かなりめちゃくちゃになる。10メガビットネットワーキングを使ってたと思う。最初の1時間はアドレスブックのダウンロードで、いつも不満やったが、その時間を使って、stressと呼ぶプロセスから一晩中に起こったクラッシュを見てた。NTでは、使われてないマシンが全部夜中にテストを実行して、自分をクラッシュさせようとする。クラッシュに成功すると、別のマシンへのシリアルケーブルでデバッガーに落ちて、その別のマシンに接続してクラッシュしたマシンをリモートデバッグできる。
入ってきてバグをトリアージしてる。スタートメニューでクラッシュがあったら、Daveに割り当てる。それで入ってきて、最初にやることは、そのマシンを持ってる人にそのマシンを返してアンロックしなあかんから接続することや。
それが1日の最初の1時間で、基本的にstressから一晩で出てきたバグのトリアージや。その時点で、たぶんコーディングに戻るが、不幸にも80%の時間はバグの修正や。特にわしのキャリアでは、コードの移植とバグ修正やった。新しいコードはあまり書いてなかった。例外はあった。
毎日のバグ修正の苦痛から抜け出すために夜にたくさんの新しいコードを書いてた。他人のコードのバグを常に修正するのは素晴らしい学習経験やった。
MicrosoftでWindows 95のコードをNTに移植する作業をたくさんやったんやな。
そうや。Windows 95のユーザーインターフェース全体を取って、NTに移植した。これは、一つにはUnicodeにするということを意味した。
8ビットやったもんが全部16ビットポインターになる。想像できるように、コードを切り替える時はかなりめちゃくちゃになる。
移植に何が関わるかについて洞察をくれるか?
誰かの家に侵入して、その人の物を全部調べて、見られたくない引き出しの物を見るような感じや。壁に掛かってる綺麗な絵のような良いものも見つけるし、ナイトスタンドの中の気持ち悪いもんも見つける。
200文字ぐらい幅のコードで、悪口や罵倒が入ったようなもんを見た。わしが辞める頃には、年月をかけて全部きれいになったが、世界で最もプロフェッショナルなコードではなかった。コードの全ての部分を一行一行見なあかんから、全部見ることになる。
それがプログラマーの話や。コードを書いて、誰にも見られることはないと思ってる。でも、多くの場合、そのコードは君の後に来る非常に多くの人に見られることになる。5年後の君自身も含めてな。
Windows NTについて教えてくれ。それも巨大な飛躍やった。
基本的にクリーンシートの設計やった。
Digital Equipmentで彼らのオペレーティングシステムをやってたDave Cutlerを取ってきた。VMSとRSX11をやってた。PrismとMicahがDeck Westでキャンセルされたプロジェクトの後に来たと思う。プロジェクトがキャンセルされたチーム全体がいて、基本的に彼らの多くを取ってMicrosoftに来た。具体的な契約はわからんが、みんな現れた。
Dave CutlerとMark Lakowskiと、Deckからの本当に賢い人たち全員がいて、基本的にクリーンシートをやったが、OS2も出発点としてあった。でもOS2はもちろんアセンブリ言語で書かれてて、NTはCで書かれる予定や。それをどの程度活用できたかは実際わからんが、少なくとも始められるシステムはあった。
Dave CutlerがWindowsの心の背後にいる人と言ったな。説明してくれるか?
Dave Cutlerはカーネルのアーキテクトや。Linux世界でのLinusみたいなもんや。Windows世界ではDave Cや。
他にも大きな部分を貢献した人はもちろんたくさんいたが、その背後にある推進力で、常にそうやったと思う。85歳になったと思うが、まだ毎日コーディングしてる。Microsoft fellowや。まだ仕事に行ってると思う。
Dave Cutlerと働いて、彼と交流して、その人の天才性について何か話せるか?その人の心の興味深いところは?
その男は邪悪に賢いが、農夫のようでもある。君を追い回して、物事が確実に完了し、正しく完了するようにして、君が彼のオペレーティングシステムにクソを一切チェックインしないようにする人や。それを許さない。その点で本当にタスクマスターや。でも、それが本当に報われたと思う。MicrosoftのデベロッパーがDave Cutler Digital Equipmentスタイルのリーダーシップにさらされるのは、非常に大きなパラダイムシフトやった。
その時の成功したソフトウェアチームについて何を学んだか?多くの人が協力する大規模なチームで、Microsoftには当時多くの優秀なエンジニアがいて、Dave Cutlerは完全に新しいシステムを作らなあかんかった。多くは今日でも使ってるもんやが、その時の素晴らしいソフトウェアエンジニアリングチームについて何を学んだか?
ツールが全てやと思う。人が全てやというのは当然として、でもツールセットは大きな要因や。gitがあれば、はるかに簡単やったやろう。diffと手動デルタを使って移植などをやってた。ソースコードのブランチをフォークできるのは、わしには新しい贅沢やったやろう。当時は本当に便利やったやろうな。
その時の記憶に残る会話は何かある?隣に歩いて行った時の?
わしが居合わせなかった一つは、誰かが苦情を言ってたということや。新しい雇用者がチームに来て、Cairoと呼ばれるもんに取り組んでたと思う。
CairoはWindows 95より新しい、美しくて完全に新しいユーザーインターフェースを持つ次の未来のオペレーティングシステムになる予定やった。実現しなかった。でも、それに取り組んでる間、Cairoに取り組んでる人の一人が、数千人のopen anti-dev aliasでNTブート体験がどれだけクソかについて炎上してた。
返ってきた返事は、保存しておけばよかったと思う叙事詩的な炎上メールやった。書いた人の名前は出さない。本人はわかってる。でも、Linuxが時々カーネルのもんについて送るようなもんと非常に似た感情の芸術作品やった。
知的な議論みたいなもんはあった?激しいもんの技術者は?
論争になった。知性が競い合って、最終的に一部の人にとっては技術的なメリットは二の次になって、その議論で他の人を打ち負かすことが目的になって、その時点ではもう生産的やない。でも、結構あった。
プログラミング言語設計コミュニティーのGuido Van Rossumのような、そういうコミュニティーのリーダーたちを疲弊させるような議論を見たことがある。人々が使命を忘れて、詳細についてすごく細かくなり始める。エンジニアリングマインドが集まって、最もばかげた、構文の微妙さについて戦争に行くような感じや。プログラミング言語では構文の微妙さと言うべきやが、カーネルコンポーネントの特定の内部バトルが確実にあったやろな。
今日でもわしを悩ませてる負けたものがある。シェルをやってる時、すべてを古いUnicodeから移植してた。8ビットやった文字が全て16ビットになる。
問題は、わしはMIPSボックスにいて、riskに移植してるから、アラインされてないアドレスは持てへん。でも、基本的にパス要素である2つのIDリストを取って、C colon backslashのものを取って、Windowsのものを取って、System 32のものを取って、それらを一緒に追加するとする。でも、文字数が奇数やと、このもんの中の奇数アドレスにいることになる。
文字列を取り出すために、例外ハンドラーを有効にして、アラインされてないバイトアクセスをして、手動で文字列を引き出してコピーするという膨大な作業がかかる。MIPSマシンでアラインされてないから、このIDリストから文字列を読み取るのが文字通り100倍から1000倍の作業になる。
それで、Windows 95で遅いにもかかわらず、すでに1つのベータを出荷してるのに、IDリストが常に偶数バイト数であることを保証するか、これが絶対に起こらないようにするハックをやるべきやという議論をしてた。他のハードウェアでそれらを参照するコードがすいすい進めるように。
それが叫び合いと個人的な争いになった。わしはその議論に負けた。今日でも、Windowsで実行されてるそのコードは、必要以上に何千倍も遅いことを知ってるし、誰も気にしない。十分速いから。でも、もっとずっと速くできる。
MIPSとriskについて言ったが、やってるNTとその前のMS DOSの作業を成功させるために、ソフトウェアの最下層や、ハードウェアでさえ、どれぐらい深く理解しなあかんかった?どの抽象化の層を理解しなあかんかった?
1日の約半分はデバッグに費やされて、そのほとんどの時間は純粋なアセンブリ言語のコールスタックで費やされる。ソースレベルのデバッグがないからな。Visual Studioでブレークポイントにぶつかって、ソースコードがポップアップするようなもんやない。ソースコードは見れるが、常にマシンからの生のアセンブリダンプを見てる。Cでプログラミングしてても、デバッグはアセンブリや。
100%そうや。
すごく扱いにくい。さらに、Intel、MIPS、Alpha、Power PCの4つの命令セットをやってるから、どのマシンでクラッシュするかによって、レジスターとは全く異なる命令セットがある。全4つのデバッグにはかなり慣れるが、MIPSの経験があったから、MIPSのもんがわしのところに来てた。
それは本当に持久戦や。そういうデバッグの拷問について話せるか?特に関連するツールがない種類のデバッグ?
今日のプログラミングキッズは、プログラミングは美しいもんを作ることだけやないってことがある。物を修理することでもあるんや。
プロとしての人生の20%が創造で80%がデバッグと修正やったと言える。物を修正できる人として少し評判を得たから、そういうもんがわしのところに流れてきて、それをもっとやることになった。新しいUIアイデアを花開かせるクリエイティブなUIの天才として知られてなかった。それで、醜いもんを修正することになった。でも、それがすごく上手になる。長時間追いかけて、次に何をしたらいいかわからなくて、なぜ動かないのか、どうして動いてたのかわからないような状況になるまでは、嫌いやない。
1日それをやった後は、かなりしんどくなる。
デバッグは本当に拷問になりうる。本当に難しいかもしれない。忍耐力の心理的要素があると思う。
1日かかるものは、2つの方法のどちらかで解決すると思う。「あ、セミコロンが余分やった」みたいに、最終的にそれを見つけるか、本当に難しいクロススレッドなんちゃらのひどい現れやったかのどちらかや。でも、どちらにも行きうる。
わしが持ってたバグは、実際わしのバグやなかったが、タスクマネージャーでの現れで、時々100%以上の合計CPU使用率と表示されることがあった。
タスクマネージャーにはかなりばかに見える。それで、長時間それを解決しようとしてた。わしの問題についてカーネルの人たちに話したが、彼らは冷淡やった。カーネルの人たちは特別な種族で、わしのユーザーランドの問題には興味がなかった。たぶんわしのコードの問題やろう、って感じやった。たぶん正しいが、この場合は違って、わしは確信してた。
それで、コードにアサートを追加し続けて、物を一緒に足す準備段階が100を超えることがないこと、最終的な合計が100を超えることがないことを確認してた。最終的に、アサートされることはなかった。でも、時々人々がそれを見るバグを得ることがあった。それで最終的に、わしの電話番号をアサートに入れた。
「このメッセージを見たら、Davepl at 425836、わしの電話番号に電話してくれ」と。最終的に、さっき話してたstressデバッガーで実際にキャッチできて、デバッガーが接続されてる誰かに起こった。調べることができて、実際にカーネルの会計問題でタスクマネージャーの問題やなかった。それでわしがカーネルの問題やと証明できたら、カーネルで修正してくれた。
電話番号を削除すると思うやろうが、コメントアウトしただけやった。だから出荷されて、出回ってるNTのソースコードリーク全部に入ってる。だからタスクマネージャーのコードを見つける方法は、Googleでわしの電話番号を検索して、NTのソースコードを逆引きすることや。
検索の話やが、どこかで、検索を本気で取りたいなら家の電話番号を入れろと言ったのを見たが。
本当や。わしの携帯番号を入れるのは、たぶん一番賢いことやないから少し冗談やが、確実にわかるやろう。でも、アサート自体がすでに深刻なもんや。全ての実行を止めるからな。
アサートを本当に愛してる理由の一つや。全てを止めて、問題を処理することを強制するからな。
わしもアサートについてちょっと宗教的や。真実やないことを望むことはアサートせん。真実であり得ないことをアサートする。それが本当にアサーションの意図やと思う。当たり前のことを言い過ぎてる。でも、それが起こった時は、単純にバグや。警告やない。
どのくらいの頻度でそれが問題を見つけるのに実際に役立つかが魅力的や。どこにでもアサートを置けば、問題の原因に非常に素早く到達できるから。
有機的にコードを構築しながらやるべきもんやと思う。後から追加したいもんやない。だから、各関数で、このポインターは絶対nullやないみたいな仮定があったら、それをアサートしろ。このカウントは常にバイト幅の2倍未満やと知ってたら、それをアサートしろ。アサートすれば親切やから恐れるな。一部の人は恐れてると思う。交差点を曲がる時に誰か来てるかもしれへんと思って左を見ないのと似てる。
そうしたくないかもしれん。でも、それは人がアサートしない理由と似てる。発砲されるのを恐れてるからや。でも、いや、知りたいんや。
タスクマネージャーについて言ったが、当然これについて話さなあかん。君が作った伝説的なプログラム、Windows Task Managerや。どう作ったかの詳細を全部教えてくれ。Windows Task Managerとは何や?
Task Managerは、システムのどのアプリがコンピューター、ハードウェア、CPU、メモリーを使ってるかを調べて、どれが使いすぎてるか、ロックアップしてるか、おかしくなってるかを見つけられるもんや。それらを終了させて殺す能力を与える。だから検査と修正のツールや。
全プロセスをリストする。伝説的なソフトウェアや。クレイジーや。スタートメニューみたいに当然のもんとして受け取ってる。天才や。
わしは人々になじみのある多くのもんに取り組む幸運があって、タスクマネージャーはそれらのサイドプロジェクトの一つで、自分のために欲しくて始めたもんで、最終的に社内に来た。
家で書き始めて、基本的なもんを起動させて、家からは内部APIを呼べないから、レジストリのHQ CurrentPerformやHQ Performanceを使って統計を取ってたと思う。家から働いてる時にそれらを呼べない。社内に持ち込んだ時に、NT Query System InformationやNT Query Process Informationなどを呼んで、非常に素早く本当の答えを得ることができた。これによって、非常に高速で応答性の高いアプリになった。
できるだけ信頼性の高いように書いたから、人々が頼りにするようになった。機能を心配してなかった。そこに入れたい基本的な機能セットがあって、欲しいもん全部を手に入れたが、本当に堅牢にしたかったし、小さくしたかった。元のは87Kみたいやった。
フリーズしないそういうソフトウェアを作るのに何が必要か話せるか?
多くを仮定せん。アプリを実行するためにシェルを呼ぶ場合、それは90秒タイムアウトするTCP IP共有のネットワークパスかもしれん。だから、時間のかかるそういうAPI呼び出しをする時はいつでも、別のスレッドでやることになるし、アプリは全てマルチスレッドになってちょっと複雑になる。
何のプログラミング言語で働いてた?
C言語や。これはWindows NT用やった。
そうや。これは最初にNT4で出荷された。
このプログラムについて興味深い詳細は何や?できるだけシンプルにしなあかんが、できるだけ堅牢にもしなあかん。例えば、実装しなあかんかった興味深い最適化は何かある?
ちょっとハードコアなことを2つやったのに驚いてる。Cランタイムに全くリンクしたくなかった。だから、ランタイム呼び出しを絶対しないようにして、リンクせんかった。それでCランタイムが何であれ、96Kか何かを節約できた。Cの呼び出しにちょっとでも触れたら、アプリのサイズがほぼ倍になるところやった。だから、そうしないように注意してた。
でも、実際にはC++で書いてて、それはオブジェクト付きのC以上のもんや。でも、動作させるためには、ディスパッチテーブルなどからオブジェクトコンストラクターを全部手動で呼ばなあかんかった。それらをやってくれるランタイムがないからな。だから、ランタイムを持たないコンパイラーで作業してる。
コンパイラーにランタイムがないことで多くの余分な作業が必要やが、やれば、信じられないほど小さくてタイトになる。
プログラムのサイズについてやな。全プロセスを追跡すること、そのプロセスでのCPU使用率を追跡することの興味深い側面は何かある?
見たクールなもんは、ハミング符号を発明したとは言わんが、ハミング符号が存在することを知らずに、ハミング符号を発明したようなもんや。
タスクマネージャーの列と行は全て、汚れたかどうかのビットがある。それで、ハミング符号がXとY列を見るのと基本的に同じ方法で見て、どの行が変わったかを見つけることができる。実際に変わったもんを見つけて行く。だから、タスクマネージャーは非常に効率的で、リストビューコントロールと連携して動作し、その機能を提供して、フレームからフレームで変わる個別のセルまで、できるだけ少しだけ再描画する。
だから、非常に高速に描画できる。非常にスムーズにリサイズできて、リサイズはたぶんそのアプリでわしの最大の個人的目標やった。どんなサイズにもリサイズできて、それでも動く。32個のCPUがあっても、その日は不可能やったが、8つのグラフだけ描画して、それから回り込む。
でも、今日でも動く。それはちょっと誇りに思ってる。
信じられへん。タスクマネージャーの進化をある程度観察する機会があったんやが、多くの点で、それほど変わってない。入ってるWindowsのどのバージョンにも合うより綺麗な側面があるかもしれんが、基本的には同じもんや。
機能は非常に同じや。報告はもっと多い。GPUとサーマルとかを追加してて、それはその日にはその能力がなかったから、持つのは本当にいい。
何らかのリファクタリングが行われたか、基本的には同じコードか知ってるか?
わしの知る限り、元のコードはほとんど全部まだそこにある。
だから、その上にある描画コードとダークモードコードとか、その他XMLスキーマコードの層があって、それが87Kの代わりに4メガバイトにしてる。でも、それがわれわれの住む世界や。
作って、そこにあり続けるソフトウェアの一つや。スタートメニューみたいに、削除したら、人々は正気を失うやろう。
しばらくロックインされるかもしれんな。
Clippyにも当てはまると思ったが、Clippyはいつか戻ってくるやろう。
その時に作った他の伝説的なソフトウェアは何かある?Space Cadet Pinball、少なくとも移植の部分に関わったんやな。
わしのオフィスに来て「何してる?」と聞かれた。やってることを話したら、「次の3ヶ月をどう過ごしたい?」と言われた。「わからん」と言ったら、「pinballを移植したいか?」と言われた。Win 95プラットフォーム用のスタンドアロンゲームとしてSpace Pinballを見たことがあった。いくつかの違うテーブルがあった。クールなゲームやった。だから、ちょっと興奮した。
彼らが欲しかったのは、NTが当時の高速グラフィックス、少なくとも応答性のあるグラフィックスができることを示すための視覚的なスプラッシュやった。それで挑戦したが、不幸にもコードの多くがアセンブリで、わしはMIPSにいたから、それをCで書き直して、すべての異なるプラットフォームに移植できるようにしなあかんかった。ゲームの中心には巨大な状態エンジンがあって、50個のエントリがある巨大なswitchステートメントみたいなもんや。
イースターエッグが組み込まれてて、状態をデコードするのはニューラルネットワークを通すような感じや。異なる状態でそれを叩くと。それをさておいて、ブラックボックスとして扱った。だから、わしのコードはその上で実行されて、描画とサウンドと他のすべてをやるが、元のゲームはまだ実行されてる。
最近誰かが聞いてきたが、なぜ少し違うんや?物理が少し違う、Windows 95バージョンと。同じコードやから同じはずやが、わしがそれを保存しようと非常に頑張ってるのに。でも、実際はわしにバグがあって、できるだけ多くのフレーム/秒を描画する。現代のコンピューターでは、pinballに対して5,000フレーム/秒にもなりうる。かなり基本的なゲームやからな。
だから、すべての物理が古いものの30フレーム/秒や何かの代わりに、毎秒5,000回補間される。だから、議論の余地はあるが、より良い、少なくとも異なる物理を得てる。でも、それ以降修正された。
そのゲームがなぜそんなに素晴らしいのか?
素晴らしいデザインやと思う。わしはそれについて何の功績も取らない。それは全部cinematronicsの人たちや。でも、元のゲームは素晴らしいデザインや。わしが実際の物理的なpinballマシンとして持ってるBlack Knight 2000にすごく似てる。レイアウトが実際すごく似てる。それに触発されたかどうかはわからん。だから、いいゲームや。
Tetrisのような特定のゲームについて時々考える。かなり原始的なグラフィックやが、多数の人の興奮を魅了する。そして、多数の人の興奮が素晴らしさに貢献してるのかもしれん。
多くの人が一緒に興奮して、それについて話すと、それが頭に植え付けられる。でも、それは素晴らしいゲームの一つや。SolitaryとかMine Sweeperでも、Mine Sweeperで戦争に行った世代がいる。
これらのもんは、ゲームとしてOSに含まれてたんやない。マウスの使い方を教えるための教育ツールとしてや。
Solitaireはドラッグ&ドロップのやり方を示すためにそこにある。Mine Sweeperはたぶん右クリックやと思う。フラグを立てるか何かする。Mine Sweeper guyやないが、それぞれがあなたに何かを教える。
Mine Sweeper guyって面白いな。知らんかった。興味深い。それは本当や。
でも、これらのゲームに費やした時間がどれほどか、何百万人もの人が何百万時間も費やしたかわからん。子供の学校でコンピューターサイエンス、まあログインする以上のもんやないが、3年生などに教えるボランティアをしてた。
もちろん子供たちは、父親がみんなMicrosoftで働いてるから、あなたがすることで誰も感動しない。でも、子供の一人がわしがpinballに取り組んだことを知って、「わあ、pinballに取り組んだんか」という感じやった。その日々にはみんな知ってた。今の子供たちはたぶん年齢的に外れてる。もう知らないやろう。
しばらくの間、Windows activationの背後にいたと言ってるが、悪いことのように言ってる。
すべては視点の問題や。その悪名高いストーリーを話してくれ。Windows activationとは何や?どう関わったんや?
XPの出荷プロセスの後期に来てくれた。ベータが出たかどうかはわからん。まだ出てなかったと思うが、OfficeのactivationコードをとってWindowsに適応して、WindowsにActivationを追加するつもりやった。でも、それを担当してた人がそれを十分スリップさせて、起こらない予定やった。それで、物事を素早く修正できるという評判があったから、「XPに間に合うようにできるか?」と聞かれた。わからんが、やってみる。
DRM側でDRMのもんをやってる人たちと、プロダクトキーなどの数学をやってる研究の人たちの助けを借りて、XPに間に合うようにそれをやった。収益にどんな実際の影響があるかわからんが、ライセンスキーを強制し始めると、相当なもんがあると想像する。
それがどれぐらいかはわからん。迷惑でもあるからな。
特に電話でactivateしなあかん場合は。われわれが首にかけて運ばなあかんあん重荷みたいなケースやった。データをclearinghouseに渡さなあかん。あなたのキーを承認するバックエンドシステムに。メモリーやハードドライブ容量や、ハードウェアキーが結びついてるさまざまなハードウェアパラメーターとプロダクトキーを伝えなあかん。誰かが電話で読んでくれる文字と数字にエンコードしなあかん。
プロダクトactivationを電話でやるのが苦痛やと思うなら、その回線の向こう側で働いてる人を想像してみろ。1日8時間プロダクトキーを聞くなんて、心を麻痺させる仕事や。
Windowsの問題の一つで、わしの不満の元やったが、設計観点からすごく難しいことは理解してるが、すごく多くの異なる種類の人がWindowsを使うことや。でも、パワーユーザーではない方向に時間とともにどんどん傾いてることに不満があった。だからLinuxは常に本当に素晴らしかった。でも、activationの観点から、あるいは何かの設定から、多くの不満の原因やった。
もっと人気のある最近のエピソードの一つは「なぜWindowsタスクバーを移動できないか」やった。知らんかった。でも、左や上に置いて、もうできない人たちの憤りは明白で、それが彼らの存在への侮辱であることを理解してる。
Windows 11で嫌いな主な理由の一つや。タスクバーの位置など、物事をそれほどカスタマイズできない。基本的なカスタマイズや。物事を設定できるか?
小さなパワーユーザーの一団がそのオプションを与えられれば、このオペレーティングシステムを心から楽しむだろうから。何の費用もかからない。その自由を与えるだけや。
でも費用はかかる。スタートメニューを左や上や右に置く自由は、スタートメニューをレンダリングして、タブをレイアウトして、すべてのことをするコードの複雑性を本当に増やす。
今ははるかに大きなバグの表面で、維持するはるかに大きなコードの塊や。だから、たぶんもっと多くの開発者か、別の開発者か、開発者の時間の一部が必要やろう。だから、問題は、小さなユーザーセットのニッチなニーズを満足させるのに、どの時点でまだ価値があるかということや。それらの決定をするのはわしやなかったが、両方の側面から見ることができた。
映画を作る人が、少数の人だけが気づくような非常に微妙な詳細を挿入するのと似てる。それは本当に報われるやろう。時間をかけて構築される評判の種類があって、非常に強力な波及効果を持つと思う。優秀なソフトウェアエンジニアを雇うことも含めて、多くの利益がある。
あらゆる細部に愛を注ぐ、パワーユーザーを本当に大事にする、開発者を大事にする場所のオーラを作ることや。MicrosoftはGitHubでGitHubを買収して、開発者を大事にすることで、その方向により多く動いてると思う。でも、Windowsインターフェース側では、カスタマイゼーションを。
VS Codeでは、すべてをカスタマイズできる。なぜスタートメニューをカスタマイズできないんや?
わからん。コードの複雑性を増すというのは正しいかもしれん。スタートメニューを書き直したときのスケジューリング決定やったと思う。古いタスクバーとは違うからな。
誰かが「この機能セットを提供しなあかん」という任務を受けて、左と上と右に置くことと、2行のタブとその他すべてのクールな機能を切り取れば、4ヶ月早く提供できる。それが正しい決定やとは言わんが、それを動機付ける種類のもんやと推測する。今は非常に異なるリリーススケジュールにある。誰かが長い間コンポーネントを所有して、それから取り組んで磨けるところに落ち着くまで、多くの職人技は見られへん。でも、常に回転してて、UIが毎リリースで変わってるなら、決してそのレベルの磨きは得られへん。
UIはかなりいいと思うが、スケジューリングのことやないと思う。職人気質のことやと思う。タスクマネージャーのように。
そこに男や女がいて、それを自分のもんとして所有して、長期間にわたってそれに誇りを持つ人がいれば、彼らは一人で短時間で本当に素晴らしいものを作ることができる。
マネージャーや会議のスケジューリングなどを持つ大きなソフトウェアエンジニアリングチームがあるなら、そうや、それなら君の議論が当てはまる。
でも、Googleが非常に得意な、クールなことを作る個人の開花を可能にするなら、そう試した。Googleや。
楽しんで、クレイジーなことをやって、それから全体のエコシステムに統合することを試みる。わからん。
個人の開発者として、スタートメニューやタスクバーをカスタマイズすることを作ることに大きな喜びがあるから。何百万人もの人がそれを使うことを知ってて、それから何千、何万の開発者がタスクバーの微妙な側面をカスタマイズすることを使うかもしれないことを知ってる。タスクバーをカスタマイズするJSONのようなもので、どれほどの喜びを作り出すか、人々に与えるかを知ってる。
でも、カスタマイゼーションを与えることは、わたたちがあなたにとって正しい答えを見つけられなかったことを意味するというSteve Jobsの側面にどう応えるか?
4つの答えがすべて等しく正しいのかもしれん。わからん。でも、Appleが存在することを嬉しく思う。美しいもんやし、その設計の理想は素晴らしい。でも、わしは常にWindowsが対比を作ると思ってた。Windowsのポイントは、あらゆる種類のデバイスで動作する、はるかにオープンであることになってるオペレーティングシステムになることや。Windows subsystems for Linuxで、その方向により多く動いてきた。開発者にやさしい全体のエコシステムや。
インターフェースはその精神にあるべきやと思う。でも、セキュリティ脆弱性も作成される可能性があると思う。Windowsは攻撃を受けてて、とにかく安全に保つのが非常に困難やから、コードの複雑性だけやない。
その接線で、Windowsのzipファイルサポートも開発した。Visual zipを作成した、と言ったな。最終的にzipフォルダーに発展したやつ。その話をしてくれ。
それも家で書いたソフトウェアの一つやった。起こったことは、妻と出かけてて、日曜の午後やったと思う。アパートに住んでて、車で回って見てた。1993年で、そこの住宅市場がどんなか見てた。男がいて、美しい3ベッドルームの家とコルベットのコンバーチブル93年の赤いトーチレッドが車道に駐車されてて、家が売りに出てる。300kやったと思うが、その時点で300kも頭金も出す見込みはない。
それで、チラシを取って、家の写真を切り取って、モニターにテープで貼った。それがわしの夜にものを書くインセンティブやった。家に帰ったら2つのことをしてた。一つは、仕事でバグを修正してるだけでは得られない創造性を表現すること。もう一つは、余分なお金を稼ごうとすることや。
それで、実際にシェルチームに行く前にシェル拡張を書いた。それを始めた。それが、フォルダーを持ち上げる方法についてのMSDNサンプルかMSJサンプルを見たことに基づく、シェルチームに行くことへの興味につながった。フォルダーを持ち上げる基本的なテンプレートを手に入れたら、zipファイルサポートを追加するのは全部増分やった。
シェアウェア製品としてリリースした。1995年か29.95ドルやったと思う。数百か数千部売った。ある日、仕事の準備をしてたら電話があって、女性やった。「Dave Plumerですか?」と言われた。「そうです」と言ったら、「Migelzipを書いた人ですか?」と言われた。「そうです」と言ったら、「MicrosoftのBetsyです。買収について話し合いにきてもらいたいんです」と言われた。「どの建物にいますか?」と言った。「何の意味ですか?」と言われた。「寄ります」と言ったら、「いや、旅行と法務と話さなあかんし、これ全部セットアップしなあかん」と言われた。「何を言ってるかわからん。同じ場所で働いてるのに、なぜ寄れないんですか?」と言った。文字通りそう言ったかわからん。
でも、数分のやり取りがあって、二人とも彼女がわしがそこで働いてるのを知らんかったことに気づいた。
作者にコールドコールして、それがわしやったとわかった。
面白い。それで彼らがオファーをしてくれた。オファーを受けなかったら、今の選択肢は自分のバージョンを売り続けてMicrosoftを辞めるか、自分のバージョンの販売をやめてMicrosoftで働くか。どちらもよくない。
もちろん仕事は残すが、この収入源もまだ欲しかった。他の選択肢は、彼らのオファーを受け入れることやった。それがやったことや。それで中古の93年の赤いコルベットを買った。
内部でそれを作り続けることができたんやな。
そうや。多くの機能を取り除いた。簡素化するためやった。暗号化やその日のzipプログラムで一般的やった多くの機能があったが、Windowsには適さなかったやろう。当時、暗号化は軍需品のようなもんやった。だから、オペレーティングシステムのさまざまな部分に暗号化をむやみに追加できなかった。そういうもんを取り出した。マルチボリュームサポートも、簡素化のために取り出されたと思う。
zipについて全般的に話せるか?zipと圧縮のその全体の歴史?
BBSの時代に本当に生まれた。人々がモデムでダイアルインして、BBS’s onlineからtrialwareやsharewareやその他のもんをダウンロードして、それらを圧縮するためやった。実行ファイルは約半分のサイズに圧縮される。他のもんははるかに圧縮される。
でも、Phil Cassという男がMS DOS用のPKzipと呼ばれるコマンドラインプログラムを思いついた。プログラムの圧縮ができて、彼にはかなり悲劇的な弧があるが、PC業界全体で遍在するようになって、ほぼ誰もがそれを使ってた。Windowsが出た時、zipファイルを開く方法がなかったが、誰もが10年間それらを作ってたから、zipサポートをWindowsに直接入れたいという欲求を本当に駆り立てた。
それも今日まで一緒にあるソフトウェアのもう一つの作品や。
大幅に改良できるが、シングルコアの日々に書かれたから、マルチスレッドは何もしない。96コア795を持ってても、zipファイルを解凍するのにその中の一つを使う。
Microsoftで参加した他の素晴らしいもんは何やった?他のソフトウェアは?
Windows Media Centerの初期プロトタイプに取り組んだ。96年にやったと思う。
当時はソースがなかった。Raging RudolfとオリジナルのSouth Parkビデオ、クリスマスのやつのMPEGビデオファイルのCDがあった。今日の職場では全く不適切やが、衛星皿、18インチの皿をDSSで屋根に置いてもらうまで、それが持ってたコンテンツ全部やった。建物にケーブルを引けなかったからな。
それで、最終的にMedia Centerに似た外観のもんを作り上げた。リモコンでデスクトップで距離視聴UIやったのやWindowsのためやった。20フィート離れたところから現在のスタートメニューを見るのは素晴らしくない。
悪名高いブルースクリーンオブデスの話を教えてくれ。
それは、Windowsが他に選択肢がない時や。カーネルが何か違法なことが起こった状態に入った時や。デバイスドライバーが所有してないメモリーの一部に書き込もうとしてるか、メモリーの一部を2回解放しようとしてるとしよう。絶対に起こることができないもんで、カーネルには他に選択肢がない。マシンを落として作業を保存する。
まあ、保存するんやない、さらなる損傷を防ぐ。
ブルースクリーンを表示して、スタック情報を印刷する。設定によって、現在のWindowsでは時々悲しい顔だけやったりする。
ブルースクリーンが生まれたWindowsの最初のバージョンはいつか?
Windows 3にはブルースクリーンがあったが、Windows NTのブルースクリーンとは全く関係ない。
Windows NTでブルースクリーンを書いた人と話した。彼の名前はJohn Vertや。青地に白を選んだ理由は、ラボを歩いて、50台のPCがすべてstressを実行してるのを見て、「あ、あれはブルースクリーンや。クラッシュした」というほど単純やなかった。彼が構築してたMIPSファームウェアが白地に青やった。
使ってたエディターのVisual Slickeditも同じカラースキームやった。だから、コード、ブート、クラッシュ、リブート全部同じカラースキームでできた。
なぜコンピューターの多くの問題が電源を切って再びつけることで解決できると思う?
コンピューターを時間をかけて実行すると起こる主要なことが2つあると思う。一つは、メモリーが使われて解放されないことや。
だから、ヒープやスワップファイルやどこかに蓄積されて、動作が鈍くなる。もう一つは、コードが開発者が予想しなかった、あるいはあまりうまくテストしなかった状態になることや。
それは稀な状態かもしれんが、今NotepadやWordやExcelがその状態にあるから、システムがおかしい。マシンを再起動するか、シャットダウンするか、再起動するだけで、新しい状態になって、メモリーリークはない。
だから、基本的に多くの罪を覆う。おかしい状態のいくつかのソフトウェアが相互作用するやり方で、なんか全体のシステムがちょっと奇妙に動作し始める複雑なメタおかしい状態を作り出す。
それをどうにか修正する。
Microsoftでの間に見た最高のコードと最悪のコードは何やった?記憶に残る美しいコードと醜いコードは?
美しいコードに関しては、わしにとって際立つもんが2つある。一つは一般的なカーネルで、Windows カーネルの実際のNT APIなどに降りていくと、非常によく書かれてて、ユーザー側では見ない、あるいは少なくともユーザー側では珍しい標準で書かれてる。
ユーザー側では、たぶん見た中で最もクールなコードは、Bob Dayという人が書いた名前付きパイプの実装で、共有メモリーの使用を排除するためやった。
Windows 95には、すべてのシェルプロセス間で共通のもんを保存するシェル間で大きな共有セグメントがあった。それをやりたくなかった。共有メモリーはNTでは産業レベルで悪いアイデアや。それで、彼は名前付きパイプでそれをやる方法を思いついた。そのコードレビューをしたのを覚えてる。コードを見て歩くのはすごく印象的やった。「わしが挑戦したとしても、あれはできなかったと思う」という種類のもんの一つやった。
これまでに出会った最高のプログラマーは誰やった?
誰もいないと思う。多くの偉大なプログラマーに会ったが、わしを多く印象づけた一つのストーリーを話そう。会社に来てまだ6週間ぐらいの新人やった時のことや。
さっき言ったOLE presentation cacheに取り組んでて、Windows 95にいて、WordにExcelを挿入してて、カーネルデバッガーにいて、OLEで何かが間違ってる。まだx86コードをほとんど書いたことがなくて、Windowsを見てなぜもんが deadlockされてるかを理解しようとしてる。最終的に行き詰まった。だから、わしの範囲外や。
Windows 95カーネルチームに「誰か寄ってもらえるか?」とメールを送った。約10分後に、この開発者がやって来て、ヌルモデムケーブルを持ってる。2台のマシンを一緒につなげて、一方でもう一方をデバッグするためのものやったが、すでにセットアップされてた。それで座って、wind debugを使ってる。ひどいデバッガーや。呪われた感じや。でも、それに非常に非常に有能やった。コールスタックをバンバン飛ばして、カーネルのオブジェクトを全部チェックして、誰が何を待ってるか、なぜデッドロックしてるか、何がシグナルされてて何がシグナルされてないかを見つけようとしてて、コールスタックが飛び交う素早いバレエみたいやった。それを見てて、かなり圧倒された。いいプログラマーやが、この人は素晴らしいデバッガーで、こんなパフォーマンスを見たことがない。約5分で「あ、わかった」と聞こえて、それから切断して立って去った。
それはLaura Butlerで、Microsoftの著名なエンジニアになった。まだそうやと思う。引退したかどうかはわからんが、それで、Microsoftの開発者がデバッグしてる時にどんな感じか、カーネル開発者がどんな感じか、女性開発者がどんな感じかさえ、わしの標準を設定した。サンプルセットがすごく小さかったからな。でも、すごく高い標準やった。
人生で何かを超有能にできる人より愛するもんは少ない。でも、エンジニアリング空間では低レベルなほどいい。例えば、インフラストラクチャ、コンピューターインフラストラクチャを実行したり維持したりできる人たち。個別のコンピューターやなく、コンピューター同士が通信して一緒に動作するやつ。
そういう人たちは魔法使いや。見てて本当にインスピレーションを受ける。大工でも、本当にうまくやられたものを見るのは大好きや。
人間がそれを達成できるのを見るのは美しい。土木工学の分野でも、橋を見ると、それを作るために何人の人が集まらなあかんかったか、今何百万人もの人が毎日それを使ってる。
ソフトウェアでは時々、あるもんによって影響を受ける人の数を視覚的に見ることができない場合がある。Linuxと、Linuxを構成するすべての異なるオープンソースシステムによってどれだけの人が影響を受けるかを想像してみろ。信じられへん。Task Managerは、長年にわたってどれだけの人がそれを使うかのソフトウェアの例や。何回?クレイジーや。
たぶん何十億や。
月に20億かそんな感じや。メトリクスを見たことがあって、上の方にある。
君にとってクレイジーや。それについて愛してることやが、時々ソフトウェアを設計して、複雑で、頭の中で動作するようになって、配管が動作するようになって、どう実行して流れるかがわかって、最終的にコードを書いて、コードが頭の中で描いてたことをやるのを体験したことがあると確信してる。
それで、頭の中にあったそのもんの何十億ものコピーが、何百万もの人、何十億もの人のマシンで実行されてる。それ自体がわしにとってはすごくクールや。虚栄心のことほどやなく、それに感銘を受けるということや。
長年にわたって君のプログラミングはどう進化した?
最近は複雑さにはるかに気を遣う。昔はコードを書いて、コードを書き続けて、コードを書き続けて、ある時点で戻ってきれいにしてた。
今は反対に書く。本当にきれいな初期の骨組みコードを書いて、それから肉付けしようとする。自分のもんや他の人の作成で、めちゃくちゃになりすぎて修正できないプロジェクトにあまりにも多く関わってきたからな。だから、時々前もってする作業が報われる。
長年にわたってどのプログラミング言語を使ってきた?主なものは何やった?
わしにとっては、C++とアセンブリ言語やった。
今日でも、C++が本当に頼りにしてるものか?
そうや、今はLuaとPythonを100%やってるが、それは取り組んでるサイドプロジェクトだけや。
LuaとPythonの迂回について話せるか?C++について何を愛してる?
やってることは、ゲームTempestをプレイするAIを作りたかったんや。古いAtariゲームTempestや。これは実際にわしが世界記録を保持してるゲームや。
Atari Tempestについて話してくれ。どんなゲームや?
1980年の3Dベクターゲームや。非常に複雑なゲームや。360度の完全な動きがある。画面に8発ある。11の敵みたいなのがいる。スパイクがある。だから、非常に複雑なゲームや。Pongか何かをやろうとするのとは違う。
結局やったことは、まずマシンからROMを取り出して、コードをリバースエンジニアリングしたことや。だから、Tempestのコード全部がどこにあって、何をするか、ゼロページ変数がどこにあるか、もんがどこにあるかの感覚を得た。
何を見てるか説明してくれるか?
それは非常に幾何学的や。
それは君がプレイしてる?
それはわしや。Daveが上の中央にあるハイスコアや。見てるものを説明してくれるか?
まあ、3D幾何学の世界や。基本的に形に巻かれた3D Space Invadersで、敵がチューブの中央から外側に向かって降下してきて、みんな異なる行動を持ってる。
長い話を短くすると、うまくプレイするにはかなり複雑なゲームで、AIにそれをやらせることができるか見たかったんや。ゲームのメモリーのどこに興味深い部分があるかがわかったら、それらをパラメーターとして追加して、ゲームが実行されてる間にゲームのメモリーからすべてを抽出してパラメーターとしてまとめるLuaアプリを作って、ソケット経由でPython側に送る。それからPython側がRL学習をする。Dueling Deep Qを使ってると思う。
2つのヘッドとテールがあって、お互いを追いかける。今レベル36ぐらいまでプレイできる。ほとんどの人間よりずっといいが、レベル96やから、まだまだ先は長い。
君は撃ってる赤いものをコントロールしてる。
選択肢は何や?時計回りか反時計回りに動くだけ、それから撃てる。
そうや。回転ノブがある。光学スピナーで、ファイアボタンと緊急時のスーパーザッパーがある。でも、基本的にはファイアと回転や。
好きなC++に戻ろう。長年それにこだわってきたのはなぜや?C++について何を愛してる?
好きなCコードをクラスにカプセル化できるからや。
わしは大きな…実際、君は本当にC言語の人やな。
そうや、本当にC言語の人や。2種類のC++を書くが。ポインターなし、文字列なしの本当にモダンなC++20を書く。文字列がないから、わしに関する限りRustと同じぐらい安全や。
あるいは、クラス付きのCを書く。標準的なCやが、ポリモーフィズムとカプセル化がある。わしのコードのほとんどがそれや。でも、両方やろうとしてる。
スキップした時間の全体的な伸びについて聞こう。Microsoftで、その後長年にわたって多くのソフトウェアを作ってきた。サイドでMicrosoftにいる間、その後多くの成功したソフトウェア。君の会社の一つがSoftware Onlineで、ユーザーをアップグレードにあまりにもうるさくしたということで問題に巻き込まれたと見た。その全体は何やったんや?その経験から何を学んだ?
家族の健康の不安、子供が病気になった時を除いて、それがわしの人生で最も怖い時やった。それに至る期間は、最も活気づけられて興奮した時の一つやった。起こったことは、Microsoftにいる間、これらのシェアウェア・ユーティリティを全部書いて、サイドで売ってて、一つをMicrosoftに売った。話した通りや。それらが本当にうまくいき始めた。
それからオンラインでバナー広告を発見して、FastClickと呼ばれるサイトにクレジットカードでサインアップしたと思う。バナー広告のインプレッションにこれだけ払うと言える。バナーがある。それが回転してくる。上限を設定しなかった。月曜日に戻ってきたら、バナー広告に1万ドルぐらい使ってた。
「なんてこった、これをわしの妻にどう説明するんや?これはバグや。間違いや。わしのせいや」と思った。売上を見たら、3万8千ドルぐらいの売上を上げてた。「なんてこった」と思った。やらなあかんことは、ある時点でそれを拡大するだけやと。基本的に次の数年間それをやった。
問題に巻き込まれた理由は、司法長官が来て、12の訴訟理由があったことやった。10個はとんでもないもので、自閉症の人として、わしはそれを乗り越えることができなかった。この10個のことは絶対に真実やないことを知ってる。なぜここでそれらについて話してるんや?彼らが気にしてるのは、真実かもしれない2つのことだけや。
真実かもしれない2つのことは、30日間のトライアル版やったということや。30日が終わった後、それを続けて実行して、買わないかアンインストールしないと、1日に1回、10分おきやなく、1日に1回、あるいはコンピューターを起動するたびに最大1日に1回、思い出させる。司法長官は、それは頻繁すぎる、スパムに相当すると主張した。
それで、週に1回に制限することで彼らと合意したと思う。ワンクリックでアンインストールできるボタンがなあかんかった。そういうことをやった。もう一つは、その日々には、誰かがソフトウェアを買っても、オンラインで買ってダウンロードを得ても、メディアが家に現れることを完全に期待してた。
2001年、2003年の話をしてるが、ソフトウェアを買ったら、ディスクが現れるという期待があった。だから、ディスクで履行することをデフォルトにして、3.95ドルか4.95ドル余分やったが、非常に明白やったが、チェックボックスで、ディスクを家に送るために有効になってた。そうしないと、これらの電話を全部受けることがわかったからや。人々は注文して、2週間後に電話して「ディスクはどこや?」と言う。見ると、ディスクを注文してない。「全部キャンセルしろ、待ちたくない」となって、多くの返品があった。
ディスクを含めなかった場合は。それで、ディスクを含めることに決めたが、それはワシントン州でのネガティブ・アファーメーション・ビリングの優先度違反や。デフォルトで高い購入価格を与えてるからな。
ソフトウェアユーザー関係について。どのくらいの頻度でユーザーをもので煩わせるか?何も言わなければ、実際に欲しいもんを発見しない可能性がある。でも、あまりにも言いすぎると、イライラされることがある。
欲しくないのは、それをやるか、買うか、それを取り除くために何かをさせることや。それがWindows に少し悩まされる理由の一つや。今日でもWindows 11でも、こんな質問をしてくるWindows。「これが欲しいか?」みたいに。例えば、Windowsにログインするのに本当にMicrosoftアカウントを使いたくないんや。今は基本的に必須やと思う。回避する方法がないと思うが、それをしないことを非常に難しくしてる。わしを騙そうとしてるような気がする。
わしがやりたいことをやらないように騙そうとしてるような気がする。「スキップ」をクリックして、何かをする必要があるのか、「本当に?」みたいに考えなあかん。わしがやりたいことをやるために、脳を使いすぎなあかん。インターフェースとして、わしが何をしようとしてるかを知ってるのに、わしがやりたいことをやらないように騙そうとしてる。
わしがそれについて嫌いなのは、変換には確実に効果的やと思うが、ユーザーの利益を考慮する長期的には本当によくないことや。
わしを本当に困らせるのは「推奨設定を使用」や。Windowsのアップグレードをやったばかりや。ステップを踏んで、この新しいダイアログウィザードを通ってて、推奨設定を使用する。やるべきことのように聞こえるが、Edgeブラウザーとかその他のもん全部にリセットするのがかなり確実や。だから、彼らによって推奨されるが、わしには推奨されない。それが難しさや。
デフォルトブラウザーをEdgeにリセットすることで、どんな効果があると思う?本当にユーザーの忠誠心を獲得すると思うか?そうやったら、何らかのユーザーベースから受動的な忠誠心を作るかもしれん。メトリクスでは実際にEdgeユーザーの数が増えたように見えるかもしれんが、本当は時間をかけて受ける評判のダメージで、Edgeが完全に信頼できないもんだという感じが作られる。不公平やが、Edgeは本当に素晴らしいブラウザーやと思うが、この不快な感じがある。
オペレーティングシステムが敵対的であることを望まない。時々Windowsが敵対的に感じられることがある。君の最善の利益を持ってない感じや。それがある程度わしを悩ませる。
一般的に、誰かが君にとても親切で、基本的に何かを売ってる時、不信感を持つ感じがあると思う。そういう交流には特定のオーラがある。オペレーティングシステムがそうやって君と交流してる時、そうや、年間1.99ドルをWindows Proに払うか、月20ドルか、料金スケジュールがどうであれ、それ以上売り込まれないし、データを収益化されないとかそういうことがない方がずっといい。
そこから正しいバランスを見つけることについて学んだか?
今ははるかに自覚的や。広告に関して特に違うやり方をするもんがある。
David Oglevieという男がいて、昔フォルクスワーゲン・ビートルの広告をやった。ビートルの写真があって、白黒で、「lemon」と書いてあって、その下にテキストのブロックがあった。だから、クリックベイトで情報的や。わしはいつもそのパターンに従おうとした。でも、何かを売るには3つの方法があると思う。
セックス、恐怖、欲を使うことができる。セックスはソフトウェアにはあまりうまくいかない。恐怖はアンチウイルスなどにはうまくいくが、最適化やコンピューターを高速化するユーティリティにはそれほどうまくいかない。だから、わしはいつも欲の側面に応えようとした。コンピューターを高速化する、より多くのRAMを利用できるようにする、価値提案が何であれ。
でも、今気づくのは、わしの知識と自閉症の人として、それを見てるが、他の人は彼らの背景知識で見て、違う結論に達するかもしれないということや。だから、わしは人々の欲望本能を刺激しようとしてるだけのつもりで、人々を怖がらせてるかもしれん。だから、今日はそういうことにもっと敏感になるやろう。
ばかげた質問やが、トップ3のWindowsオペレーティングシステム、異なるバージョンは何やと思う?
わしはWindows 2000 serverのファンや。
XPはいつ出た?
2001年。
XPの前は何やった?
2000年。
2000年はよかった?
そうや、好きやった。XPについてくる視覚的なフラッシュはないが、システムとして、特にサーバーオペレーティングシステムとしては、その日には素晴らしかった。でも、XPはたぶん完全性の観点から、影響と持続期間から言えば。
消費者にとって最高のWindowsやったと思う。そうやと思う。確実に長寿を得た。人々は今でもそれを実行するやろう。セキュリティアップデートを得られるなら、今でもそれでもんを実行するやろう。わしが必要とするWindowsの98%をやるからな。でも、そうや、それは信じられなかった。わしはWindows XPを1番に、それからWindows 95を2番に置くやろう。
君のメトリクスは何や?個人的な好み、業界への影響、業界への影響の安定性、プログラミングと同じように、コード臭みたいなもんがある。すべての機能がどのようにオーケストレーションされ一緒になったか、全体に浸透して一貫していたデザイン哲学があったか、機能が多すぎず、あまりにも簡素化されすぎず、複雑すぎず、どのくらいの頻度でクラッシュするか、ブルースクリーン、そのすべて。非常に適切な説明かどうかはわからんが、クリスプと考えてる。粗いエッジがあまりない。やることをやる。キビキビしてる?
スロットマシンをプレイして、ハードウェアとソフトウェアを愛してることを考えると、スロットマシンはどう動作するかを聞くのに完璧な人や。
台無しにしてやって嬉しいわ。わしがスロットマシンをプレイするのは皮肉やと思う。全体的に負ける賭けであることを知ってるからやが、楽しむ明るいライトと高コントラストの色のドーパミンごちそう全体がある。
だから、プレイする。でも、内部で起こることは、基本的に次のランダムな数を生成して、確率とペイアウトの観点から結果が何かを決定する以外に何もしないブラックボックスメカニズムがある。それからゲームが「それに合わせて映画を作らなあかん」と言って、3つのバーか何かかもしれんが、相関はない。
リールを回転させてどこに着地するかを見て、何を勝ったかを調べるんやない。完全に反対方向や。勝ったかどうか、勝ったなら何かを決定してから、そのシナリオに合うもんを作り上げる。
それは確実にみんなにとって少し台無しや。どんなコードが動かしてる?
本当にはわからん。一つに近づいて内部アクセスを得ようとしたが、すごく困難やった。あまり多くを教えたがらない。それほど深い秘密やないと確信してるが、すべて基本的なWindows PCやが、わしがあまり知らないある種の非常に安全な飛び地の上にある基本的なWindows PCや。
極度に安全でなければならない。
70年代か80年代に、ラスベガスに技術者がいて、スロットマシン用に自分のROMを燃やしてて、バックドアが入ってたんや。それで、マシンを修理する時、自分のROMを入れて、6ヶ月後に戻ってきて、バックドアを呼び出すんや。人間がとても好きや。
他にお気に入りのそういうシステムはある?
古いハードウェアがたくさん好きや。車を修復するから、1960年代のマッスルカー、車とトラックをたくさんやる。
古いコンピューター。PDP11を修復するのがわしの魅力で、過去6ヶ月ほどの特別な興味で、それらをいくつか作ってきた。
PDP183について動画を投稿してるのを見た。その全体のプロジェクトは何や?
基本的に、いくつかのPDP11を作ってきた。長年にわたってそれらの部品を全部獲得してきて、作れる最高のPDP11を作ろうと決めた。PCを最大限にしようとするように、PDP11を最大限にしようとするクエストみたいなもんやった。4メガバイトのメモリーがある。その日には大量やったやろう。
ここで見てるのは何や?
一番上はPDB11 70のコントロールパネルで、ほぼ無視できる。その下に2つのシャーシがある。
異なるノブは何や?すいません、ここでばかな質問をするが。
LEDのどのビューを得るかをコントロールする。通常はデータバスを見て、アドレスバスを見ることができる。マシンを一時停止して、バスのアドレスを編集して、スイッチでメモリーにもんを預金できる。
触覚とLED。コンピューターがあるべきと想像するもんや。すごくクール。
これらは何や?これらはDU1、DU2や。奇妙なフロッピードライブや。1つのステッパーモーターを持つデュアルフロッピードライブや。だから、両方のヘッドがシャム双生児のように一緒にシークする。
これで何をしてる?修復してる?
そうや、修復してる。実際に動く?
そうや。点滅するライトは本物や。それから、カーネルを再構築しなあかんかった。デバイスドライバーを追加できない。カーネルを再構築してどのデバイスもサポートしなあかん。新しいディスクコントローラーを追加すると、カーネルを構築する時や。だから、ソースを見つけて、コードを見つけて、これでコードを実行できる。
そうや。
自閉症について2冊の本を書いた。自分自身が自閉症で、自閉症の人の心と、神経典型的な個人の心の基本的な違いについて話してくれるか?
自閉症の基本的な思考理論はモノトロピズムと呼ばれる。
基本的に、わしの脳は一つのことをするということや。すごく激しくやって、それが終わったら、次に進んで他のことをする。でも、わしはマルチタスカーやない。どうあっても連続的な単一タスカーや。
自閉症は通常、感覚過敏と反復行動、それを複合する行動問題を伴う。個人が人生でそれらを調整したり適応したりできないレベルまで上がると、それは障害になる。たぶん人口の1から2%や。
自閉症との人生の最大の利益は何や?
特定のタスクに信じられないほどの集中と献身をもたらすことができる。でも、愛するもんでなければならない。報酬のあるもんでなければならない。進歩できるもんでなければならない。それについて真実でなければならないもん全部がなければならない。
電車で遊ぶ子供のような感じを得る。同じ感じや。
ADHDにも苦しんでると言ったが。
結構な程度で。焦点を維持することや、実際に焦点を得ることが問題や。だから、非常に気を散らされやすい。ノイズキャンセリングヘッドフォンをして寝るか、眠れない。そういう感じや。
でも、一度ロックインされると、非常に気を散らすのが困難や。だから、ちょっと逆説や。
その状態に入るのが困難や。
自閉症の心での人生の最大の挑戦は何や?
他の誰が何を考えてるかがわからないことや。だから、この交流でわしがもし君の立場にいて、君やったら、何を考えるかは知ってる。
それがわしができる最善や。でも、神経典型的な人のほとんどは、「まあ、Lexはたぶんこう感じてるやろうな」という感覚を持ってると思う。こうやって行動してて、彼の反応はこうで、表情はこうやから。それは全部わしには失われてる。だから、取り扱うすべての人に対してプロキシNPCゲームをちょっと実行してる。
それは社会的交流を少し複雑にするんやな。
そうなりうる。電話は特に困難や。多くの他の手がかりに頼ってるからな。誰かが電話だけで、声だけがある時、人々の間で暗示されてるもんがたくさんあって、わしはそれを逃す。だから、FaceTimeの方がはるかに良い。誰かがジョークを言った後、微笑むかもしれないところ、電話では君が皮肉を言ってるのか真剣なのかがわからない。
それが長年にわたって少しトラブルに巻き込まれた。
わしの妻とも何度もあった。自閉症にはある種の文字通りさがあって、何年も彼女が何かを言って、わしが「それは理にかなわない。何を意味してるかわかる」みたいなことがあった。彼女は「わしが何を意味してるかわかるやろ」みたいに言うが、いや、君が言ったことしかわからんし、ここでただ対立的になってるんやない。文字通り君が言ったことしか知らんし、それがないんや。
会議で3、4人いて、わしが唯一の自閉症の人やった時のことを覚えてる。彼らがこのコミュニケーションループをしてるのがわかって、「みんな、何が起こってるか教えてくれ。ここで何が言われてるかわからん」という感じやった。
これに関連して、Bill Gatesとの初期のやや気まずい出会いがあったと言ったな。その交流の話と、自閉症がどう関わってくるかを教えてくれるか?
Microsoftでインターンシップを得た初めての夏、Billがインターン全員を家に呼んだんや。その年に雇われた20人か25人ぐらいやったと思う。裏庭でバーガーとビールを飲んでチャットするためやった。
もちろん、まだBill Gatesで、当時でも十分大物やったから、ちょっと緊張した。それで、当時のわしのメンターみたいやったマネージャーのBenが、彼を知ってたから、わしをBillに紹介してくれた。これがDaveや。カナダからのわしらのインターンや。4ヶ月の間で、ディスクコピーとスマートドライブでこの機能をやった。わしがやってることを全部リストアップしてくれた。
でも、わしは止まった。「いや、実際は3ヶ月やった」と言って、彼らを中断しなあかん。二人とも「えっ?」という感じで、お互いを見て、わしはそれが訂正するのに間違った時やったことに気づいた。
小さな不正確さが君を悩ませるんやな。
わしをクレイジーにさせる。もちろん、カジュアルな社会的交流に与える影響を知らない。
それがさりげない社会的交流に与える影響を意識するのは、君にとってささいなことやない。
昔よりはずっと良くなった。以前は知らんかったし、無意味に訂正を会話に注入することが、どう影響を与えて、相手をどう感じさせるかがわからんかった。今はそれがもう少しわかるようになった。
自閉症の心を持つ人々が、繁栄、財政の観点からこの世界で栄えるためのアドバイスは何かある?
一番言えることは、自分自身やなく、できることを売ることや。就職面接に行って、自分の人格と自分がどれだけ素晴らしいかで驚かせようとするなら、うまくいくかいかないかもしれん。
でも、仕事のポートフォリオを持って行って、「見て、これがわしのGitHub履歴で、これが貢献した素晴らしいプロジェクトで、これがわしが書いた実際のアルゴリズムで、これがわしがすることや」と言えるなら、それではるかに進歩すると思う。
大きなチームでのソフトウェアエンジニアリングの多くには社会的要素があるんやが。
そうやし、それはわしにとって責任やった。人々を管理し始めた時が最大の欠陥やったと思う。今度は彼らの希望、夢、願望、彼らを動機づけるもんについて心配するからな。わしにとっては謎の人生全体を持ってる。わしと全く同じように動機づけられ、指導され、励まされ、報酬を与えられたいと仮定してるからな。常にそうやないんや。
もっと多くの肯定が必要な人もいる。お金が欲しいだけの人もいる。重要な会議に出て決定を下したい人もいる。でも、わしはそれにほとんど気づいてなかった。
最終的に、管理してる人はみんな独自のインセンティブと優先順位のセットを持ってて、わしが思ってるものとは全く違うということを学ばなあかんかった。
より明示的にして、より良くコミュニケーションを取ることができるんやな。彼らの興味について聞くとか。
それがやり始めたことや。あけすけに聞くことや。そういうソーシャルダンスが苦手やから。
ソーシャルダンスの一部は、言われてない多くのもんがあるということや。人を読むことはできるが、自閉症ではそれをするのが少し難しいかもしれん。だから、もんをより明示的にしなあかん。皮肉と風刺とユーモアも難しいかもしれん。
Microsoftでの初期の交流のいくつかの壁の蝿になりたい。
ラップトップを投げつけられたりしたことがあるし、確実に自分のせいやったと思う。
10秒自閉症テストについて書いてるな。どう働くか説明してくれるか?
もちろん、2つの答えを持つものは高いエラー率があるが、社会全体にとって人々から最も重要なことは何や?協力か創造性か?一つを選ばなあかんなら、最も重要なのはどっちや?ほとんどの神経典型的な人は一般的に協力に傾く一方、スペクトラムの人は個別の問題解決者として創造性に傾く傾向がある。
もちろん、そこにはある種のエラー率がある。精度を倍にしたいなら、2番目のテストを使うことができる。10の椅子がある部屋に6人が入って、その椅子に座った。何個の椅子が残ってる?4つと言う人もいるが、わしは10と言うやろう。まだそこにある椅子の数やからな。明らかに本当や。わしは嫌な奴になろうとしてるんやない。複雑にしようとしてるんやない。でも、それがわしの心の働き方や。だから、その質問を見ると、どう答えるかによる。
物事をどれだけ文字通りに受け取るかやな。
わしにとってはすべてが非常に文字通りや。子供の時、祖父がキッチンでお母さんのプランターホルダーを作ってて、やり過ぎやと思った大きなアングルブラケットを使ってた。
「植物を支えるのに十分大きいと思う?」と聞いたら、「馬を支えるのに十分大きい」と言われた。わしは5歳やったが、なぜキッチンに馬を連れて来るのか、なぜプランターに馬を置くのか、これらのことがすべて非常に混乱した。わしには全く意味をなさなかった。明らかに比喩やったが、人生の多くの間、比喩を文字通りに受け取ってた。
感情的事後処理を神経典型的世界を理解するのを助けるために社会的交流を置き換えるために使う戦略として言ったな。何が含まれるか?どうそれが助けになるか?多くの人に役立つと思う。
誰かに会ったら、特に初めての人で、最初の数回の交流やったら、今日君に会うのもそうやが、後で家に帰って、選択をしなあかんかった瞬間を全部リプレイする。たぶん最も不快なもんから先に、その瞬間で何を間違えたか、何を逃したか、相手は何を考えてたか、次回そういう状況をどう改善できるか、それを修正するか電話をかける必要があるかを見つけ出すために。極端な場合にはそういうことや。
人生で2、3回起こったことがある。父が69年に新品で買った車を修復してもらったことがある。まだ持ってる。50年持ってるんや。20年前ぐらいに修復してもらって、職人が何千時間もこの車に取り組む3年間のプロセスやった。
車を取りに行って、車を調査して、仕事にすごく感動して、「これはいいな、これは素晴らしい」と言ってて、それから家に飛んで帰ってチェックを書いて、車が配達された。それから、たぶん10年後に気づいたんやが、わしの車に3年間取り組んだ多くの職人がいて、たぶんどれだけ素晴らしい仕事をしたかについて少し煙を吹かすべきやったが、その瞬間にわしが欲しかったり必要としたりするもんやなかったから、そういうことを決してしなかった。それに全く気づかなかった。
それで、その場所のマネージャーか所有者にメールを送った。「これを覚えてるかわからんが、10年前にわしの車を取りに行って、たぶん感動してないように見えたと思うが、すべてに非常に感動してたし、品質、その他すべてに感動してたことを知ってほしい」と言った。彼が返事を書いてくれて、「その瞬間をよく考えてた」と言った。だから、「持ち出してよかった」と思った。
人間の交流には、人々にとって多くのことを意味する微妙なもんがある。直接聞いても、それを明確に述べることができないかもしれんが、それは多くのことを意味する。そして、何かがずれてる時、何かがずれてると、それが彼らを悩ませる。でも、そういう人間の交流の小さな微妙さを感じないかもしれない人にとって、それを逆行分析して理解するのは困難や。
コミュニティには自閉症の人は共感に欠けるという認識があるが、全くそうやないと思う。わしに関してはそう言える。かなり共感的やと感じる。でも、問題はコミュニケーションの問題で、両方向に働くと思う。
君がどう感じてるかがわからん。だから、君が経験してることをわしに伝えてくれるまで、それに共感するのは困難や。それから、何が君の頭で起こってるかの理解を持ったら、君をすごく気の毒に思える。でも、それまでは、君の立場でわしが知ってることで、わしと同じように処理すると仮定するやろう。
反対側の人々へのアドバイスは何やろうか?君のより良い友人、より良いパートナー、より良い同僚になるための助けにするために、どう君とコミュニケーションを取るべきかについて、より多くの情報を与えるために?
本当に具体的になって、わしが手がかりやニュアンスや微妙さを拾うと仮定しないことや。だから、特定の行動にわしを押し込もうとしてるなら、「Dave、これがあなたがする必要があることです」と言う方がはるかに良い。
今日何らかの方法で失敗したか?
いや、まだや。
何点くれる?10点満点で。わしは6か7の通信か?
75浮動小数点。
いいな。マスキングについて教えてくれ。スペクトラムの多くにとって重要な経験やと言うな。マスキングとは何や?マスキングの経験について教えてくれ。
マスキングは、それを説明する正しい方法やないかもしれんが、普通に行動する行為や。社会的状況で、神経典型的な他の人々が正しい方法でそれを受け取って受け入れるように、どう自分を振る舞うかということや。
手を振ることから、表情を取ることから、声のトーンから、姿勢まで、社会的交流ですることすべてが、大きな工夫で、仕事や。
ほとんどの人にとっては自然に来る。彼らがすることで、クールな人は本当にうまくやる。でも、スペクトラムの誰かにとっては、それを全部偽装しなあかん。
普通に行動する。Rushのバンドを知ってるか?
知ってる。
Limelightという歌があって、Neil Peartが書いて、亡くなった人については憶測するだけやが、たぶんスペクトラムにいたんやないかという感じがある。歌の中で「世界は確実にステージで、わしらは単なるプレイヤー、パフォーマー、ポートレイヤー、お互いの観客や」みたいなラインがある。見知らぬ人を友人として扱うことができないこと、影響を偽ることができることについて歌の中で詳しく話してる。だから、歌の中でマスキングにすごく苦労してるように見えて、わからんが、それがわしが受け取ったことや。
メルトダウンを圧倒的な経験として説明してる。メルトダウンを説明してくれるか?何が通常メルトダウンを引き起こすか?
一般的に、もうあなたの行動を管理できないほど感情的に圧倒された時や。だから、映画『レインマン』で飛行機に乗ろうとしてて、強制されて、それを失い始める時に見る。それがメルトダウンや。
あるいは、医者が自閉症のテレビ番組で見たことがある。彼は外科医で、最終的に自閉症のせいで手術を禁止されて、いつも外科医になりたくて、完全なメルトダウンを起こす。テレビでのかなり良い描写や。
実際に何が起こってる?閾値を超えるようなスイッチが切り替わるような感じか?
そうや、脳にとって基本的にブルースクリーンのようなもんや。スイッチが切り替わって、原始脳に行く。前頭皮質がある程度シャットダウンすると思う。
だから、決定と行動をフィルタリングする利益がなくて、その状態では非常に爬虫類脳になる。
本当にパニック状態や。現在の現実を許容できないことへのパニックと戦闘逃走反応や。そして、おそらくそれがすごく欲求不満やったか、ランダム化されたか、悪い旅行の日や職場での議論やその他があったかもしれん。何かが今君を引き金にして、君の脳が適切に行動を調節する能力を失うポイントまで積み重なった。
愛と関係はどうや?いくつかの課題は何や?Love on the Spectrumという番組があるのを聞いた。文字通りの解釈のような特定の側面が、ロマンチックな関係の複雑さをその文脈でより明示的にするだけや。
31年間結婚してて、一緒に37年やから、長い歴史がある。わしらが非常に違うとわかった最初の兆候は、暗闇の中で家の前の車に座ってたことやったと思う。
通りの向かいに、いい家があって、アンカーチェーンでつながれた大きなレンガの柱があって、庭の周りに柵を形成してる。
それらを見てて、約2フィート四方でキャップストーンがあって、中空なのか、裏打ちされてるのか、コンクリートで満たされてるのか何なのかと思ってる。今の妻がわしを見て、「どうしたの?なぜそんなことを気にする場所が頭にあるの?」と言った。
その瞬間にわしらは非常に違うことを知った。わしは情熱的に気にしてて、彼女はなぜそんなことを心配するのかと情熱的に思ってた。
非常に具体的で、一見関係のない詳細。でも、わしは人が苦手やった。人々がわしを好きな時がわからん。
息子も同じで、木から遠く落ちないからな。「君に言い寄ってる人がいたら、教えて、具体的にして。わしは無知やから」と書いたTシャツを彼に買った。わしにとても似てる。
長い間周りにいて、人々に慣れ親しまれなければならなかった。ゲームがなかったから、その全体が必要とするソーシャルダンスをする能力がなかった。
だから、わしの唯一の選択肢は自分自身でいることで、それは一部の人にはうまくいく。
「愛してる」みたいなことを言うことができた?
そうや。彼女の家族はわしの家族よりそういうことではるかにオープンやった。だから、わしにとっては成長期やったが、そうや、それはわしが持ってる問題やない。
でも、重要でないように見える。実際に何を達成してるんや?
まあ、今はたくさんの肯定とチェックをする。最後の2年で、彼女がただ「元気?」とわしが「そうや」と言うことをする。それには2つのステップがある。「元気?」があって、それからわしの反応がある。わしが「そうや」みたいやったら、彼女は何かが起こってることを知ってる。
だから、人を見るだけで何が起こってるかを知る能力がないから、常にこのピンギングがある。だから、わしらはこの明示的なチェックメカニズムを開発したと思う。
「そうや」と「そうや」の間に大きな隔たりがある。
また、人間のコミュニケーションの微妙さや。
人々が「ちょっと自閉症的」と感じる経験について書いてる。この概念について詳しく説明してくれるか?
多くの人、たぶん人口の10から20%が自閉症スペクトラムのどこかにいるが、障害のレベルまで上がるほど影響を受けてないが、それでも自閉症から生じる多くの特徴を持ってると思う。彼らがそれらの行動のいくつかを最適な方法で理解し、特定し、管理できるなら、スキルのいくつかを活用し、それに伴う欠陥と問題のいくつかを仲介することができると思う。
わしの子供たちのためにほとんど書いたんや。わしの知る限り、ASDは誰もないが、わしの行動の特定の側面をみんな持ってて、特にそれに関連してる。だから、彼らのための小さなマニュアルを書こうと思った。
なぜ多くのプログラマー、優秀なプログラマーや優秀なエンジニアがスペクトラムにいると思う?
その一心不乱な集中と、問題を減らして、もんの内部に何があるかについて究極的に好奇心を持つ能力やと思う。それがわしの人生全体の強迫観念やった。中にあるもん。お母さんのオーブンを分解しなあかんかった。フリップクロックがどう動くかを知らなあかんかった。
プログラマーになるつもりなら、それは持つべき良い習慣やと思う。詳細に入ることを喜んで、興奮することや。
今年プログラムして作りたいクールなもんは何や?何に取り組んでる?
RLがTempestをプレイすることを学ぶのがある。
ちなみに、それはどこまで行った?成功と支配、つまり勝利のETAはどこや?
うまくいくにすごく近い。モデルサイズと層とかを調整して、一つの閾値を過ぎて学習させることやと思うが、数千行のLuaと数千行のPythonがあって、みんな相互作用して、みんな動く。だから、作業の95%は終わってる。
今は、ハイパーハイパーパラメーターを調整して、最善を願うことや。
ある意味ではすでに成功やが、今はそれがどこまで行けるかを見てるような感じか?
そうや。わしの目標はわしを打ち負かすことができることやった。
それは困難や。でも、多くのゲームが今人間より良くプレイされてるが、これほど複雑なゲームではないかもしれん。
今年取り組んでる他のクールなもんは何や?作りたいもんは何や?
PDP11のもん。RA82ドライブを得ようとしてる。3600 RPMで回転して洗濯機のように聞こえる大きな14インチモンスターや。それからコントローラーカードを見つけて、コードを書いて、ドライバーに統合して、それを全部動作させようとする。
その上でどんなコードを実行しようとしてる?
ドライバースタックを動作させなあかん。だから、そのドライバーをカーネルに組み込まなあかん。
最近1テラバイトのRAMでマシンを作ったな。どうしてそうなったんや?なぜ?
GitHub Primesというプロジェクトがある。GitHub Primesを検索すれば見つかる。約100の異なる言語で実装された単一の素数アルゴリズムセットや。
全く同じアルゴリズムで、公平にするために特定のルールに従うことを要求して、それから選択した言語でそのアルゴリズムを最善の能力で表現して、毎晩ベンチマークを実行して、結果をコンパイルして、どの言語が最速かを見つけ出す。
これがそれか?
そうや。
これが使ってるもんか?そのテストを実行するマシンか?
そうや。
このプロジェクトについて教えてくれ。これは叙事詩的なプロジェクトや。すべてのこれらの言語のプログラミング言語の性能を比較してる。
個別のDockerコンテナに全部作られて、それから全部実行される。これは信じられないプロジェクトや。
本当にプログラミング言語のパフォーマンスを測定してる。どの言語について何を学んだか?どの言語が通常勝つか?
今Zigやと思う。Zigや。それは変わる。
誰かがC++を改良して、しばらく通過して、それからZigの人たちが怒って戻ってきてより速くする。Zig、Rust、C++、C。
どんなコードが実行されてる?パフォーマンスを測定するために実行しようとしてるコードの断片は何や?
やってることは、5秒ループで1秒間にできるだけ多くの1億までの素数を解くことや。だから、ループや。
わかった。何度も何度も何度も。そうや。全コアで。
全CPUで。プログラムがどう書かれてるかはどうや?それは変わる?
いや。何でもできるが、素数の篩でなければならない。整数あたり最大1ビットを使うことができる。より安く簡単なバイトは使えない。
メモリを時間指定ループ内で割り当てなければならないというようなルールがいくつかある。だから、ルールのセットがあって、ルールに従わない64kしかないから1億のシーブはできない6502のようないくつかのソリューションがある。
だから、エキシビションプロジェクトとして実行するそういうソリューションがたくさんあるが、主要言語の中では、みんな同じルールに従う。
だから、その言語でアルゴリズムがどう表現されるかが本当にそうであるべきや。多くは同じバックエンドコンパイラーを使う。だから、本当にどう表現してるかと、その言語の制限や利益や。
言語ごとに複数の提出が許可されてる?
そうや。Cを見ると、5つぐらいあると思う。
いくつかは異なるコンパイラーを使うか。そうや。いくつかはGCC、いくつかはClang LLVMや。数年前のスナップショットを見てる。ZigがトップでRust、Nim、Hasco。これは遅さで並んでるのか?
そうや。CはZigの1.5倍の時間がかかる。
素晴らしい。興味深い。すごくクールなプロジェクトや。
PowerShellのようなクレイジーな言語がある。PowerShellのバージョンとかそういうもんがある。
提出がどう行われるかの組織に関して自動化されてるか?構造がある。クールや。
そうや。ヨーロッパに2人の男がいる。RuckerとTutorが基本的に今これを所有してる。わしは3つの言語だけで始めた。Python、C、C++をやった。
チェックインして、エピソードを公開したら、人々がもっとソリューションを投げ込み始めて、手に負えなくなった。だから、誰かにそれを管理してもらわなあかんかった。彼らはそれをやってくれて素晴らしい。
プログラミングして何かを作る時の一番幸せな瞬間は何や?何が一番楽しい?
一番楽しいのは、複雑なもんを作って、どう動くべきかを考え抜いて、それから実行して、その通りに動くことやと思う。それは激しい満足を作り出す。
計画した通りに結果が出て、動くのを見ること。最初の時は稀やからな。でも、そうや、特に最初の時に動いたら。
いや、それは決して信用しない。いつも何かを逃してる感じがする。
それは本当や。でも、コンパイル言語、C++では、いつもいい感じや。
コードを書いて、コンパイルして、警告もエラーもなく全部コンパイルされる。クールな感じや。
プログラミングの未来は何やと思う?コード生成でLLMの影響をどれぐらい経験したか?cursorをどれぐらい使った?VS Codeとコード生成?
そうや、PythonではPythonが苦手で新しいから、そのためにたくさんやった。
わしが何かをやり方を知らないから見てるコードから多くのことを学んだし、すごく役に立った。ゼロからPythonを書いたら、AIが作り出せるもんの約4倍の長さになるやろう。Pythonが得意やったら、かなり簡潔になりうるからな。
つまり、このプロジェクトのためにPythonを本質的に学んだんやな。
そうや。これは、C++で偉大なプログラマーが言語を素早く学ぶ良いケーススタディや。
そうや、バイブコーディングで進んでる。
バイブコーディングで進んでる。それは、すでに良いプログラマーやったら、生成してもらうことで新しい言語やアプローチ方法を学ぶ本当に強力な使用例や。生成されるPythonコードをたぶん理解できるからな。
構文を実際に調べることなしにな。
そうや、見たら全部かなり自己説明的やが、一から作るのは少し違う。
でも、それをその方法で使うためには、プログラミングの仕方を学ばなあかん。
そうや、それを読んで、次に何をするかを知って、そのすべてや。
プログラミングの仕方を知らんくて、ただバイブコーディングしてる人は新人やったら、バイブコーディングで自分をどうにかできるとは思わん。でも、良いプログラマーやったら、AIは君を信じられないほど強力にできる。
5年、10年、20年後のプログラミングの未来は何やと思う?
バイブコーディングは楽しいミーム的なもんやが、プログラミングの仕方を知らない人がただバイブコーディングしてる人は、ほぼ完全に本番で使用できないシステムを作ってる。使えない。製品を作るのはすごく困難や。すでに偉大なプログラマーの人がバイブコーディングする場合は、君がやってる方法で基本的にやってる。
基本的にファンシーなオートコンプリートで、結局それを編集するか、新しいAPIや新しい言語や新しいものを学ぶ方法や。特定の使用例やGUIコンポーネントのような異なる種類のもんかもしれん。でも、より賢くより賢くなると、天井がどこにあるかわからんし、プログラマーであることの意味の性質を変えるかもしれん。
それについて考える。そうや、プロンプトエンジニアとは言いたくないが、そういうもんになると思う。橋を建設してる建築家みたいな感覚で、ある時点で人たちが下でビームを溶接してたが、今はAutoCADでもんをドラッグして、大きな事前に形成されたセクションから組み立ててる。プログラミングもそんな感じになると思う。
個別のコードの行を投げ回すんやなく、コンポーネントとインターフェースを動かして、それらの相互作用がどうあるべきかをAIに説明して、コンポーネントを作らせる。でも、まだそれから相当遠いと思う。
「Linuxと互換性のあるLinuxカーネルをくれ」と言えるようになる日が来るやろう。いつかそれを作り出すやろうが、まだそこには到達してない。
抽象化の層をそんなに素早く登ってることが悲しいか?マシンコード、それからアセンブリ、C、C++をやってた人が、自然言語でバイブコーディングするポイントまで来てる。
すごく幸運な時に来たと思う。30年か40年の間にテクノロジーを思いつかなあかんかったからな。だから、TTLロジックを理解してるし、AIを使ってコードを書くことができるし、その間の全ての部分をある程度知ってる。
確実に知識に穴はあるが、その知識レベルやその絵の完全性を得る唯一の方法は、それほど長い間それを生きることやったと思う。
それを今から始める人にとって複製するのは困難やろうな。
この全体、存在、人生、ここで起こってることの意味は何やと思う?
クールなもんを作ることや。
基本的にわしが気にしてることは、他の人に役立つ複雑なもんを作ることができることで、クリエイティブになって、他の人が使えるもんを作る方法でわしの能力を活用する。絵を描いたり彫刻したり、古典的な芸術に限定されてたら、わしは絶望的やったやろう。
だから、わしにとって、それが本当に人生の意味や。それから、たぶんバトンを渡すために良い子供を2人育てることやな。
人生でたくさんのクールなもんを作ってきた。たぶん何億、何十億の人に影響を与えた。今はYouTubeで見るためのクールなもんを作って、その方法で人々を鼓舞してる。過去にやってきたすべてと今やってることのために、わしは大ファンや。
今日話す機会を得られたことに感謝してる。
ありがとう、ブラザー。ありがとう。
Dave Plumerとのこの対談を聞いてくれてありがとう。このポッドキャストをサポートするには、説明欄のスポンサーをチェックしてくれ。
最後に、C++の作成者であるBjarne Stroustrupの言葉を残して終わりたい。ちなみに、ずっと昔、ポッドキャストのエピソード48でインタビューした人や。
「言語には2種類しかない。人々が文句を言う言語と、誰も使わない言語」と言った。
聞いてくれてありがとう。次回また会えることを願ってる。


コメント