アルゴノートの冒険 14

[お絵書き言語? LOGO]

 実は私がBASICとPascalの次に試してみた言語はFORTRANでもLISPでもなくLOGOだったのです。MZ−2000用にテープベースのインタープリター言語として「MZ−LOGO」が発売されたのです。LOGOはBASICと同様インタープリターとして使われるのが普通です。(元祖BASICの米国ダートマス大学の汎用機用のBASICはコンパイラー言語でした。その後マイコン等に供給されるBASICはインタープリターになったのです。)LOGOはLISPをベースにしてグラフィックス機能をタートル・グラフィックスとして付加する等の改良をして初心者にも取り付き易くした言語です。改良したというよりは完全に別な言語にしてしまったと言う方が正しく、名前も変えてあるわけです。BASICとFORTRANの違いの方がLOGOとLISPの違いよりも小さいのではないかと思うぐらい内容は変わっています。
 LISPはやたらと()で囲む記述が多く、そのプログラムコードは括弧のジャングルと皮肉られるほどです。あまりにたくさん括弧を使うので遂にはどの「(」がどの「)」に対応するのか判らなくなってしまうために「スーパー括弧」が発明されました。スーパーカッコというのは、この特殊な括弧を使うと前で使った括弧は全て閉じたことになるというトランプのジョーカーのように切札的な括弧なのです。必死に前の「(」の数を数えて「))))」のように書く代りに「]」を一つ書くだけで全てOKとなる霊験あらたかな括弧なのです。(しかし後でプログラムの解読に困ると思うのだけれど。その場主義の典型だ。)LISPのプログラムコードでどの「(」がどの「)」に対応するのか一発で教えてくれるエディターが開発されてからはスーパーカッコは廃れていったようです。
 LOGOはカッコのジャングルにはあまり悩まされないようになりました。と言うよりはあまり複雑なことをするには8ビットパソコンではメモリー不足でできないと言う方が正しいでしょう。LOGOは人間の言語や思考に近い言語であるだけ複雑なシステムになりインタープリター自体のサイズが巨大になります。それで8ビットマイコンの64キロバイトの世界ではインタープリターを読み込むともうメモリーがほとんど残らないのです。それでMZ−2000にMZ−LOGOを読み込むと、まるで巨大な鯨を水族館のプールに放り込んだような状態になりほとんど動きが取れないのです。とにかくLOGOと言えば「大きい、重い、遅い」の三拍子揃った言語であまり実用には堪えない代物でした。C言語の「小さい、軽い、速い」と好対称をなす言語です。16ビット以上のパソコンの世界では非常にマイナーな存在となっています。
 それでLOGOはタートル・グラフィックスでお絵書きをして遊ぶ言語ぐらいとしてしか捉えられませんでした。もともと教育用の言語として開発された言語ですのでその程度の評価が妥当なのかも知れませんが、LOGOやLISPの流れを汲む言語でBASICやCのように一般的になったものが少ないのは少々残念な感じです。この種の言語はメモリーをやたらに食うし実効速度は遅いしという点でどうしてもせっかちなコンピューターユーザーには馴染まない所があるようです。しかし長期的視野に立てばこの種の人間の思考に近い(あるいは近付こうと努力しているような様子が見られる)言語がもう少し一般化して行って欲しいものです。(しかしこの業界に長期的視野なんてあるのかね?)ハードウエアが今一層の進歩をすれば実用に堪える実行速度と経済性を得られるかも知れませんが2百万円を超えるワークステーションをお絵書き専用機にするのはまだ贅沢な感じです。(早く2万円ぐらいにならないかな。)
 8ビットのMZ−2000でLOGOを走らせるのはそれこそ大変で本当にお絵書きぐらいしかできませんでしたが、タートル・グラフィックスの雰囲気を味わうことはできました。私がPascalに興味を持ったのはPascalではタートル・グラフィックスができるというのも一つの理由でした。しかしMZ−2000用のテープ版Pascalに付いて来たグラフィックスはBASICと同一のものでした。私はがっかりしてあるパソコンショーでシャープのブースにいた人に文句を行ったことがあります。その人は「標準のPascalにはグラフィックス機能は付いていないし、どういうグラフィックス機能を付加するかということも決っていませんからね。」と答えました。それでシャープのテープ版PascalにはBASICそのままのグラフィックス機能が付いてきたようです。私はこれには非常に不満でした。

[もしもし亀よ タートル・グラフィックスの世界]

 私がタートル・グラフィックスに興味を持ったのは、雑誌「サイエンス」のパソコン特集の別冊の記事にPascalではタートル・グラフィックスができると載っていたからです。しかし先に書いたように、標準のPascalにはグラフィックス機能は付いておらず、米国のカリフォルニア大学で作られたUCSD Pascalにタートル・グラフィックスの機能が付いていたのです。勿論CP/M上で走るJRT Pascalにもタートル・グラフィックスは付いていませんでした。もともとCP/Mではグラフィックス機能を原則としてサポートしていなかったのです。
 さてタートル・グラフィックスというのはBASICのグラフィックスのように線を引くのに始点と終点の座標を指定するのではなく、画面上に現れるタートル(要するに亀ですな)と呼ばれるポインター見たいなものに引く線の方向と距離を指定するのです。丁度タートルに「回れ右!前へ10歩進め!」と命令するような感じです。これは人間の直感に訴える線の引き方です。普段白紙に線を引く時に座標なんか意識している人は製図でも書いている人ぐらいでしょう。普通は鉛筆やペンをどの方向へどれだけ動かすかで絵を描いているはずです。タートル・グラフィックスは人間の考え方に近い絵の描き方を採用しているのです。
 ある日、テレビで米国の戦略空軍関連のニュースを放映している時に、良く映画なんかに出てくる壁全体がスクリーンになっているような巨大なスクリーンに世界地図がタートル・グラフィックスで描かれるのを見たことがあります。それは何か非常に強い印象を残しました。それで一度タートル・グラフィックスを使って見たいと思ったのです。
 MZ−LOGOのタートル・グラフィックスを使うと画面にタートルが現れます。(と言っても単なる三角形が出るだけですが。)好みによってタートルを出さずに線だけ引かせることもできます。(実はその方が実行速度が速い。)しかし、タートルの見える方がいかにも頑張って描いてますという感じがするので、私は主にタートルを表示モードで使いました。LOGOはインタープリター言語ですので、直接キーボードからタートルに「前へ3歩進め!左へ20度回転しろ!ペンの色を赤に変えて前へ5歩進め!」というように命令を出せました。その後、「Oh! MZ」に載っているサンプルプログラム等を入力してタートル・グラフィックスの世界を体験しましたが、結局私はMZ−LOGOではあまり大したことはやりませんでした。前述したようにLOGOは8ビットパソコンでは荷が重過ぎて大したことができないのが大きな原因ですが、それ以外に座標指定で描こうがタートル・グラフィックスで描こうが、グラフィックスの本質は変わらないということに気付いたためでもあります。結局LOGOのようなプログラミング言語は主流にならなかったし、現在では一般の人がコンピューターを使うのにプログラミングをしなくても良い(少なくとも表面上は)という環境が整ってきたためにプログラミングに関する論争はその筋の人達の間の議論に限定されてきた感じがあります。



to be continued.

アルゴノートの冒険 1

アルゴノートの冒険 13

Argonaut's Page