その名も「アップルソフトベーシック」
1984年に我が家にパソコンが導入された決定的な要因は、姉が学校でプログラミングの授業を履修していることだった。この話は「その1」にも書いた。それから3年が過ぎて僕も当時の姉と同学年になると、この同じ授業を選択した。中学校で授業が選択できるというのも贅沢な話かも知れないが、この授業が8年生(注1)になるまで選択できなかったというのはちょっとばかり悔しい。7年生の時は「コンピューター・アプリケーション」という、パソコンをいじるだけの授業しか選べなかったこともあって、僕はこの授業を首をなが〜くして待っていた。
授業で使うのはApple II シリーズのAppleSoft BASIC だ。そう、あの頃はApple にもかなり普及したベーシック言語があった。記憶が正しければ、パソコン本体に標準でついてきたように思う。マシン語やその他の言語に比べて機能が限られているとはいえ、ベーシックというシンプルでとっつきやすいプログラミング言語があったというのは、実に重要なことだった。と、思う。Macintosh にもこうしたものがあれば(今はまったくないでもないが)、シェア争いでももう少しは善戦したのではないかと悔やまれるのだ。
で、AppleSoft BASIC は1つ1つの命令が番号順に実行されていく仕組みのプログラミング言語で、いちいち各行に番号をつけていくのが特徴だった。一度画面をクリアして、そのうえで「Hello!」と表示させるには:
10 HOME (画面をクリアせよ)
20 PRINT "HELLO!" (「Hello!」と表示せよ)というプログラムになる。(注2)番号順に実行されるので、上の2つの動作の間に別の作業を組み込む場合は:
10 HOME
15 PRINT "GOOD MORNING!" (ここを追加)
20 PRINT "HELLO!"という感じで、10と20の間の番号をつけるのだった。10と15の間に4つのコマンドを入れたければ、11と12と13と14という番号をつけて打ち込めばいい。
ここで「じゃあその後で12 と13 の間にコマンドを加えたい場合はどうするの?」と疑問を持った人もいることだろう。そう、そう言う場合はもろにはまっているのである。番号はあくまで整数のみで、既にコマンドがある番号に新しいコマンドを打ち込むと、古いコマンドは消されてしまうのだ。10から15までが全て埋まっているとしたら、13以降は全て打ち直しになってしまう。コピー&ペーストなどという便利な機能はなかった時代の話なので、首をつりたくなる心境だ。
だからこそ9個ものコマンドを挟めるように10単位で行番号をつけていくのが普通なのだが、時にはそれでも足りなくなるので嫌になる。AppleSoft BASIC の悲劇の1つだ。
典型的なインタープリター
プログラム言語にもいろいろあるが、AppleSoft BASIC は典型的なインタープリターだった。インタープリターというのは、当面必要な分だけプログラムを読み込んでいく方式で、プログラムの中にエラーがあってもその部分を実行しなければ気付くこともないという感じだ。最近はプログラムを実行する前にプログラムの内容をすべて読み込む「コンパイラー」の方が主流のようで、基本的なエラーはプログラムを実行する前に指摘される。(注3)
コンパイラーで作れば全てのエラーが事前に指摘されるわけではないのだが、インタープリターはありもしないコマンドを打ち込むという基本的なミスをしても、プログラム実行中にそれに関わる作業をしないと分からないのが悲劇である。授業では最後の方になってデータベースソフトを作るという課題が出されたのだが、シンプルなプログラムの割には機能をいろいろ盛り込まなくてはいけないので、時に自分で盛り込んだ機能が上手く作動しないのに気付かずにフロッピーを提出してしまい、ごっそりと減点されたこともあった。(T_T)
ベーシック故のいろいろな幻滅、そして再チャレンジ
この授業を受けたのは1987年だから、コンピューターそのものからして、できることがまだまだ限られている時代でもあった。(注4) ましてやベーシックとなればもっともっとできることは限られていた。それをもっとも実感させるのが、画像と音声の扱いだ。
ベーシックでは基本的に、low res というフォーマットで画像を描く。記憶が正しければ、ドット数は縦40横48ぐらいだった。つまり、スクリーンの全てを使って、今のパソコンのアイコン程度の画像を描いていたのである。ブロック崩しのブロックを組み合わせて描く画像……それは懐かしいと言えば懐かしいのだが、せめてアドベンチャーゲームに出てくる程度の画像はやってみたいと思っていた僕にはショッキングなことだった。(注5) 音声は1つ1つの音階と音の長さを打ち込む。これもまた骨が折れる作業なのだ。
実はAppleSoft BASIC にも裏技のようなものがあって、PEEKとPOKE というコマンドを使えばもっともっとできることの幅が広がるのだが、これに関しては授業で学ぶこともなく、資料もほとんど手に入らなかった。いくらアメリカのパソコン教育が進んでいたとはいえ、中学校の先生ではベーシックの基本を教えるのが精一杯なのだった。
しかしせっかく授業で「アニメを作れや!」などという楽しい課題をもらっているのだから、限界を感じながらもがんばってはみた。根性で無数のブロックを何度も塗り替えるというプログラムをかいて、アメフト選手がタックルしてくる相手をひらりとかわしてゴールへと向かうアニメを作ったところ、これがクラスの間でもなかなかの評判だった。描画があまりにも遅くて、アメフト選手が消えたり現れたりしながら移動するのが難点ではあったのだが。
Apple IIc 時代の終わり
ふとこの連載を読み返してみると、どうもApple II シリーズの性能の低さを嘆いてばかりいるようだ。本当はその都度興奮し、楽しんでいたのだが……。僕はこのApple IIc を使うことでパソコンがありとあらゆる道具に成りうることを知った。ゲームに始まりお絵かき、音楽、パソコン通信、そしてプログラミングへと実に幅広く使ったと思う。
今現在、2001年になっても僕がパソコンでやっていることは大方この延長線上にある。ただその性能がどんどんと向上して、パソコンがますます自分の思うとおりのことをしてくれるようになってきた、ということなんだろう。その辺を念頭に置きながら、そろそろApple IIc 時代の話を終わりにして、次からはApple IIgs 時代の話へと移ります。
(つづく)
参考リンク: Chipmunk Basic
英語のページですが、ここからダウンロードできるChipmunk Basic はマックで使えるAppleSoft Basic のそっくりさんです。PowerMac 対応にもなっているので、興味のある方は是非一度試してみて下さい。
(注1)5・3・4の教育システムなので中学3年生にあたるが、年齢は日本で言う中学2年生。
(注2)文法がこの通りだったかは記憶が定かでない……。(^^;
(注3)僕がそう認識しているだけで、他にもいろいろ違いがあるだろうと思う。
(注4)詳細は「その3」を読むべし。
(注5)Apple II シリーズもhi-res というフォーマットなら、260x190ぐらいの画像は表示できる。