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文は悪者ではありません

使い方ですね