プログラミング言語と呪文 †比喩としての呪文 †プログラムを書かない人にとってプログラミング言語は呪文のようだという話は良く聞く。それは比喩として謎めいた言葉だという意味だ。しかし、私がプログラミングを書いているとき、本当に呪文を書いているような気になる。 無生物を動かす力 †多くの場合、呪文は人ならぬモノに働きかけ何かの作用を起こさせる。雨を降らしたり、敵を倒したり、遠くの人や何かと通信したりと言った具合だ。そして、それは呪文を詠唱したり、シンボルを操作したり、何らかの手順に従って行う。つまり、呪文は、人ならぬモノに力を及ぼしつつ、一面では人間の判読可能な形式を持っている。呪文は、全く人間が理解できない形式ではないし(そうだとしたら誰もその呪文を後世に伝えられないし、多分呪術者自体も覚えられない)。 つまり図示するとこうなる。 呪文は一面では、人間の理解可能な側面を持ち、もう一面では、人ならぬものを扱う。 人とモノとを媒介する力を持っている。 プログラム言語も同じような特徴を持っている。一面、人間が判読できる形式であるのに、もう一面では、機械を自在に操る能力を持っている。数を数え、メールを送り、遠くのモノと交信する。 凄いプログラマーをウィザードと呼ぶことがある。それは彼らの風貌が魔術師チック(何となく胡散臭いカッコしてるでしょ、よれよれのTシャツとか)なだけでなく、あたかも機械と対話して、ものすごい力を引き出しているかのように見えるので、そう呼ばれるのだろう。*1 CPUを細かく見ていけば、andもorもxorも人間が恣意的に決めたことで、そこに呪文や神秘的な要素が宿る領域は無いように感じる。*2 けれども、それによって構築された世界は、インターネットによって、文字通り世界を覆い尽くしてしまった。 魔法使いの手の上で †プログラムを書いているとある種の全能感におそわれることがある。私は、言葉を書き、機械はそれを書いたとおりに実行する。書き実行、書き実行。何となく機械の生殺与奪を握っている気になる(機械は死ぬのかという疑問は置いておいて)。 プログラム言語はコンピュータに対して嘘をつけるか。 †ゲド戦記の中で、面白い問答がある。ゲド戦記の世界では、魔法と魔法の力の元になる太古のことばが重要な役割を果たす。太古の言葉は、優れた魔法使いと竜しか喋れない。竜は、太古の言葉を使って嘘をつくことが出来るが、魔法使いは、太古の言葉を使って真実しか喋ることが出来ない。 プログラミング言語は、コンピュータに対して、嘘をつくことが出来るのかと考えたことがある。コンピュータは、書かれたプログラミング言語、その通りに実行する。バグも別にコンピュータに対して、嘘をついている訳ではない。書かれた言葉が、意図したことと違っていて、書かれた言葉に従ったまでだ。コンピュータに嘘をつくためにはどうしたら良いのだろう。 魔法使い達の未来 †何らかのシンボルを用いて機械を動かすことは、ふえこそすれ減ることはないだろう。プログラマー達が、ディスプレーに向かわずにコードを書き始めたとき、私たちはそれを呪文の詠唱と区別できるだろうか? ささやきー。いのりー。えいしょうー。ねんじろ・・・。 ぐっと来るサイト †何故こんなことを考えたかというと、このサイトを見つけたから。呪術的オブジェクト指向用語訳 オブジェクト指向に漢字を当てはめると確かにまがまがしい感じになる。 プログラミング呪術で書いたことの焼き直しといえば。そんな気もする。 |