BASICのGOTO文について
BASICのGOTO文について
思う事があります
CPUは機械語を実行しますが
機械語に1対1に対応しているのが
アセンブラです
アセンブラの制御命令は
条件分岐と分岐などで行われます
je jpなどCPUによって
書き方は色々ありますが
これをBASICで書くと
IF A = 0 GOTO *LABEL (IF A = 0 THEN *LABEL)
GOTO *LABEL
になります
つまり、GOTO文が無ければCPUを制御
出来ないという事になります
しかし、BASICにはGOTO文に変わる命令も
用意されいてます
それがFORやWHILEなどです
これらの命令のおかげでアセンブラよりも
分かり易いプログラムが書けます
分かり易さを考えて、GOTO文よりFORやWHILE
などの高級言語特有の命令を使用するよう
推奨されました
この後、GOTO文が悪者にされるようになりましたが
アセンブラのjpなどは批判されていません
これは、GOTO文がアセンブラのようにも
プログラムが書けるよう存在していた事が
忘れ去られていった結果だと思います
アセンブラのCALLはBASICではGOSUBです
この様にBASICはアセンブラに出来ることは
出来、さらに高級言語特有の制御命令も
使える仕様になっていました
よって、GOTOを悪者にすることはアセンブラや
CPUを悪者にしているのと同じ事だと思います
昔は、分かり易いプログラムを書きましょうと言う
意味でGOTO文は避けましょうと言っていたのが
いつのまにかGOTO文の存在自体が悪いように
言われるようになってきました
アセンブラやBASICは
書く人によって分かり易くも
スパゲッティにする事も出来ます
その後、初心者でもスパゲッティになりにくく
するように工夫したプログラミング言語が
でてきましたが、どれも最終的にはアセンブラ
(機械語)で動いていますので、結局は
BASICで言うGOTO文で動いている事に
なります
GOTO文は悪者ではありません
使い方ですね