2018年01月11日

SmileBASIC で「さめがめ」

 「さめがめ」をパソコンミニSmileBASIC で実装してみた。ソースコードはこちらにあります。

20180111-1.jpg

写真が下手すぎだな。スクリーンショットの機能が欲しい…

 SmileBASIC は初めて使った。特徴はこんな感じかな。

  • 行番号に頼らないのは◎。今どき当たり前だけど、昔の BASIC に慣れた人は「やっぱり行番号への GOTO がわかりやすい」とか言うんだよな。(その価値観を子供向けの「プログラミング教育」に持ち込むのはやめてほしい、と切実に思う。)
  • 関数・手続きが定義できるのもよい。また、関数・手続きの中で VAR, DIM で変数を宣言すると、ローカル変数とみなされる。これも、今どきの言語では当然実装されているべき。
  • 手続きの定義は DEF name arg1, arg2,... で、関数の定義は DEF name(arg1, arg2,...)。つまり、カッコのあるなしで区別される。この仕様はちょっと違和感があるけど、「命令(カッコなしで使う)」と「関数(カッコありで使う)」の定義だと思えばいい。
  • 2つ以上の値を返す「命令」は、DEF name arg1, arg2,... OUT var1, var2,... と定義する。あまり見たことがない仕様だが、「アドレス渡し」の引数を実装するよりは、わかりやすいかもしれない。
  • 配列参照は a(i) ではなくて a[i]。関数と見た目を区別する意味では、この変更は良いと思う。
  • 「等しい」演算子は = ではなくて ==。また、「等しくない」演算子は <> ではなくて !=。配列参照も含めて、このあたりは現在よく使われている言語に合わせてある。
  • ビット演算子 (NOT, AND, OR, XOR) と論理演算子 (!, &&, ||) は分けてある。&&, || は C などと同様にショートカット機能を持つ。
posted by toshinagata at 19:47| 日記