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 じゃないのかって? うん、それでもいいよ。