読者です 読者をやめる 読者になる 読者になる

こんにちはマイコン制御

May FORTH be with you.

”Keep it simple, Stupid!” 再び

FORTH QB64 QuickBasic

いつもやるやるばっかり言っている自分なので話半分で聞いてほしいのだけれど、QB64がかなり好きになってしまって、これでアプリ作っていくかもしれない。
以前本格的にBaiscプログラムやっていたならともかく、今どき本格的にプログラムに取り組むのにQuickBasic互換というのはかなり筋が悪いと思うし、実際Pythonなども並行してやる前提ではあるのだけど、何かこのソースがすっと頭に入ってくる具合はとても抗いがたいものがあるような気がするのです。以前にこの記事を読んでいたのもあるかもしれない。
postd.cc
あと下のプログラムを見たとき、他の言語に比べて判らないところが一つもないなあ、と思ったことが大きかった。マイコンで音を出してみたときと同じくらいシンプルで、オブジェクト言語でサウンド関連のクラスを呼び出すよりCPUの動作が見えている感じ。

FREQ = 400                             'any frequency desired from 36 to 10,000
Pi2 = 8 * ATN(1)                       '2 * pi 
Amplitude = .3                         'amplitude of the signal from -1.0 to 1.0
SampleRate = _SNDRATE                  'sets the sample rate
FRate = FREQ / SampleRate
FOR Duration = 0 TO 5 * SampleRate     'play 5 seconds
        _SNDRAW Amplitude * SIN(Pi2 * Duration * FRate)            'sine wave
NEXT
DO: LOOP WHILE _SNDRAWLEN
END  

CPUの動作が見えるといえば、QB64ではPEEKやPOKEも使えてメモリに直接アクセスできたりもするのでした。
f:id:SenjiNiban:20160202204634j:plain
実はシンプルと言いながら、実行環境を落とすと100M位あるし前回書いたようにOpenGLやネットワークにも対応しているのでそんなにシンプルではないのかもしれないのだけれど、言語仕様的にはやっぱりBasicなんで巨大なプログラムを書くのには向いていないとは思います。
f:id:SenjiNiban:20160202205331j:plain
ただ、このシンプルであるが故のハードルの低さっていうのはとても大きい。Forthを作ったチャック・ムーアが言うようにソースの大きさを誇るのはナンセンスで、単一目的のためのコンパクトなソースが良いのだろう。ムーア曰く「1メガで十分」ということ。
もっともQB64の吐き出すexeファイルはフロッピー1枚よりはちょっと大きいのだけれど。
ここのところ、プログラムでアプリ作りたくて、でもどういうものになるか自分でもイメージできなくてモヤモヤがたまっていたんだけれどQuickBasicで作られた"SHOOTING SIXTEEN"の(動きは及ばないけど)なかなかのタイニーゼビウスっぷりを見ていると、自分がやりたいことをするための道具としては、非常にシンプルなものを作れば良いのではないかという気になってくる。
f:id:SenjiNiban:20160202212402j:plain