プロが教える店舗&オフィスのセキュリティ対策術

僕は最近プログラミングにハマっています。
僕が最初にプログラミングに触れたのは、DSi wereの「プチコン」というゲームを作れるソフトを残高が余っているのが理由で、興味半分でインストールした時でした。
それからプログラミングにどんどんのめり込んでいって、今は自分のホームページに
Javascriptを埋め込んでみたり、Androidアプリの開発に挑戦したりしています。
そのプログラミングを楽しむ日々で、いつも疑問に思うことがあります。

「なぜプチコンの『Smile Basic』言語以外に、『GOTO文』と『ラベル』をつけることができる言語が少ないのか」

単純な上の文から実行していくプログラムのソースに、
@◯◯(◯は任意で設定できる)を書き込んでおいて、
あとの命令に『GOTO文』を記述して、同時にラベル名を指定することで、
指定したラベルの部分まで戻って、そのラベル以下の命令を繰り返し実行したり、
処理を飛ばしたりすることができます。

ところが、他の実際にアプリ開発などに使われている言語には、
『ラベル』も『GOTO文』もあまり見かけません。

どうして、簡易的な言語『Smile Basic』にあった『GOTO文』が、
他の言語にはあまり使われていないのでしょうか????

A 回答 (4件)

こちらのリンクをどうぞ


http://ja.wikipedia.org/wiki/Goto%E6%96%87
    • good
    • 0
この回答へのお礼

あっ、Wikipediaにも説明しているページがあったんですね!
回答ありがとうございました!

お礼日時:2014/03/19 20:19

GOTO文はプログラミング・ミスを誘発するものだからです。


Basic言語ではありましたが、あまりにもあっちに飛びこっちに飛びとプログラムに脈絡がなくなるためです。私も最初の頃はBasic言語やFORTRAN言語でプログラムをしていましたが、GOTO文はやっぱりバグの元でしたね。

C言語やVB系の言語になるとGOTO文はなくなります。替わりにGOSUB文のような使い方をするサブモジュール、モジュールという考え方でプログラムをするようになって来ています。

まあBASIC言語はインタプリタなのであまり考えずやってしまっても途中で止めてメンテも出来ますが、他の言語はコンパイルしますので途中では実効を止めることができません。
    • good
    • 0
この回答へのお礼

実は僕もちょくちょくバグ起こしてました(笑)
でも元から実装されてない言語があるのはどうかなぁっておもいますね。
回答ありがとうございました!

お礼日時:2014/03/19 20:21

30年前、私がパソコンのBASICを始めた時は、goto文を必要以上に使ったプログラムが多く見られました。



そのようなプログラムは、俗に「スパゲッティープログラム」とよばれていました。

逆に、分かりにくいプログラムを作れといわれたらgotoを多用して、迷路のようなフローにすれば良いのです。自分でもわからなくなりますが・・・。


C言語でもgotoは使えますが、余程、特殊で合理的な理由がない限り使いません。

例えば、組み込み系で1バイトでもメモリを節約する必要があったり、1マイクロ秒でも速度を上げたかったり、タイマー割り込みでジャンプするアドレスが固定されていたりなどです。
    • good
    • 0
この回答へのお礼

スパゲティ・・・絡まって一本一本がわからない=GOTO文を多用したわかりにくいプログラム(笑)
いままでGOTO文に頼ってきたので、構造型プログラミングについて、もっと勉強していきたいです。
回答ありがとうございました!

お礼日時:2014/03/19 20:24

 GOTO文ではありませんが、アセンブラ言語にはJMP命令というのがあります。

命令の意味はGOTO文と同じで、特定のラベルに分岐する為のものです。

 使用しても特に問題は無いのですが、プロシージャ(サブルーチン)内でJMP命令を実行すると、スタックポインタがずれた状態でRET命令を実行して暴走する場合があるので、注意が必要になります。同じく、スタックポインタを考慮しないでJMP命令を多用すると、エンドレスループや難しいバグが生じる結果になります。

 GOTO文が使われなくなったのは、やはり、バグが生じやすい問題があるからでしょう。8ビットパソコンでプログラムを書いていた頃も、出来るだけGOTO文は使わない方が良いと言われていたので、ほとんどはGOSUB~RET文で書いて、メインルーチンだけGOTO文を使っていました。

 もっとも、リカーシブ(再帰的)プログラムなどのように、GOTO文が無いと作れないプログラムもあり、絶対に使ってはいけないわけではありません。
    • good
    • 0
この回答へのお礼

GOTO文も批判されるだけじゃなく、ちゃんと使うべき箇所があるんですね。
回答ありがとうございました!

お礼日時:2014/03/19 20:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!