レジデントの研修評価管理システムのプロトタイプが完成し、デバッグ(プログラムの不具合を見つけ出し、修正すること)もほとんど終わった。少し機能を修正したい場合などがあり、ソースの少々修正し、デバッグしということを繰り返している。作成にはある程度まとまった時間、プログラミングに集中する必要があり、そのために他の仕事で溜まっているものがある。今後、その消化に力を注がねばならない。

バグとはプログラムの不具合であるが、コンピュータが誕生した初期の頃は、プログラムはキーボードから打ち込むものではなく、機械内部の配線を変更して行うものであった。つまりコンピュータは、配線さえ変えれば様々な計算ができる機械であったが、配線を動的に変更することは不可能なので、決まった計算しかできない機械だった。現在のコンピュータはプログラム自体を動的に修正しながら実行することが可能なので、別の機械と言っても良いような性能の違いがある。その初期のコンピュータがおかしな動作をしたので、中を覗いてみたら虫(英語でbug)がいたと言う訳だ。世界最初に発見された物質的な「バグ(虫)」の写真が日本語版ウィキペディアの「バグ」(http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%B0)にある。

デバッグをしながら、人間の能力の限界について考えた。プログラムのバグは、プログラムを修正したときの修正漏れ、条件に対する考慮漏れ、境界値の取扱いに関する勘違いなどで起こるものが多い(もちろん他の要因による不具合もある)。それらはいずれも人間が作成中のプログラム全てを頭に入れられないことから起こると言っても良い。たとえば、ある部分の処理を修正したとする。同様の処理を行っている部分を修正し、その処理に関連した部分も修正して行くが、関連を思いつかなかった部分にも関連する部分があると、修正漏れとなりバグとなる。内部を解析して原因を見つけると、当然のことを間違えていたり、考慮し洩らしたりしていて「しまった」とか「なあんだ」となることが多く、システムの理解不足や言語の仕様上の問題に起因する「ほ~」とか「なるほど」と思わせるようなバグは少ない。この傾向は私だけのものではなく、様々な本を読んでみても普遍的なものである。

これは、人間の脳が機能を実現した仕方による限界なのだ。人間の脳は、非常に多くのものを記憶することができる。しかし、その記憶は連想に基づく記憶であり、ひとつひとつの事象を個別に覚えるのではない。たとえば、何かを暗記する場合、節を付けたり、語呂合わせでこじつけたりする。それによって情報量は増えているのだが、他の記憶と関連づけやすくなるので、覚えやすくなるのだ。また、人間の記憶は正確ではない。徐々に再構築され変成するし、そもそも事象を連想で覚えているので、間違った思い出し方をすることがある。

自分が作っているはずのプログラムも同様で、いっぺんに頭に入るプログラムの長さについては諸説があるが、画面上でスクロールなしに表示できる長さが良いとするものもあれば、紙1枚に印刷できるほどの量までなら完全に理解できるとするものもある。もちろん、プログラム自体の複雑性にも拠るから、何行と数値で示すことにはあまり意味はない。しかし、1,000行を越えるようなものでは、細部まで頭に入れるのは困難な場合がある。

このように、人間の理解の仕方はコンピュータの記憶の仕方とは全く異なっている。さらに、数の問題もある。2013年6月14日のScience FRIDAYでは、アレン脳科学研究所の主席科学者であるクリストフ・コークが「宇宙で一番複雑な物体を解析する」というような題名で話をしていたが(http://www.sciencefriday.com/segment/06/14/2013/decoding-the-most-complex-object-in-the-universe.html)その中で彼は、脳は約1千億個の神経細胞から成っているが、神経細胞の働きと、その接続を解析すれば(理論的には)脳の働きを解明できると言っていた。それが実質的に誤った考え方であることは既にブログで述べた。

1千億個の神経細胞に関する情報と、そのそれぞれが別の多数の神経細胞とネットワークしている状態を、有効な知識として人間の頭脳に保持することは不可能である。そこには何らかの抽象化が必要になる。

さらに、個々の分子の動きを調べても、氷が溶けだしているのか、固まりだしているのか判断がつかないように、超巨大な数の対象を解析する場合、個々の対象物の解析ではマクロな全体の傾向が把握できないのだ。量子力学の理論を展開しても、砂糖が水に溶ける様子を説明することはできない。マクロの現象を捉えるにはエントロピーのような、マクロの世界の理論が必要だ。脳も同じだと思う。いくら細胞を研究しても、なぜ人が喜ぶかはわからない。それよりも、愛、勇気、心配、悩みといった「マクロ」な心理学用語を使ったほうが、よほどうまく人間の心を説明し理解することができる。

ただ、コークが開発しようとしていたのは、脳の神経細胞をディスプレイのピクセルにマッピングし、感情や学習に伴う脳の活動を映像として可視化しようと言うシステムであった。活動を映像パターンに変換して認識することで、抽象化が起こる。そんなシステムなら、脳の活動を認識する助けになるだろう。