年金ロボットをめざして

FX(外国為替証拠金取引)自動運用ロボットの開発ブログのはずだった

Basic の制御構文

今回は Basic 言語の制御構文を比較してみた。
ただし、全部が全部 Basic なので、どれも似たようなもの。

N88-BASIC / 99BASIC(ガラパゴスBASIC)
          if ~ then ~ else ~
          for ~ next
          while ~ wend

QuickBASIC
          if ~ then ~ elseif ~ else ~ end if
          select case ~ case ~ case else ~ end select
          for ~ next
          while ~ wend
          do ~ loop

VisualBasic / VBScript(単に VB で括れる)
          if ~ then ~ elseif ~ else ~ end if
          select case ~ case ~ case else ~ end select
          for ~ next
          for each ~ next
          while ~ wend
          do ~ loop

FreeBasic
          if ~ then ~ elseif ~ else ~ endif
          select case ~ case ~ case else ~ end select
          for ~ next
          while ~ wend
          do ~ loop

PureBasic
          if ~ then ~ elseif ~ else ~ endif
          select ~ case ~ default ~ endselect
          for ~ next
          foreach ~ next
          while ~ wend
          repeat ~ until

wxBasic
          if ~ then ~ elseif ~ else ~ end if
          select case ~ case ~ case else ~ end select
          for ~ next (end for も可)
          for each ~ next (end for も可)
          while ~ wend (end while も可)

と大体こんな感じ。
少し解説すると、ガラパゴスBASIC は if 文がブロック化(構造化)できないのが欠点で、それ以外はそれほど問題はないと思う。if 文もラベルを使えばブロック化はできるが、プログラムが大きくなるとラベル数が多くなりその管理が面倒になる。

QuickBASIC 以降はそれほどの違いはないが、美意識のうえではどうでもよいとはいえない。どの Basic もガラパゴス以来の for ~ next と while ~ wend の伝統を守り続けていることはうれしい。自然言語同様に伝統表現を守ってほしいと思う。Lisp の cdr、car、cons のようにね。(ぼくは、クッダカーコンスと呪文のように覚えているのでこの順となる)

FreeBasic は QuickBASIC とほぼ同じだが、end if は endif とくっつけてもよい。出現率が高いので特別扱いということなのだろう。

個人的には PureBasic の制御構文が一番好みだ。それに一番美しいだろう。

ところで、日本人はどうも Basic を下に見て嫌う傾向があるのだという説をネットで読んだことがある。C のほうがかっこいいし社会的体裁もよいということなのだろうか。ぼくは C も書くが Basic が劣るとは感じない。ぼくはアセンブラのプロだったので、C のポインタには馴染みがあるが、それは FreeBasic でも PureBasic でも可能だ。C のポインタしか使ったことはないけどね。:P

細かい点だけど、C の swith 文はどうなんだろ。ぼくは C の swith のフォールスルーの仕様がそもそも好きじゃないので、Basic の select 文のほうを支持するね。

Go 言語の場合はフォールスルーはしないで、したい場合は明示的に fallthrough 文を書く。break 病に冒された人は必要のない break を書いてもよいことになっている。

さらに C の swith と Basic の select を比べると、C の swith で評価できる式は、整数型、文字型、列挙型に限られるが、Basic の select では文字列や論理式も可能であり、これはぼくにはとても有用なのだ。

 最後になるが、Pascal 派の人にとって Delphi がフラグシップであるように、Basic 派のぼくらにとっては PureBasic がフラグシップになるだろう。えっ、それは VIsualBasic.NET じゃないのかって? うん、それでもいいよ。