もしも明日が晴れであれば、遠くへ狩りにでかけよう。太古の人がそんな風に考えたかどうか知るすべはないのですが、もしも~だったら、という条件を想定することは、人にとってそこそこ昔から自然のことであったと想像されます。
条件と行動の組について、自然言語とは別の記号、または特定の型にはまった指示を用いて書き示すようになったのはいつからなのでしょう。そうしたことも念頭に、ゲームブックの記法についての話を書きかけてから2年が経ちました。このところ別途コンピュータの話を書いていたら、いつのまにかまたゲームブックのほうの話の続きのようにもなっていたので、いったんこちらに戻ります。
前回は、18世紀の声明の記録(声明譜)に繰り返し構文が見られるという話をしました(ゲームブックの記法について(2)声明の記法)。ここでは、行末に繰り返し回数が書かれている場合、その回数だけ行頭へ戻って同じ声明を読み上げることが指示されています。また、同時代のバロック音楽の楽譜にも、繰り返しの記号が登場します。
さて、条件と行動の組はどのように記述されてきたのでしょう。私はまだ古い例に出会えていません。しかし、繰り返しを指示することは暗黙的に条件と行動の組も含んでいます。つまり、読み手(プレイヤー)はいま何度目の繰り返しであるのかを意識する必要があり、「もしも」規定の回数に達していれば、繰り返しを止めなければならないためです。
あとは、コンピュータと楽譜の関係をもう少し確認しておきたいとおもいます。五線記譜法の演奏記号について、個々の記号の歴史を押さえられてはいないのですが、現在みられる反復記号としては「1番カッコ、2番カッコ」「ダ・カーポとフィーネ」「ダル・セーニョとセーニョ」「ヴィーデとコーダ」といったものを挙げることができます。いずれも、小節で区切られた楽譜の特定の位置で、特定の条件のもとに、別の指定位置へジャンプすることを示す記法です。
このような反復記号とコンピュータの仕組みとの類似性を示すのは、一見、簡単なようです。初めにみたよう、コンピュータのメモリ空間は小節のように区切りがあって、アドレス(番号)によって位置を特定することができ、分岐命令によってジャンプが行われます(ゲームブックの記法について)。1949年に生まれた最初の実用的なデジタルコンピュータ、EDSACの時点で、すでに分岐命令は搭載されていました。計算機の世界で分岐命令がいつ生まれたのか、デジタルコンピュータの開発が進められた1940年代なのか、もっと前のことなのか、私はまだ確認できていません。この演奏記号とデジタルコンピュータの分岐命令との間にある空白のことは知りたく思っています*1。
さておき、コンピュータにおいて特定条件による指定の番号へのジャンプは重宝されてきましたが、今日まで利用され続けている場面と、一度は広く使われて今はもう廃れた場面のふたつに分かれることになります。今日でもCPUの命令セットには条件による指定番号へのジャンプが含まれます。一方、多くの開発者が触れる高級言語のレベルでは、番号を用いたジャンプを用いることは避けられています。80年代までのBASIC言語は初心者向け・教育用に広く使われおり、そこでは行番号よるプログラムの位置の特定と、IF THEN文による条件と動作の指示、そしてGOTO文による指定番号へのジャンプが用いられていました。この方法は構造化プログラミングの概念の普及とともに、今では使われなくなって久しいです。よっていま、条件に基づく番号へのジャンプという考え方は、ハードウェアに近いレベルで仕事をするエンジニアにとって日常である一方、それ以外のシニアエンジニアにとってはBASICの懐かしい思い出とともにあります。
IF THEN GOTO は、ソフトウェア開発には適した方法でないために廃れました。だからといって楽譜からダル・セーニョとセーニョが失われることにはなっていません(少なくともポピュラー音楽では)。ソフトウェア開発には例えば構造化プログラミングがあり、音楽にはまた音楽の最適な方法がとられるのだと思います。
さて、ゲームブックでは、パラグラフ番号によって文章の区切り位置を特定可能にし、条件に従って指定番号のパラグラフへジャンプする形式を取ることが多いです。こちらにもコンピュータの面影を確認することはできますが、楽譜と同様、昔と今のプログラミングが異なっている程度には、違ったものとなっています。一般に、コンピュータプログラムとゲームブックの目的は同じではないため、一度どこかで交差するところがあったとして、その後はそれぞれに適した独自の方法が追求されてゆくことに、不思議はありません。
*1:こちらの2つの記事である程度調査が進みました。