抜粋:エゴレス方式


昨日のエントリから続けて,ワインバーグの『プログラミングの心理学』からもうちょっと抜粋します.

 昨日の抜粋で書かれていたのは,だいたいこういうことでした:自分が書いたプログラム(であれ何であれ)を「自分の」プログラムと考えていると,そのプログラムに見つかった誤りや欠陥は「自分の」誤りや欠陥にひとしいと受け入れられてしまう;ところが,そのような事実は受け入れがたい;すると,誤りが本当にある場合にもそれを見ないようになるバイアスが助長されてしまう──.

 では,そうした悪しき習慣に陥らないためにどうすべきか.

 「誤りやバグを見つけ出すように努力しなさい,みつかったものは私に報告するように」などと訓戒しても,これはかえって防御的な反応をひきだすばかりです.そうじゃなくて,そういった防御反応こそを排除しなきゃいけないというのがここでの問題なわけですが,そこでワインバーグは「環境を再構築すること」「プログラマの価値体系を再構築すること」が必要なのだと述べます.

 ですが,そのようなことはできるのでしょうか.“できる”というのがワインバーグの答えです.

自分は自分のプログラムを調べる能力がない,ということに気づいた最初のプログラマは,恐らくジョン・フォン・ノイマンその人である.彼の知人たちが伝えるところによれば,彼は絶えず自分がいかに下手くそなプログラマかを力説し,しょっちゅう人にプログラムを押しつけては,読んで間違いや下手なところを見つけてくれ,と頼んでいたという.にもかかわらず今日,フォン・ノイマンに対する共通のイメージは,並びなきコンピュータの天才であって一挙手一投足において完璧,というものだ.そして事実,フォン・ノイマンが天才であったことに疑いの余地はない.自分自身の人間的限界に気づいたという,そのこと自体が彼を,今日の平均的プログラマよりはるかに高いところに立たせるもととなっているのだ.(p. 82)


こうした態度はなにもフォン・ノイマンのような天才にしかとれないわけではなく我々のような平均的な人間だって身につけることができる,という例として「ビル・G」の逸話をワインバーグはひきます.たった十三語からなる機械語のプログラムを書いたビルは,その鑑定家を探しにでかけ──

ビルはマリリン・Bをつかまえた.彼女は,彼の方でも同じことをやってくれる,そのお返しとして,彼のプログラムを調べることに同意してくれた.このグループでは,それはまったくふつうのことだった.事実,他の仲間に見てもらう前にプログラムをコンピュータにかけよう,などと思う人は誰もいなかった.プログラムの交換は,可能な限りつねにおこなわれたので,誰もほかの誰かに批判されていると感じるような立場にはなかった.だがビルの場合,彼はこの方法に慣れ尽くしていたので,交換条件になっていようといまいと,それは同じことだった.ことプログラミングに関しては,こそこそと隠し立てをして,おれのプログラム,お前のプログラムなどと考えるのは誤り,開放的で共有的なやりかたが正しい,というのが彼の価値観だった.彼が書いたプログラム(「彼の」プログラムではない──そういういいかたはこの職場では使われないのだから)に誤りが発見されたとすれば,将来の改良のために事実が明らかにされた,というだけのことであって,断じて彼個人への攻撃ではなかったのである.


 この例では,その日はビルにとって「プログラミングに向かない日」だった.マリリンが彼のプログラムを調べ,誤りを発見すればするほど,ビルは面白がってしまった.それはもし彼が,現在多くのプログラマが受けていると同種の訓練を受けていたとすれば陥ったであろう自己防衛的態度とはちょうど逆であった.やがて彼は,マリリンとの話し合いの席から出てきて,彼女がたった十三行のプログラムに十七個もの虫を見つけた,という驚くべき事実を触れ回りはじめた.どうしてそんなことがあり得たのかを,耳を傾けてくれそうな人全員に聞いてくれ,聞いてくれと迫った.その一件で今日はプログラム書きに向いた日ではない,と気づいた彼は,その日の残り時間を,その愉快な物語を伝え歩くことに費やしたのであった.


 一方マリリンの方も,この問題について自分がした仕事に不当な自信を持ったりはしなかった.彼女は,十七個もの誤りが見つかったのだから,多分あといくつかあるだろう,と考えた.特に彼女は,そのプログラムを長い時間いじってきたために,最初から自分で書いたのではないにもかかわらず,それがもうビルと同程度に頭に入ってしまっている,ということを知っていた.今度は彼女の方が批評家を探しに出かけた.彼女の判断は正しかった.ビルが自分の失敗を肴にしてみんなを笑わせている間に,マリリンとほかの批評家たちは,その日が終わるまでにあと三個の誤りを見つけたのである.


 この物語のエピローグとして,次のことをいっておこう.このプログラムがついにコンピュータに投入される運びになったとき,もはや誤りは見つからなかった.あらゆる悪魔的テストをしたにもかかわらず,である.実際このシミュレータは,一ダース以上の部署で実時間的に使用され,その後九年間を超える期間にわたって,もはや新しい誤りはまったく発見されなかった.もしビルが,そのプログラムの中で誤りが発見されるたびに,それをプライドについた傷だとか,自分の馬鹿さ加減の広告だとかというように感じたとすれば,この物語の結末はどれほど違ったものになっただろうか.
(pp. 83-84)

サール「二元論をこえて」@YouTube



原稿なし,スライドなし,ハンドアウトなし.こういうレクチャーもいいもんですね.