僕は最近プログラミングにハマっています。
僕が最初にプログラミングに触れたのは、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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
- その他(プログラミング・Web制作) Android Studio 難しい 4 2023/06/18 22:27
- 日本語 「が」についての叩き台です。ご感想をお聞かせください。 93 2022/09/29 14:11
- 発達障害・ダウン症・自閉症 自閉症の自閉度や成長について 1 2023/04/05 16:26
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- 日本語 脳科学の奇妙な言語獲得論 2 2022/04/04 13:13
- Java 助けでください!!!!!!!!!!!! 4月から働き始めた新人SEです。 皆さんの体験談等を教えてい 7 2022/07/28 23:50
- 哲学 日本語は 言語類型として あたかも始原のごとくである 3 2022/05/29 04:41
- 日本語 自立語/付属語という品詞区分の誤り 5 2022/09/05 00:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
このプログラミング言語のfor分...
-
C言語、C+、C++、C#の違い
-
プログラム言語について c言語...
-
TO_CHARで小数点以下がある場合...
-
現在、大学の応用化学科に所属...
-
UNITY Float型の接尾辞fって
-
F#って何??
-
ソフトの言語の種類を知る方法
-
C,C++,C#には共通点があるので...
-
COBOLでのNOT = の AND条件
-
超初心者の質問
-
GOTO文がない言語・・・
-
C言語とhtmlの違いを どな...
-
vbaとc言語の関連性について
-
AIって何のソフトで作っている...
-
HTMLは、プログラミング言語じ...
-
最近の流行りのプログラム言語...
-
プログラム言語について プログ...
-
swift言語の最適化 swift最適化...
-
C for Linuxでの設定ファイル読...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
プログラム言語について c言語...
-
プログラムに書かれる"%"記号の...
-
C言語とhtmlの違いを どな...
-
vbaとc言語の関連性について
-
AIって何のソフトで作っている...
-
UNITY Float型の接尾辞fって
-
COBOLでのNOT = の AND条件
-
TO_CHARで小数点以下がある場合...
-
COBOLで文字タイプを数字...
-
プログラム言語について プログ...
-
C++における継続行
-
swift言語の最適化 swift最適化...
-
VBSとWSHは読み方が違うだけで...
-
C++ ってなんて読む?
-
web2.0以前のインターネットで...
-
Excel VBAで文字化けする (英語...
-
VBSでDim、Private、Publicの違い
-
HTMLとC++で、どんなホームペー...
-
Pythonって何を意識した言語な...
おすすめ情報