愚問をてってれーするの楽しすぎるでしょβ

ESRのエッセイに唆されてPythonする初心者が半端な勉強ログを書き散らす場所 ICT文化にどうしても住みたいという遠大な啓示が下った人の住処/気持ちよさのためだけに/お客様のお忘れになった恥の概念が母胎に届いているようです

Enigmaが売ってる

Open Enigma

ここにシミュレーションソフトウェアがある。

そして、300ドルでキットが売ってた。


Kickstarterってほんとにおもしろい。

www.kickstarter.com

 

Enigmaのロゴかっこいいけど由来がよく分からなかった。

 

エニグマ (暗号機) - Wikipedia

すごく充実してた。

 

 

Alan Turing: the enigma

本国の気合が入ったページだと思ったら、映画Imitation Gameの原作になった本を書いた数学者Andrew Hodgesのサイトだった。なるほどなるほど。

エニグマ アラン・チューリング伝 上

エニグマ アラン・チューリング伝 上

 

 日本語翻訳版も上巻だけ出てる。英語版は一冊にまとまって1000円ちょっとなのに、大分高い。でも、どうしよう、今のところ評価も高いし、映画のフィクション部分とノンフィクション部分が判明することの誘惑で買いそう。むしろ英語版を買うか…

 

 

チューリングとエニグマ暗号機

タイトルがまさにそれだったので。(萌えた) 以下引用。

 

クリスマスに欠かせないクリスマスツリー。ツリーの枝葉には、たくさんの飾りがぶら下がっているが、その1つがエニグマ暗号の鍵だとする。暗号解読をこのツリーにたとえると、ツリーの根元からスタートし、試行錯誤を繰り返しながら、鍵にたどりつくことになる。だが、飾りが159,000,000,000,000,000,000 もある巨大なツリーを、一つづつたどるのは気が重い。もっと手っ取り早い方法はないのか?例えば、ツリーを大きく左半分と右半分にわけ、目当ての鍵がツリーの左側にあると分かれば、右半分は調べる必要がない。これだけで手間は半減する

 

(覚えたての) 2分探索法だ!ヒトの思考をアルゴリズムにまで簡略化し、さらにそのアルゴリズムをヒトには不可能な速さで実行する機械を作ろうとしたのがコンピュータの始まりなの?ああ、同じこと書いてる。

 

エニグマ暗号を解読する数年前の1936年、まだコンピュータが影も形もなかった頃、アラン チューリングデジタルコンピュータの原型を創り上げた。このアイデアは、チューリングの数学論文の中で提唱されたが、脳が問題を解くプロセスを、仮想コンピュータで真似ようとしたのである。つまり、数学の問題を解く脳をモデル化し、それを仮想のコンピュータに置き換え、これに解かせたのである。こんなこと、一体どうやったら思いつくのだ?!

 

ハードが仮想である、という事は、時系列から行くと、何ら不思議な話ではないのか。

 

気を取りもどして、具体的にみていこう。脳は、通常、いくつかの状態がある。例えば、喜・怒・哀・楽。これを脳の内部状態と呼ぶことにする。この内部状態は、脳への入力によって変化する。例えば、「侮辱」が脳に入力されると、内部状態は「怒」に変化する。このことから、脳は次のような性質をもつことが分かる。

1.有限個の内部状態をもつ(喜・怒・哀・楽)。
2.内部状態が入力によって変化する(侮辱 → 怒)。
3.どの入力でどの状態に変化するかの手順が内蔵されている(性格?)。

 このようなものを「オートマトン」と呼んでいる。有り体には「自動機械」だが、このような機械は世界中にあふれている。認めたくはないが、脳=人間もその1つかも知れない。

 ぎゃー!ぎゃー!ぎゃー!ぎゃー!ぎゃー!ぎゃー!

ヒトの脳の機能って、インプット、演算、アウトプットに簡略化するモデルしか知らなかった(そのうちのインプット・演算の部分を詳解しただけとも言えるか)、これは私には新しい。しかもオートマトンかーーーーーー!ライフゲーム…うっ。

 

それにしてもなんだこの優良サイト、と思ったらソフトウェア開発会社のサイトだった。どのエッセイからも教養と知性を感じる。

 

えにうぇい、

■計算不能が意味するもの
 チューリングはもう1つ重要な証明をしている。
チューリングマシンの実行結果は、実行する前に、予測することはできない」
つまり、
プログラムの実行結果を予測する普遍的なプログラムは存在しない
これは非常に重要な事実である。

 まず、プログラムの実行結果の正否を判定できないのだから、バグを見つける普遍的なプログラムは作れない。そのプログラムが何をするかは、実行してみないと分からないのだ。年季の入ったプログラマなら感覚的に理解できるが、数学的に証明されたことが重要だ。

 こう言うと、プログラマからツッコミが入りそうだ。
コンパイラがエラーを返すのは、どういうわけ?」
コンパイラは、C言語などのプログラミング言語で書かれたプログラムを、コンピュータのネイティブ言語「機械語」に変換するソフトである。確かに、コンパイラはプログラムのミスを見つけてくれる。だが、コンパイラーは形式上のミスを見つけているだけで、プログラムの「アルゴリズム」までチェックしているわけではない。これは、何ごとも各論でやればうまくいく、というまやかしの一つで、「普遍的法則」ではない。

これ、ちょっと詳しく知りたい。(20150412追記: 優秀なエンジニアならば試行なしの一発でプロジェクトを成功させられると思い込む変なマネージャの話を聞いたことがあるんだけど、その勘違いへの対応はすでに30年代に数学的にされていて、相当遅れてると言える訳か。)

 

Google Books チューリングの論文は"Can Digital Computers Think?"などがGoogle Scholarで読めた。