MSX Basic

入門用プログラム言語として開発されたBasic言語。50年以上の歴史を持ち今もこの言語を基本としたものがよく使われています。
http://www.gizmodo.jp/2014/05/basic50.html

私もこの言語で初めてブログラムというものを体験した一人です。
http://decode.red/ed/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E9%AD%85%E5%8A%9B

プログラムをどのように学ぶかということを考えるとき、このBasicについてもう少し掘り下げる必要があるのではないか、ということで、当時を思い出す意味でもMSXを引っ張り出していろいろといじってみました。
Basic言語はいろんなパソコンに実装されていましたが、MSXの後期に発売された、3.5FD内蔵のMSX2+がお気に入りです。(ディスプレイは最近のもの)
msx01
電源を入れるとすぐに立ち上がり、Basicが使えるようになります。runコマンドで入力したプログラムを行番号順に実行します。
これは0から9までforループで指定した座標に表示するプログラムです。
msx02
プログラムは行単位で上書きしたり、挿入したりできます。またカーソルを移動してリターンキーを押すだけで、そのに存在する文字列を実行できます。
msx03
ディスクを使ったプログラムの保存/読み出しは、save,loadコマンド、一覧はfilesコマンドが使えます。
このように使ってみると、Basicは言語の部分だけを分離して評価するものではなく、OS、エディタ、実行環境が一体となったものとして評価する必要があると思います。
今の考え方で、行番号を使った実行ルールや、プログラムの任意行にジャンプできるGOTO文は、評判が悪いのですが、マシン語(アセンブラ)でプログラムを作るときの考え方には近いという特徴もあります。(行番号はアドレス)再帰プログラムなどでは、スタックを消費しないようにするには、関数呼び出してはなくアドレスジャンプの方が適していたりします。少ないメモリ、遅いCPUでプログラムを効率的に実行するとき、変数のアライメントやCPUの命令の仕様を優先してプログラムを書く必要があります。このようなスキルは逆に現在のプログラム言語では学ぶことができません。(Basicで処理が遅い時はマシン語をData文として読み込んで、実行するという手法はよく使われました。)
またBasicはハードウェアを直接制御するケースが多々あります。便利なAPIなどないので、必然的にビットだとかドットといった単位で、プログラムを考えることになり、コンピュータのしくみを意識することができます。(サウンドレジスタなどよく使いました)
このように考えると、今の時代でもBasicを習う意義は十分にあると感じました。
何よりもいろいろと触っていると当時のわくわく感がよみがえってくるのが、楽しいです。