GOTO文と繰り返し処理:「パソコン史観」の夢を見た

私には親にポケコンを買ってもらって遊んだ体験はないが、80年代のポケコンはBASICで自分でプログラムを入力しないと何もできない、素のコンピュータだったらしい。

BASICは、Windows のコマンドプロンプトで触った。

マシン語と言って、ハードウェアが理解できる命令にほとんど一対一対応で単語を割り当てたプログラミング言語があって、BASICは、今みると、抽象度が低く、まだまだマシン語に近いように見えてしまう。

特に、コマンドを上から下に1行ずつ実行するのが基本であるところが不自由に見える。

これではできることが少なすぎるので、考え出されたのがGOTO文、ということなのだと思う。

プログラムの各行に行番号をつける。もしくは、ある処理のスタート地点になる行にラベルといって、任意の名前を付ける。そして「GOTO hogehoge」とやると、指定した行にスキップできたらしい。

GOTO文とは、すなわち、「ラベリング」だと思う。

ラベルの呪文を唱えると、タイムワープできたわけだ。

      • -

UNIXのOSやアプリケーションはC言語で書かれていて、Windowsや旧MacOSも、Cから派生した言語でOSをプログラムしていたはず。90年代終わりにはJavaというのも出てきた。

CやJavaは、ALGOL系と呼ばれる言語で、文法が大幅に柔軟になっている。

条件分岐・場合分けのやり方がヴァラエティに富んでいて、とりわけ、「以下の条件を満たす間は、この処理を繰り返せ」というループ処理があり、GOTO文を書かずに済ませられるのが新鮮だったようだ。

ALGOL系が現場に広まるにつれて、「GOTO文を使うのは時代遅れでメンテナンスが困難なダメ・プログラム」と言われるようになったと聞く。

プログラムは、コマンドの羅列、逐次実行ではなく、エレガントに「構造化」されるべし、ということになった。

もちろんコンピュータの歴史はもっと前に遡るし、人間がコンピュータを操作するためのプログラミング言語は、色々なものが試行錯誤で考案されてきたらしいけれど、

いわゆる「デファクト」の話をするとしたら、

市井のユーザの目に触れるプログラミング言語の姿は、80年代のラベルを貼りまくるBASICから、90年代のエレガントにループするALGOL系へ推移した、と言えるのかもしれない。

ラベリングからループへ。

      • -

19世紀後半は生物学がトレンドで、ダーウィンの進化論で人間社会を比喩的に把握しようとする社会進化論が、社会有機体説と絡まりながら台頭したそうだが、

ひょっとして20世紀末のパソコン・ブームは、コンピュータになぞらえて人間社会をプログラミングしようとする人たちを生み出した。ループに着目する「再帰性」なるものの正体はこれであった、とか?

(プログラミング言語で言う recursive と、ロマン主義でおなじみの反射・反省 reflective と、これが社会学で言う「再帰性」なのかもしれない reflexive と、回帰分析で言う regressive と、反復・繰り返し・堂々巡りにも色々ありそうだけれど。)

インターフェースと分散処理で滑らかに、とか、ゼロ年代にも「パソコン史観」風の議論があったよね。

こういう風にプログラミング言語の「シンタックス・シュガー」で底上げされた話ばかりしていると、そのうち保守論壇さんが「パソコン史観の黄昏」という看板(ラベル)を出すかもしれないね。

敗戦後の高度成長で経済大国として躍進した我がニッポンは、西洋中心主義たる“進歩史観”を打ち破り、東京市場はヨーロッパ、北米と肩を並べる世界の第三極になった。

しかし、好事魔多し。バブルは儚くはじけて、再び世界に混沌が訪れた。

そして次なる敵は、太平洋の対岸から来襲した“カリフォルニア・イデオロギー”のサブカルチャー情報社会であった。北米西海岸の非正規勢力だが、それだけに雇用不安にあえぐ若者への感染力はすさまじく、我々はなすすべもなく20年を失った。

だが、再び神風が吹こうとしている。今こそ誇りを取り戻すときである。

パソコン帝国主義を打倒して、アジアの大義を思い出せ。

とか。