電波プログラミングとは何か?

電波プログラミングとは何か?


電波プログラミングとは、「超計算機的なロジックによって構成されたプログラム」である。超計算機的とはその原語meta-computational の意味する通り、メタ的な意味において計算機を超越した論理に基づいて計算機プログラミングを行うことに他ならない。
超計算機の概念を説明するために、その対極の概念である「計算機的」プログラミングを例示しよう。

例として偶数かどうかを判定するプログラムを思考する。多くの計算機的プログラマは以下のように実装を行うだろう。(コード例はCである)

bool IsEven(int number){
 if( number % 2 == 0){ /* %2の剰余が0であるかを判定 */
   return true;
 }else{
   return false;
 }
}

%は言うまでもなく剰余を求める演算子である。この部分はあるいは以下のように書き換えることができるだろう。

if(number & 1 == 0){ /* 最下位ビットが1であるかそうでないかを判定する */

質のいいコンパイラを使えば前者のプログラムと後者のプログラムはほぼ等価のアセンブリコードとなることが容易に推察できる。つまり、我々の通常の思考するプログラムとは「偶数かそうでないか」という自然科学的なロジックを「最下位ビットが0であるかそうでないか」という計算機的なロジックに変更することによって成り立っていると言える。

対して、電波プログラミングはある概念を超計算機的なロジックによって実装することになる。

const static bool even_check[]={true,false,true,false,
true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,
true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,
true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,
true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,
true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,
<省略>}; /* 可能な限り記述 */
bool IsEven(int number){
  assert(size_of(even_check) > number || number < 0);
  return even_check[number];
}

このプログラムの最も着目すべき点は 最初にeven_check配列に偶数であるかそうでないかを代入しておくところにある。つまりこのプログラムを作成したプログラマはeven_check配列を通じて「偶数は0から一個とびにある数字である」または「偶数と奇数は交互に繰り返す」という内的ロジック=超計算機的ロジックを、そのままの形で実装していることになる。(さらに言えば、非常に大きな数-例えば一億五千八九四のような数字、またはマイナスの数字に関しては、それが偶数であるかそうでないかは当然不明である、というプログラマの論理的限界そのものも記述できていることに注目すべきであろう)

こうしておくことによってIsEven関数は実際に配列内の真偽値(=プログラマの内的論理の写像)を読み取って返すだけの単純明快な形となり、また、変数の最下位ビットがどうなっているかなどという全くもって直感的でない計算機的な思考の呪縛を逃れることができるわけである。



計算機的プログラミングの危険性


電波プログラミングが計算機的プログラミングのアンチテーゼであることは前項で説明した。では計算機的プログラミングの何が問題であるのか?ここでは計算機的プログラミングの危険性について説明しておきたい。

計算機的プログラミングの限界


近代計算機の全ての祖であるアラン・チューリングによるチューリングマシンが、ゲーデルの不完全性定理を証明するために思考されたことを知っている読者は多いだろう。この事実はしかし逆説的に以下の事実を指し示している。

その機械がチューリング完全である限り、不完全性定理を無視することはできない

つまり、計算機的プログラミングとは、不完全性定理の束縛(無矛盾であれば、自身の無矛盾性を証明できない)を常に受けることになるわけである。

数学的素養のない読者のためにチューリングマシンに話を戻すと、これは停止性問題に帰結する。すなわち、

チューリング機械(≒プログラム、アルゴリズム)Aに入力xを入れたら有限時間で停止するか

という問題をチューリングマシンは解決できないことが示されている。これは言い換えると「そのプログラムが停止するかどうかは実行してみないとわからない」ということである。考えてみればいい、今まで計算機的プログラマが「絶対大丈夫」といったプログラムが全く問題なく動いた試しがあるだろうか!?
そう、これはプログラマ個々の問題ではなく、計算機的プログラムの限界であったのである。

これまで我々が依拠していた計算機的プログラミングのなんと脆弱なことか!この一点をもってしても計算機的プログラミングがいかに脆く、危険に満ちた物であるかということがおわかりいただけたかと思う。

計算機からの自由


前節の例をあげるまでもなく、計算機的プログラマは業務や概念を以下に計算機のロジックに置き換えるか?ということを思考し続けなければならない。

ここでは、注文をオブジェクト化するであるとか、顧客の状態を定数で表すなどという非人間的で不可解なメタファーがまかり通っており、プログラマはこの常識離れした概念を、あたかも自然なものとして考えることを強いられている。

このようなことが長く続く筈はなく、事実この業界では鬱病あるいはノイローゼを患ってしまうプログラマが後を絶たない。言わば彼らは計算機の奴隷となりはて、人間性を失ってしまったわけである。

しかしながら電波プログラミングは超計算機的な概念をそのまま実装し、計算させることを主眼にしている。すなわち計算機に使われるのではなく、電波プログラムを行うそれぞれ個々の人間性に基づいて計算機に計算させることができるわけである。計算機と人間のあるべき姿としてどちらが正常といえるかは、もはや言うまでもないことだろう。


最も高度で自然なプログラミング技法


電波プログラミングは言うまでもなく最も高度なプログラム技法である。この世界では計算機的プログラミングのあらゆるセオリーが通用しない。熟練したプログラマであっても、電波プログラミングに習熟するには3年ないしは5年の期間が必要とされる(デスマーチ中など、強いストレス化と過剰労働状態に一定期間おかれることよってそれまでの計算機的プログラミングに慣れた脳がリセットされ、偶発的に電波プログラミングが可能になる場合もあるが、このようなケースはごくまれである)

また旧来のプログラミング技法のパラダイム(OOP,AOPなど)では、基本的にセミナーであったり解説書を読むことによって学習が可能であるが、電波プログラムにおいては、そのような形での学習はほぼ不可能である。

Don't Think. Feel!(考えるな、感じろ!)こそが電波プログラミングの真骨頂であり、それがために個々人の才能が最も試される分野でもある。

また、たまに新入社員やバイトで入ったプログラミング未経験な若者が、最初に書くプログラムが電波プログラムである場合がある。これこそ電波プログラミングが人間のリビドーによって生み出されている自然なプログラミングスタイルである証拠といえるのであるが、そのようなスタイルが旧来の価値観に縛られた環境によってスポイルされ、やがて、典型的な計算機プログラマとして虚勢されていく現状は問題視すべきであろう。


神秘主義と電波プログラミング


(執筆中)

神は計算機の中に存在する


(執筆中)

電波プログラミングで実装されている例


計算機的プログラムでは実現できないことを、電波プログラミングで実現できる例も多い。電波プログラミングによって作成された著名なアプリケーションを例示する。電波プログラミングの威力が実感できるものである。


電波プログラミングではない例


最後に練習問題として、電波プログラミングのようで、そうでないものの典型的な例をあげていく。ここまで読まれた読者諸兄においては、これらが電波プログラミングでない理由はおわかりいただけるかと思う。

  • Perl詩
    • perlインタプリタが実行可能なソースの形式で詩を書くというのがPerl詩である。ソースを一見すると電波プログラミングの一例であるかのようだが、アプリケーションとして見た場合、実際には実行される結果は詩と何の関連性もない場合が多い。つまり手段と目的が倒錯している意味以上のものはここにはなく、よって電波プログラミングではないと言える。仮にプログラマーが求めるアプリケーションの要件が存在し、その要件を満たすために詩を書く必要があるのだとすれば、それは電波プログラムと言ってよいだろう。

  • 関数型言語
  • lisp
最終更新:2011年01月24日 22:07