最近は比較的マトモになって来ましたが、ちょっと前までは、小説、ドラマ、
映画などにコンピュータが登場すると、そりゃあもう、キワモノ扱いと申しましょうか、
無知蒙昧と申しましょうか、ひどいものでした。
コンピュータは何でも出来る魔法の箱であるかの様に扱われていることが多かったのです。
映画の中でキーボードを叩きながら、「コンピュータに問い合わせてみる」
などと言っている登場人物に、「そんなこと出来るわけねーだろ!」とツッコムことがしばしば。
それで最も笑わせてもらったのは、言うまでもなく映画「インデペンデンス・デイ」のラストです。
侵略者のコンピュータ・システムを狂わせる、という発想まではよしとしましょう
(それでもかなり問題ありありだけど)。でも、その後がまったくダメダメ。
ゾウリムシにアルマーニのスーツを着せるようなものですね。つまり、不可能で意味なしです。
SF モノの嘘としても許されないレベルです。それをあそこまで堂々とやられたら、
そりゃあもうギャグと解釈して笑うしかありません。侵略者のコンピュータ
(なんてものがあるとして)には、JVM でも実装されていたんでしょうか?
「インデペンデンス・デイ」のダメダメは空前絶後なのですが、通常はそこまでひどくはありません。
一般的な人が「コンピュータならこんなことも出来るかも」と思うような範囲にとどまっていますが、
大体は以下に述べるようなパターンでおかしいのです。
非常に単純化して言うと、コンピュータが行う処理というものは、入力データを受け取って、
あるロジックに基づいてそれを処理して、その結果を出力する、ということです。
例えば、Web ブラウザの動作は以下のように考えることが出来ます。
URL(入力データ)から、該当するサイトを探して(処理)、
そのサイトに対して URL に応じたデータの提供を依頼し(処理)、受け取ったデータ
(通常は HTML ファイル、これも入力データ)をもとに、当該 Web ページのイメージを作成し
(処理)、ブラウザのウィンドウ内にそれを描画する(出力)。
まあ、実際はもっと色々細かいことをやっているのでしょうが、
おおよそは上のように考えて間違いないでしょう。
入力、処理、出力が組み合わされています。入力と出力との間には、
きちんとしたロジックに基づいた処理が存在します。三角形の底辺と高さが分かれば、
面積を計算することが出来ますが、底辺の長さだけでは面積計算は不可能です。
コンピュータはそういう不可能なことは出来ません。当たり前です。
映画や小説や漫画などで、コンピュータがおかしな具合に描かれているのは、
入力と出力がロジックで結ばれていないパターンがほとんどです。
底辺の長さしか分かっていない状況で、「コンピュータに面積を計算させてみよう」
なんて言っているようなものです。高さを推定できる手ががりがいくつかあって、
それを基に高さを推定させ、面積も推定させよう、という処理なら、
コンピュータにも出来るかもしれませんが(もちろん、
推定のロジックは人間がプログラムしてあげないとなりません)、
底辺しか分かっていないのに面積を計算することは、人間でもコンピュータでも不可能です。
で、こういうパターンが多いんですよ。最近は少なくなって来ましたが、
まだまだ見かけます。
コンピュータなんて魔法の箱でも何でもなく、半導体のレベルでみたら、
しょうもない処理(AND とか OR とか)をバカ正直にやっているだけの機械です。
プログラムによっては、その処理が我々にとってとてもありがたいものにもなりうるということです。
などと偉そうに書きましたが、私はいまだに検索エンジンのカラクリがよく分かっていません。
ロジックは想像出来るのですが、検索処理の速さが納得できないのです。
仮に私が検索エンジンを作ったら、今、我々が利用している google などに比べて、
100 倍以上遅いエンジンになってしまいそうです。
検索ロジック自体は、BD ツリーなどの古典的なロジックを使っているのでしょう(予想です)。
で、データの持ち方、
中でもインデックスとかキャッシュの持ち方に速さの秘密がありそうに思うのですが、
その中味が想像出来ないのです。検索エンジンは、私にとっては魔法の箱みたいなものです。