This is a pen.

中学生の英語の話ではない。大昔のドリフターズのギャグでもない。コンピュータ、中でも特にプログラミング言語の話。突然思い出した。
だいぶ前(30年以上前かな?)の話になるが、コンピュータというものを全く知らない女性が本屋(のレジ)でバイトをしていた。COBOLなるものの本が良く売れていく。それはコンピュータ関連の本であることは(売り場コーナーの関係で)分かっていた。しかしそれが何なのか彼女は知らない。そこで同じ職場でコンピュータに詳しい人に「COBOLって何ですか?」と聞いてみた。すると、「コンピュータの言語」という答えが返ってきた。実は彼女は国立某外国語大学生だったので、言語には詳しい。そこで、「じゃあそのCOBOLっていう言語でThis is a pen.は何て言うの?」と聞いたそうだ。しかし、一笑に付され答えは返ってこなかった。それから月日は流れ、彼女もコンピュータの言語というものを知り、自分が如何に愚かな質問をしてしまったのかを、自分の失敗談として語ってくれた。
しかし、更に月日は流れたある日、私はこの質問に対する回答を突然思いついた。話は本質的にプログラミング言語であれば同じなので、ここからはCOBOLではなくC言語で話を進める。すなわち:
C言語で"This is a pen."を何というか?
英語で、thisというのは、その時点で「近く」に存在する何かを表現する。それが何かは文脈により決まる。isは言わずと知れたbe動詞。「である」という意味で、be動詞の左右にあるもの(主語と補語)が等しいことを表す。そして、a penはもちろん1本のペンという固定概念である。つまりthisという文脈依存のものに対して、現在の状況ではa penという固定概念があてはまっている、という主張である。
これらを、それぞれプログラミング言語の概念で言えば、thisは変数であり、isは=(または==)であり、a penは定数(文字列"a pen")ということになる。結局This is a pen.をC言語で言うと:
char *this = "a pen";
となる。なお、Javaなどのオブジェクト指向系の言語だとthisは特別な意味を持つので、このままだと話はうまくいかない。Objective Cなどであれば特別の意味を持つ変数は、thisではなくselfなので一応大丈夫。