魔術師をめざして

魔術師を目指して、相場・数学・プログラム言語を研究しています。

99 BASIC のすすめ(5)

また、BASIC かよって、まぁまぁ。

昨日、99 BASIC のヘルプファイルを初めてしっかり読んだ。99 BASIC は実によくできていると思う。これが N88-BASIC の仕様のままだったとしたら不満だったと思うよ。

f:id:fxrobot:20131112075655j:plain

今回のこのコードはぼくにとってのブートストラップになると思うんだ。といっても中身はなんてこともないんだけどね。プログラムの画面にファイルをドロップさ せて、そのファイルを処理するというスタイルだ。このコードの3倍くらい書けば、簡単な文字列置換プログラムができあがるだろう。

このプログラムは、テキストファイルを画面にドロップさせて、そのファイルを1行ずつ読み込んで、そのまま別のファイルに1行ずつ最後まで書き込むというものだ。

このままではまったく役に立たないが、スクリプトファイルをドロップして、そのスクリプトの指示に従ってデータ処理を行うというプログラムを作ろうとしているのだ。

99 BASIC は、N88-BASIC から役に立つ小さな拡張をいくつかおこなっている。今回使った FSPLIT もそのひとつだ。ファイルドロップの割り込み機能もそのひとつで、これがとても重要であることはいうまでもない。その他、DATA文にラベルを付けることができ、READ文でそのラベルを指定ができる機能は、ぼくにとっては画期的だ。

確かに 99 BASIC には GUI やネットワークやデータベースなどのリッチな機能はないが、他言語による DLL も扱えるし、コンパクトにして十分だともいえる。

ぼくは、ぼくにとって重要なプロジェクトをこの 99 BASIC で取り組んでみようと考え始めたのだ。この10月に Python 3 を改めて学んだのは、そのプロジェクトのためだったが、プロトタイプとして 99 BASIC で書いてみようと思う。今そう思っている。

99 BASIC は機能が小さく、そのことはむしろ、構えることなく自由なプログラミングを可能にしてくれる。だって、データ構造は配列しかないんだから。「ラベル付きDATA文」は強力なデータ構造といえなくもないけどね。

ぼくはあと Map だけでいいからほしいと思っていたけど、ラベル付きDATA文があるのならそれでいいかと思えたのだ。Linked List や Map は必要なら自分で実装するよ。それもまた楽しい。

ぜひ、皆さんも 99 BASIC を活用してもらいたい。

あと最後に、ガラパゴスBASIC のソースコードを見ると goto <行番号> がいっぱい出てくるが、これはいただけない。自由がいいといってもこの自由ばかりはね、やめたほうがいいよ。

99 BASIC は goto を使うのを避けられない言語だから、大いに使うわけだけど、使い方さえ間違わなければ構造化BASIC と同等なコードが可能だと思う。変数スコープも一人で作るプログラムだから工夫をすれば問題はないと思う。

もっと 99 BASIC をみんなで使おうよ。