60
1 ななしのよっしん
2011/08/04(木) 12:16:08 ID: 6keIOXGHkZ
そうだったのか…。>今時は処理に使うとダサい
GOSUB文については触れなくてもいいのかな?BASICだけど。
2 ななしのよっしん
2011/08/04(木) 12:36:18 ID: xX+IhDXjkw
gosubは戻ってこれる性質上サブルーチン/関数やメソッドに置き換わるものだからまた話が違うのでは
3 ななしのよっしん
2011/08/04(木) 20:47:42 ID: YhxKukjlwD
追記部分が微妙に行間読めてない感がするんですが気のせいですか?
4 ななしのよっしん
2011/10/01(土) 07:02:34 ID: cGGXJLon9U
5 ななしのよっしん
2011/12/16(金) 01:08:15 ID: VHuK3WMdda
6 RERA_X
2012/06/16(土) 20:26:48 ID: jIWKjKBh/u
>>1
gosubがないと、BASICで構造化プログラミングが出来ないよ。
関数に飛ぶ命令だと思っていい。
7 ななしのよっしん
2013/05/13(月) 23:12:44 ID: 6qvm66jwSI
8 ななしのよっしん
2013/06/23(日) 14:06:21 ID: vPmGKagSeQ
goto禁止と言ってる奴は、そもそも何が悪いのか分かってないのが悪い。
Dijkstraが"A Case against the GO TO Statement"なんて銘打った本を出版したから、
gotoそのものがダメという見方をする奴が出てきているが、"A Case against the GO TO Statement"で
語られてるのは、処理Blockの入れ子を無視して飛ぶなという事。最近の言語じゃGoなんかがこの規則に則って、
入れ子の上位となる処理Blockへの飛び込みを全面禁止し、入れ子の下位への飛び込みを許可してる。
Gotoを非難するやつは、Goto云々以前に、まず入れ子になった処理Blockの問題について理解しといて欲しい。
9 ななしのよっしん
2013/10/19(土) 21:54:58 ID: LzAMt4RWUm
>多重継承を行う際にgotoを利用することがあるが
↑こんなgotoの使い方ないでしょ?
C++でのクラスの多重継承ではそんな文法ないんだけど・・・
オブジェクト指向言語でも、gotoはあくまで実行順序を制御するジャンプ命令にすぎないんで、クラスの継承とgotoは全く関係ない
これ、記事書いた人はウィキペディアの「スパゲッティプログラム」の項目がgotoに触れているので、うっかりgotoと関係ない部分までもそのまま理解せず真似して書いたんだろう
10 ななしのよっしん
2013/10/28(月) 06:42:03 ID: 4wJViWExW/
多重継承を使うときにどういうふうにgotoを使うのだろうね.
あ,多重継承はmixin派です.
11 ななしのよっしん
2014/01/02(木) 13:45:31 ID: 0h8RyB7U4M
12 ななしのよっしん
2014/01/02(木) 15:51:57 ID: LzAMt4RWUm
>>11
機能に制限はあるもののif構文に近いものでしょう
大量のif...else if...else...の条件分岐を簡略化して書けるようなもんだから
13 ななしのよっしん
2014/06/08(日) 12:57:59 ID: TUj4MW/5Df
14 ななしのよっしん
2014/11/29(土) 16:34:54 ID: CshybwZmkX
多重ループ脱出にはどうしても使う
15 ななしのよっしん
2015/03/27(金) 03:24:32 ID: Fci0QEjqgY
元記事の内容を保存しようとしたまま再構成してるので見出しとその中の記述が噛み合っていません。
具体的には
「goto肯定派の主張」の中に
「しかしながら、人は過ちを犯す生き物である。くれぐれも自分の足を撃たないように注意して使うべし。」が現れるのはおかしいです。
「論争の本質」は
「言語仕様で安全にしておくべきか?」であって、古典的gotoは関係ありません。
と言うか古典的gotoって何でしょうか。D言語の例がありますが、C言語であったとしてもgotoは関数を超えて移動することはできません。
(setjmp関数, longjmp関数ならありますが)
「議論がかみ合わない点」中の
「gotoの適切性を検証しなければならないという管理上の問題」についてはまさに管理上の問題で、
それは処理単位について適切なテストコードを書いていないことが問題ですし、
適切性の問題を出すのであれば、gotoに限らず各種制御文についてプログラム中のどの部分でも起こりえる問題です。
繰り返しますがgoto固有の問題ではなく適切にテストコードを書いていないことが問題です。
「古典的gotoの代替としての"goto"」は「他言語における、より安全になったgoto」みたいな見出しの方が分かりやすいです。
整理されるのであれば読みやすくなるように整理されることを期待します。
16 ななしのよっしん
2015/05/06(水) 19:57:38 ID: IkEmbO96hw
>>14
多重ループしていても全ループを脱する命令が用意されている言語もあるし、
関数などにしてしまえばループが単純化できるケースも散見されるのも事実
17 ななしのよっしん
2015/05/29(金) 12:37:12 ID: h8t/dAIoBw
18 ななしのよっしん
2015/11/20(金) 09:45:28 ID: mT1ingmRrQ
19 ななしのよっしん
2016/02/27(土) 23:24:06 ID: 78weVXldaj
まぁ上に飛ばなければそんなに問題はないんじゃね?
それかINTERCALとかにあるcomefromを使うか…
しかもある実装によるとラベルに対応するcomefromが複数あるとそのラベルに達した時点で複数のスレッドが生成されて平行して実行を続けるという…
20 ななしのよっしん
2016/06/13(月) 14:52:02 ID: yQ7vCGP5L0
ここまで後藤なし
21 ななしのよっしん
2017/10/25(水) 23:06:24 ID: d3mqZgMYH1
gotoを検索して一番gotoに批判的なのが此処の記事だった。
構造化を破壊するgotoが好ましくないだけで、例えば、
if(…) goto work_tail;
で処理ブロック丸々飛び越してネスト地獄を減らすのは、可読性においても有効な手なんだけど、それを引き継いだ馬鹿が何でもかんでもgotoを乱用する可能性が怖いので、わかってる人たちだけで使いましょうねってことだよね?
記事を書いた人は何が何でもgoto全否定主義者なようで、ああこの人は日常においてもtrueかfalseの二択なんだな~と思わずにはいられない。
22 ななしのよっしん
2017/10/25(水) 23:23:55 ID: d3mqZgMYH1
ちなみに良心的gotoについては、近代の高級言語であれば、witch-caseや例外、ラベル付きbreakなどの代替処理命令が存在しますが、
逆に言えば、肯定派と否定派はじつは同じコーディングスタイルの命令名の付け方で対立しているに過ぎないという言い方もできます。
良心的gotoに準じる命令は使っても良いというお墨付きですね。
lintでも、以前は機械的にgotoを排除していましたが、最近は良心的gotoに限り、使用を許すようになりました。
23 ななしのよっしん
2017/11/28(火) 00:33:52 ID: 6R3swkvKUy
>>21
true, falseの二択だとしても条件が杜撰じゃなければ問題ないんだけどな
まぁ使わなくても問題ないことのが多いし、逆にいえば使うべき場所をしっかり定義しとくべきといったところか
たしかにgotoは読みづらいからきちんとコメントでなぜ使ったのか、使った場合はどうする意図があったのかを的確に明示しとかんと、まじで作った本人しか理解できないコードになるから、大人数での共同作業では使わないほうが無難だってことだね
つーか別に個人で使う分にはまったく問題ないしな
プログラムなんて動きゃいいんだよ動きゃ!
24 ななしのよっしん
2018/11/26(月) 22:13:26 ID: JhUBz9xMFu
全体的に改稿してみた(Markdown Extra: https://
DとかGoとかあんまり触ったことないんですけど、見る限りCのgotoにとても近い印象を受けました。
実際その辺りの言語を使ってる人的には如何です?
25 ななしのよっしん
2018/11/27(火) 23:33:23 ID: JhUBz9xMFu
クローズドソースだと分からんけどgoto使ってないオープンソースプロジェクトが見つけられなかった
26 deadbull
2018/11/30(金) 07:08:36 ID: dB2pOv6et6
>>24
検討させていただきました。
記事に具体性がない部分があるために断定は出来ませんが、いわゆる例外処理(try-catch構文)がない言語(C言語)で、例外処理を行うためにはgotoがないと可読性が悪くなるのでgotoが必要というお立場のようにお見受けします。
その上で確認したいのですが、例外処理以外の局面でgotoの不使用が可読性やパフォーマンスを落とす場合というものはありますでしょうか。
心当たりがないならないで結構ですので、あれば「どの言語の」「どのようなケース」かご教示いただければ幸いです。
27 ななしのよっしん
2020/07/16(木) 11:10:27 ID: GaLn8ZEtiQ
28 ななしのよっしん
2020/07/17(金) 07:56:28 ID: 7x2kgINX5V
29 ななしのよっしん
2020/07/17(金) 08:03:07 ID: zZCvs7ds2y
全体がメチャクチャになること請け合い
30 ななしのよっしん
2020/07/17(金) 17:36:47 ID: daX2xoyZc8
ただし都民、テメーはダメだ
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。