私のプロフィール BASIC言語から学んだこと

 BASICと言っても、コンピュータに疎(うと)い人や年若い人には、何のことだかわからないかもしれません。そこで、少し説明を加えておきます。BASICとは、コンピュータのプログラミング言語の一つで、日本では1970年代および80年代に、国産のパーソナルコンピュータにROMの形で搭載されていました。当時のパソコンのパンフレットを見ると、しきりに「BASIC搭載。」と書かれていました。また、それはBASICインタプリタという言語処理系プログラムの一つとしても知られていました。
 当時、一枚の電子配線基盤(ワンボード)上に載せられていたマイクロ・コンピュータには、モニターと呼ばれる最低限機械の動作に必要なプログラムが載せられていましたが、さらにメモリ・チップの増設やキーボード・CRTディスプレイ・ディスク記憶装置などの周辺機器をつなぐことが必要になってきました。そのためにそれらを制御するためのプログラムをパッケージ化したいわゆるオペレーティング・システム(OS)と共に、それらを活用するプログラムを開発することが必要だったのです。けれども、その手続きがいちいち面倒で、一般に普及させることが困難でした。
 そうしたマイクロ・コンピュータのシステムを比較的簡単に利用できるようにしたのが、BASICインタプリタをメーカー独自で開発する方式だったのです。各メーカーが、コンピュータのハードウェアに合わせて独自のBASICインタプリタを開発して、そのプログラムをROMに焼いて、パーソナル・コンピュータのプリント基板に搭載させるという方式でした。
 基盤がむき出しになった状態で使われるマイクロ・コンピュータも、防護カバーで基盤を覆われたパーソナル・コンピュータも、実際はほぼ同じものだったのです。ただし、コンピュータの利用の仕方が、人間が機械語でプログラムをいちいち作って、それを機械に憶えさせて動かす方法よりも、簡単な命令をキーボードとCRTディスプレイで入力とその確認をしながら動かせる方式のほうが、時間も労力も、直接操作する人間の側に負担が少なくて済みます。BASICインタプリタは、その意味で当時のコンピュータの利用技術を進歩させ、その便利さを一般に普及させたわけです。
 しかしながら、当時のマイクロ・コンピュータの動作速度が遅かったことと、BASICインタプリタに何でもやらせようとして、そのプログラムの規模が大きくなりがちであったことのために、コンピュータの見かけの処理動作が速くなりませんでした。同じものを人間が機械語で作って同じコンピュータで動かすと、あっと言う間に処理が終わってしまいます。その効率の悪さが理由で、BASICは使いものにならないと思われることが少なくありませんでした。従って、BASICなんて勉強している人間は、いずれプログラムが組めなくなる(作れなくなる)とさえ言われていました。(むかしむかしソフトウェア開発会社に勤めていた私は、会社の先輩からその言葉を日々聞かされていました。)
 ところで、そうした日本の大手メーカーがパーソナル・コンピュータに搭載するために開発したBASICのもとになった(あるいは、おそらく参考にした)のは、米国のマイクロソフト社のBASICだったらしいそうです。あのビル・ゲイツさんのマイクロソフト社は、1990年代のウィンドウズ(MS-Windows)というOS(Operating System)が世界的なソフトウェア商品としてヒットしたことで有名です。もっとも、それ以前にも、MS-DOSMicrosoft Disk Operation System)や、アップル社のマッキントッシュMacintosh)用のMS-BASIC(BASIC 2.0)など、パーソナル・コンピュータ(マイクロ・コンピュータ)にとって画期的な商品を生み出してきたことを忘れてはならないと思います。
 その辺は、現在コンピュータを利用している大部分の人たちにはわかりにくいことなのかもしれません。しかし、当時はMS-DOSが身近にあるパソコンなどで動いちゃったりすると、いろんな道具(ツール)をプログラムで自作して、すこしでもそのパソコンを便利にしようと考える人が、日本にもあちこちにいたのは事実です。BASIC搭載のパソコンが一般に普及し出した頃もそうでした。現在は、コンピュータ・システムがどれもこれも複雑化して、かなりの専門家でないといじれない部分が多いと思いますが、かつてはそうではありませんでした。機械語を入力し間違えて、パソコンが暴走したり、フリーズ(凍結)して機械がうんともすんとも言わなくなって、リセットした経験のある人も少なくなかったことでしょう。
 CQ出版社の『マイコンピュータ 1985 NO.17』の「実践特集 マン・マシン・インターフェイスとBASIC」では、「マックのマン・マシンI/F」としてアップル社のマッキントッシュ用のMS-BASIC(BASIC 2.0)が紹介されていました。その二十八年前に出版された本誌によると、そのBASIC言語インタプリタは、マックのグラフィックなユーザ・インタ−フェース、つまり、GUIをBASICの命令や関数で制御(コントロール)し操作できるようになっていたそうです。例えば、自作したBASICプログラムが、それ自身のウィンドウのメニュ・バーをマウスでクリックされると、メニュを出します。さらにメニュのどれかの項目が選ばれると、その結果が返ってきて、BASICで書いた個別の処理を行います。そのMS-BASICは、マックのGUIシステムが使っているウィンドウやメニュや項目などの部品と同じものを、BASICプログラム上で組み込んで、操作できるようにしているのです。つまり、マックのOSの一部であるGUIのシステムの働きをBASICインタプリタで借用して、利用できるようになっていたわけです。
 さらに、そのマック用のマイクロソフトBASICには、従来のBASICの欠点を補うような工夫がされていました。プログラムのリストを見ると、予約語と、使う人が名前を決めた変数とが一目見て区別できたのもそうですが、もっと大きなメリットがありました。それは、行番号を使う必要がなかったということでした。行番号は、命令文の実行順の流れを決めるのには良いのですが、(GOTO 20とかGOSUB 100とかいうふうに)その実行の流れを変えるための飛び先にも使われます。行番号がついているあちこちの場所に飛んでいって、命令実行の順番を変えることができるので、人間が飛び先を間違えてプログラムを書いたりすると、コンピュータが暴走もしくは誤動作する原因になりかねませんでした。プログラムへの命令が多くなって、プログラム全体の規模が大きくなればなるほど、そのような危険が大きくなります。従って、プログラムの開発のしやすさから見れば、行番号は無いほうが良いのです。
 そのかわり、そのマック用のマイクロソフトBASICでは、命令の固まりをブロック化(モジュール化)して表現するために、字下げができるようにフォーマットされていました。C言語などのフォーマット(書式)と、当時すでに同じだったのです。当時の私は、ソフトウェア開発会社でPL/M(マイクロコンピュータ開発用PL/1言語)やC言語でプログラムを組んでいました。そして、「プログラムのモジュール化」ということを会社の先輩や上司から耳にタコができるほど言われてきました。そしてまた、BASICはモジュール化に向かない、ダメなプログラミング言語だと教えられ、プロは使ってはいけないとまで言われていました。しかし、私は家に帰ると、プライベートでポケコンやハンドヘルドやパソコンで趣味としてBASICのプログラムを組んでいました。行番号付きで、どこでも命令実行の順番を変えることのできるBASICをいじっていました。
 その結果がどうなったかを簡単に述べてみたいと思います。プログラマには、三十歳定年説というものがありました。私は、二十八歳の時にそのソフトウェア開発会社を辞めて、その専門的な実務から足を洗いましたが、趣味としてはまだ継続しています。趣味だと一回作るのをあきらめたプログラムでも、半年後か一年後に再挑戦して、プログラミングの作業を再開しても、誰にも文句は言われません。そこが、仕事と趣味の違うところです。そうやって、その時できなくても、いつか完成させてやろうと思って、個人で楽しんで作っていたというのが、今でも私のスタイルになっています。簡単なコンピュータの動作でしたら機械語のプログラミングでできてしまいますが、ちょっと凝った内容のものは、BASIC言語で作るべきだと考えています。要するに、私はBASIC言語のおかげで、いまだに、コンピュータを自作のプログラムで動かすことができるというわけです。(ただし、あくまでも趣味としてです。)
 三十代から四十代にかけて、そんな私はC言語を趣味でいじくりながら『オブジェクト指向』について考えていました。パソコン雑誌などでいろんなコーディング(つまり、プログラムを書いたものの)例を見ていたのですが、ふと、あることに気がつきました。その使い方すなわち手段はわかるのですが、そもそもの考えすなわちその目的がわからない。何のために『オブジェクト指向』という考えや手段が必要なのか、そのメリットとデメリットで正反対のことが主張されているということは、もしかして目的が明確になっていないからではないのか。ということは、雑誌や専門書に書かれている手段を正しく十分に、私が理解していないからではないか。等々の考えにいたりました。ですから、使うコンピュータ言語がCであろうと、BASICであろうと関係なく、その本質と目的がハッキリしていれば、『オブジェクト指向』は少しも難しいものではないということを私は理解しました。
 実は、ウィンドウズ95あたりから、このOSに標準搭載されているWSH(Windows Script Host)というプログラミング・ツールに私は注目していました。これは、JavaやVisualBasicに似た書式の使える簡易言語の一種で、もちろんウィンドウズのOSの一部をプログラミングで操作できます。(以前、遠隔操作について述べたコマンドについても、その簡易言語の中にありましたが、私は使ったことがありません。)
 そうした簡易言語(スクリプト)は、HTMLというWEB用の言語の中でも使用できて、さらにHTMLアプリケーションという、HTML言語による独立したアプリケーション・プログラムを、それらのスクリプトを利用してウィンドウズ上で作れるようになっています。かくして、私はC言語などのコンパイルを必要とするプログラミング言語を使うことを止めてしまいました。ウィンドウズOSで標準搭載された簡易言語のみでプログラムが組めることがわかったからです。しかも、それはBASICインタプリタで、アップル社の昔のマック用BASICと同様の、行番号の無い、字下げでモジュール化の表現ができるもので、しかも、オブジェクトも作り出すことができます。簡易言語(スクリプト)であるけれども、ある意味で、最新のBASIC言語でもあるので、使ってみない理由は無いと私は思いました。
 最近では、そのような簡易言語で、昔流行(はや)った簡単な仕組みのゲームとか、学研の『大人の科学マガジン vol.24』の付録についていた4ビット・マイコンGMC−4の機械語プログラミングをやりやすくするツール(道具)とかを作ってみたりしています。なるべく役に立たないものを作ろうと目指しているのですが、将来的には、そうしたものを、興味のある人には見てもらっても、タダで使って遊んでもらってもいいかもしれないと思って、その準備を進めてもいます。