こだわりアカデミーの新作「現代社会と心の病」。流行に敏感な病気にふさわしく、昨今は対人恐怖症が減ってうつ病が増えているらしい。対人恐怖症の根元は自意識過剰とそれを忌避する気持ちが衝突してデッドロックに陥ることだとカネゴン勝手に思っているけど、自意識過剰が当たり前の昨今では病根になりにくいということだろうか。病は世に連れ世は病に連れ。

人間の場合と異なり、コンピュータでのデッドロックの処理が困難なのは、「自分で自分のデッドロックを検出することが本質的に困難」「強引に検出しようとすると性能が大きく落ちる」であるということに尽きる。デッドロックを検出するとしても、オブジェクトをロックする時間を計ってあまりに長いようならデッドロックを疑うという状況判断しか行えず、しかもそれは本当はデッドロックではなく本当は必要な処理である可能性もあったりするにもかかわらず、それをプログラミング テクニックで区別することは本質的に困難になる。よく考えれば、あるオブジェクトをロックする意味というか必然性があるかどうかを判断するのはそれを扱う人間の方で、コンピュータの中には意味も必然性もないのだから判断できっこない。MS-DOSみたいなシングルタスク/シングルジョブのOSならアプリケーションの内部以外ではデッドロックは発生しにくい(何しろすべてのリソースを占有できるのだから)のだけど、マルチタスクや分散処理が発達するに連れて、デッドロックの機会は果てしなく増える。

デッドロックを回避するには、結局「オブジェクトを長々とロックしない」「オブジェクトを使い終わったら即開放する」という、運用というかプログラマーの躾によってその機会を減らす以外に方法がなかったりする。一応数学的にもデッドロックの回避と自己検出が困難であることが示されていたことがあったような気がするのだけど、たぶん計算可能性問題の一つ「停止問題」がそれだったと思う。「停止問題」とは、「そのプログラムがいつかは止まるのか、それとも無限ループになってしまうかを
プログラムを実行し終わる前にプログラム自身が判断できるか」という数学的命題で、同性愛差別に苦しんだ末に謎の死を遂げたチューリングが早々に「不可能です」と言い切ってしまった。しかもコンピュータが発明される前に。

そうすると人間の場合はどうやってデッドロックを外すのだろう。デッドロックは並列処理を行う上で避けられず、逆に言うと人間が並列処理を行っていることを証明していることになるのだけど、カネゴンが対人恐怖でのたうちまわった上での結論は「一人では外せません」ということになる。一人でデッドロックを外そうとしても絶対無理だったのに、あくまで一人で外そうとして長引かせてしまった。今から思えばカネゴンを見捨てずにいてくれた人たちの力なくしては到底解決は望めなかった。どれだけ感謝してもし足りない。いずれにしろ、カネゴンがのたうちまわっていたのはしっかりチューリングの手の平の上で、そこから一歩も出ていなかったということか。嗚呼。