![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
僕は最近プログラミングにハマっています。
僕が最初にプログラミングに触れたのは、DSi wereの「プチコン」というゲームを作れるソフトを残高が余っているのが理由で、興味半分でインストールした時でした。
それからプログラミングにどんどんのめり込んでいって、今は自分のホームページに
Javascriptを埋め込んでみたり、Androidアプリの開発に挑戦したりしています。
そのプログラミングを楽しむ日々で、いつも疑問に思うことがあります。
「なぜプチコンの『Smile Basic』言語以外に、『GOTO文』と『ラベル』をつけることができる言語が少ないのか」
単純な上の文から実行していくプログラムのソースに、
@◯◯(◯は任意で設定できる)を書き込んでおいて、
あとの命令に『GOTO文』を記述して、同時にラベル名を指定することで、
指定したラベルの部分まで戻って、そのラベル以下の命令を繰り返し実行したり、
処理を飛ばしたりすることができます。
ところが、他の実際にアプリ開発などに使われている言語には、
『ラベル』も『GOTO文』もあまり見かけません。
どうして、簡易的な言語『Smile Basic』にあった『GOTO文』が、
他の言語にはあまり使われていないのでしょうか????
No.2ベストアンサー
- 回答日時:
GOTO文はプログラミング・ミスを誘発するものだからです。
Basic言語ではありましたが、あまりにもあっちに飛びこっちに飛びとプログラムに脈絡がなくなるためです。私も最初の頃はBasic言語やFORTRAN言語でプログラムをしていましたが、GOTO文はやっぱりバグの元でしたね。
C言語やVB系の言語になるとGOTO文はなくなります。替わりにGOSUB文のような使い方をするサブモジュール、モジュールという考え方でプログラムをするようになって来ています。
まあBASIC言語はインタプリタなのであまり考えずやってしまっても途中で止めてメンテも出来ますが、他の言語はコンパイルしますので途中では実効を止めることができません。
実は僕もちょくちょくバグ起こしてました(笑)
でも元から実装されてない言語があるのはどうかなぁっておもいますね。
回答ありがとうございました!
No.4
- 回答日時:
GOTO文ではありませんが、アセンブラ言語にはJMP命令というのがあります。
命令の意味はGOTO文と同じで、特定のラベルに分岐する為のものです。使用しても特に問題は無いのですが、プロシージャ(サブルーチン)内でJMP命令を実行すると、スタックポインタがずれた状態でRET命令を実行して暴走する場合があるので、注意が必要になります。同じく、スタックポインタを考慮しないでJMP命令を多用すると、エンドレスループや難しいバグが生じる結果になります。
GOTO文が使われなくなったのは、やはり、バグが生じやすい問題があるからでしょう。8ビットパソコンでプログラムを書いていた頃も、出来るだけGOTO文は使わない方が良いと言われていたので、ほとんどはGOSUB~RET文で書いて、メインルーチンだけGOTO文を使っていました。
もっとも、リカーシブ(再帰的)プログラムなどのように、GOTO文が無いと作れないプログラムもあり、絶対に使ってはいけないわけではありません。
No.3
- 回答日時:
30年前、私がパソコンのBASICを始めた時は、goto文を必要以上に使ったプログラムが多く見られました。
そのようなプログラムは、俗に「スパゲッティープログラム」とよばれていました。
逆に、分かりにくいプログラムを作れといわれたらgotoを多用して、迷路のようなフローにすれば良いのです。自分でもわからなくなりますが・・・。
C言語でもgotoは使えますが、余程、特殊で合理的な理由がない限り使いません。
例えば、組み込み系で1バイトでもメモリを節約する必要があったり、1マイクロ秒でも速度を上げたかったり、タイマー割り込みでジャンプするアドレスが固定されていたりなどです。
スパゲティ・・・絡まって一本一本がわからない=GOTO文を多用したわかりにくいプログラム(笑)
いままでGOTO文に頼ってきたので、構造型プログラミングについて、もっと勉強していきたいです。
回答ありがとうございました!
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムに書かれる"%"記号の...
-
COBOLでのNOT = の AND条件
-
C言語、C+、C++、C#の違い
-
COBOLで文字タイプを数字...
-
VCとVC++
-
C++ ってなんて読む?
-
C言語って古いですか?
-
UNITY Float型の接尾辞fって
-
Excel VBAで文字化けする (英語...
-
「VB」と「VB.NET」の違いについて
-
vbaとc言語の関連性について
-
UWSCはどのプログラミング言語?
-
C MAGAZINEに替わるプログラミ...
-
Transitional/ENとは
-
verilogの勉強ってどうやってし...
-
今ってプログラミング言語は何...
-
TANDEM言語ってあるんですか?
-
チューリング完全とは何か?
-
数字、英語以外で直接入力でき...
-
BASICプログラムを使えるパソコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
今ってプログラミング言語は何...
-
C言語、C+、C++、C#の違い
-
プログラミング言語について
-
COBOLでのNOT = の AND条件
-
近年誕生したプログラミング言語
-
UNITY Float型の接尾辞fって
-
C言語とhtmlの違いを どな...
-
vbaとc言語の関連性について
-
C++における継続行
-
プログラムに書かれる"%"記号の...
-
COBOLで文字タイプを数字...
-
VBSでDim、Private、Publicの違い
-
TO_CHARで小数点以下がある場合...
-
VBSとWSHは読み方が違うだけで...
-
Excel VBAで文字化けする (英語...
-
VCとVC++
-
HTMLとC++で、どんなホームペー...
-
C++ ってなんて読む?
-
UWSCはどのプログラミング言語?
-
会計システムをつくるために必...
おすすめ情報