ゾンビとUnity

ゾンビネタとUnityでのゲーム制作について綴るブログです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

If/Then/Maybe from hell

Steins;Gate(通常版)Steins;Gate(通常版)
(2011/06/23)
Sony PSP

商品詳細を見る

何故かこのブログで2番目に人気がある記事です。

If/Then/Maybe方式とは、ジョン・タイターが言い残したプログラム方式とやらのことです。
ジョン・タイターはタイムマシンを使って現代に来たと海外のBBSで言い張って有名になった自称未来人。
シュタインズゲートはそれを題材にしたフィクション。

http://ja.wikipedia.org/wiki/ジョン・タイター

そもそも、If/Then方式って何?

コンピュータープログラミングの用語として聞いた事がありません。

これとよく似た言葉で「if-thenルール」というものがあります。
プロダクションルールとも言われてます。
VBなんかをいじったことがあれば、誰でも知っているアレです。

If 料理が完成 Then 窓から投げ捨てる。

だけど、ジョン・タイターが言ったIf/Then方式って、これを指してるの?っていうのが、まず疑問です。

で、曖昧に翻訳された可能性を考慮して、原文を探すことにしました。

http://johntitor.strategicbrains.com/TitorFromArtBellBB.pdf から抜粋

Yes, there are significant advances in computer science. It's interesting
how easy it is to be fixated on the “machine” itself without any curiosity
about many of the support systems. This is not really big news but if /
then is out and if /then /maybe is in.


A is out and B is in って言い回しを知らなくて、意味が分からず翻訳にてこずりました。
和訳されてる通りでだいたい合ってます。

if / then が廃れて、if / then / maybe が流行ってる…という意味になります。

if-thenルールとは言ってないから、そもそもこの if / then が何を指すのか不明。
英語では if-then rule と言います。
if-thenルールを指してるなら、何でハイフン(-)がスラッシュ(/)になってるの?って思います。
コンピューター科学と言っているから、恐らく if-thenルールのことだろうって話にしかならなくて、if-thenルールだって話で進めると、もうここが決め付けになっちゃう。

エンジニアとしてそんな曖昧さを許していいの?
エンジニアじゃないけどね!

if-thenルールを if / then と呼ぶこともある…という話があれば別なんですが、あるなら是非とも知りたい。

それだと、ここで話が終わっちゃうので、if / then は if-thenルールのことだという前提で、if / then / maybe が何か?を妄想してみよう、やってみよう。

型推論の発展型という観点から考察した記事を書いておられる方が何人もいらっしゃるので、ここでは、ちょっと違った観点で妄想します。


プログラミング言語で

If 所持金=10円 Then 「10円持ってます」と言う。

と書いた場合、所持金が10円ぴったりなら、コンピューターは必ず「10円持ってます」と言う。
話を簡単にするために、例外とかエラーとか、この条件式を通過しないとか、細かい例外は除きます。

この条件が成立する限り、コンピューターは「10円持ってます」と必ず言う。
10円ぴったりなのに、「10円持ってます」と言わない事はあり得ない。

となると、Maybeは、条件が成立してるのに処理が実行されない状況が起きるって事なんじゃないか?と思いました。

If 所持金=10円 Maybe 「10円持ってます」と言う。

と書いた場合、コンピューターは「10円持ってます」と言わない事がある。
こう考えた時、量子論が頭に浮かびました。

http://ja.wikipedia.org/wiki/量子力学

量子論について分かりやすく説明している動画を見た程度の素人の理解度では、こんな感じです。

量子論が出てくるまで、物理現象は計算通りに起きるとされてた。
計算通りに起きないなんて事はあり得なかったんだけど、量子論が扱うすごく小さな世界では、起きるときもあれば、起きないときもある。

物理の世界をコンピュータ科学にも当てはめたのが、If / Then / Maybe なんじゃないかと。
「量子コンピューターで計算するときに都合が良いの?」なんて思ったんだけど、量子コンピューターについても良く知らないので、素人の妄想レベルだとお断りしておきます。

これを真に受けて、くれぐれも妄想を逞しくして、オカルトブログなんかで持論展開しないで下さい。
根拠なんて何もないですから。

で、ランダムに命令実行するんだったら、わざわざ Maybe なんていらないじゃんって話になります。

If 所持金=10円 And 乱数の値 Not 0 Then 「10円持ってます」と言う。

色々簡単に書くために、細かいところは無視。

乱数の値が0以外になるかどうか調べるわけですが、乱数だから0のときもあれば1のときもあれば2のときもある。
0になった場合、「10円持ってます」と言わない。

これでできるんだから、わざわざ Maybe なんか追加しなくたって、今あるプログラム言語で十分対応できるじゃん。
だからね、命令を実行しないときがあるって前提じゃ、If / Then / Maybe はあり得なかったね。
でも、ランダムで命令を実行しなきゃならないプログラムばかりを書くことになって、いちいち乱数の値なんて調べてらんないよって状況になったら?
そんなプログラムは皆目検討もつかないけど、じゃあ、そういうことで。
妄想終わり。

ありがとうございました
スポンサーサイト

- 0 Comments

Add your comment

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。