CACM (Vol.55, No.9)に 2 つほど面白い話があったので紹介する. 1. DieHard 多くの C++ で書かれたソフトウェアのバグは多少の buffer overflow である.そこで memory allocator が random に allocation のサイズを拡大する.また,allocator は heap の allocation を randomize する.すると,この種のバグはdeterministic ではなく,Heisenberg bug になる. これは devloper からすると悪夢である.バグが再現できたりできなかったりするので,それを修正するのが困難になるからだ. しかし,ユーザからすれば,バグは起きないこともある.クラッシュしたら再起動すれば,運が良ければクラッシュしないかもしれない. この論文は DieHard というタイトルで Microsoft research から入手できる.しかしバグを隠すことは Seatbelts や Airbags のアナロジではないと個人的には思う.面白いアイデアとは思うが,プログラマとしては deterministic なバグの方が好みであるし,できればバグは隠すよりも直したいと思う. http://queue.acm.org/detail.cfm?id=2333133 2. CriptDB 暗号化したデータをサーチしたり,圧縮したデータを圧縮したまま処理する方法というのがあると聞いていったいどうするのだろうと思ったことがある.詳細は私にはわからないが,一方向関数でも対応がある程度明らかなものでは可能のようだ.たとえば,英語の Databse があるとする,これをドイツ語に翻訳するのが暗号化と思えば,ドイツ語の単語でサーチができる.たとえば,山(Mountain)という単語を探そうとすると,このキーワードを暗号化した Bergによって探索する.話はそんなに単純ではないが,原理はこれに類したものであるようだ. http://dl.acm.org/citation.cfm?doid=2330667.2330691