トップページ⇒tech
1001コメント245KB

goto文を恐れなく使う兵達のスレ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
goto文を恐れなく使う兵達のスレです。

ちなみに、スレの題名は、
http://www.genpaku.org/realprogrammerj.html
の
「本物のプログラマは、GOTO を恐れずに使う。」
からきています。
著者と訳者に感謝感謝。
0002デフォルトの名無しさんNGNG
goto >>1
0003デフォルトの名無しさんNGNG
goto >>1001
0004デフォルトの名無しさんNGNG
goto >>4
0005デフォルトの名無しさんNGNG
Gotoを使うとソースが読みにくくなる、
っていうのは都市伝説な気がするな。ぼかあ。
0006デフォルトの名無しさんNGNG
for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
↑コンパイルできるか否か目で見て判断せよ
0007デフォルトの名無しさんNGNG
>>6
やだ。
0008デフォルトの名無しさんNGNG
SAGE:
0009デフォルトの名無しさんNGNG
goto sage放置
0010デフォルトの名無しさんNGNG
>>6
R-やe-はコンパイルできるのか?
0011デフォルトの名無しさんNGNG
P:訳わからん関数つかうな
R,e,C,u:変数として宣言されてない

ぱっと見て、このくらいのエラーはでるだろうな。
0012デフォルトの名無しさんNGNG
正規表現よりは読みやすいんだからいいじゃん(´ー`)
0013デフォルトの名無しさんNGNG
Cだとgotoは関数の外へ出て行くことはないんだから
それほど目くじら立てなくてもいいような。
正しgotoにも使い方ってもんがあるんだと思う。
0014デフォルトの名無しさんNGNG
goto 削除依頼;
0015デフォルトの名無しさんNGNG
うちの新人の後藤は使えないね。
0016デフォルトの名無しさんNGNG
使えないと言ってるやつが一番使えない
0017      NGNG
on http://www.genpaku.org/realprogrammerj.html go to error >>1    無理するなよ   (´∀` )  
0018デフォルトの名無しさんNGNG
後藤を恐れなく使う兵達のス(以下略
0019デフォルトの名無しさんNGNG
gotoくらい使えよ。
gotoが出そうになったら関数化したりしてごまかしてきたけど。
0020デフォルトの名無しさんNGNG
gotoに罪は無い、いかれた使い方をするやつが悪い
0021デフォルトの名無しさんNGNG
本物のプログラマはC++を使う。
だって、そうでしょ。
0022デフォルトの名無しさんNGNG
本物のプログラマは言語に囚われない。
0023デフォルトの名無しさんNGNG
本物のプログラマはRubyは使わない。
0024デフォルトの名無しさんNGNG
本物のプログラマはシステムに適した言語を使う。
0025デフォルトの名無しさんNGNG
本物のプログラマはFORTRAN使うんだとよ。
0026デフォルトの名無しさんNGNG
>本物のプログラマは国家安全保障局に勤めて、ロシアの暗号を解読している。
0027デフォルトの名無しさんNGNG
本物じゃないプログラマにはgotoを使わせてはいけない。
0028デフォルトの名無しさんNGNG
> 真に傑出した能力を持つプログラマなら、6メガバイトのコアダンプに埋もれたバグを、16進計算機を使わずに見つけ出すことも出来よう。

こいつは間違いなく本物のプログラマだ、すげぇよ。
0029デフォルトの名無しさんNGNG
>>28
16進計算機がなんのことかよく分からんが、16進計算機を使ったほうが
速いのに、使わないんだったらバカだな。
0030デフォルトの名無しさんNGNG
WRITE(*,*)'FORTRAN使えんから本物のプログラマじゃねーよ'
0031デフォルトの名無しさんNGNG
>>29
俺も16進計算機が何のことかよく分からんが、
(電卓の仲間と仮定してみよう)
熟達したそろばにすとは電卓よりも速く暗算出来るべ。
0032デフォルトの名無しさんNGNG
日本はそろばんがあって高速に暗算できるのも納得できるんだけど
アメリカとかはどうなんだろう。
0033デフォルトの名無しさんNGNG
>本物のプログラマは自販機のポップコーンを好む。
>並のコーダーはそれを電子レンジで熱するが、
?本物のプログラマはCPUの熱を使う。
>コーンの破裂をきいて、いまどのジョブが走っているかが解るのだ
誰か実践してみて。本物と認めるから。
0034デフォルトの名無しさんNGNG
本物のプログラマは変人
0035デフォルトの名無しさんNGNG
33
コーンが熱で破裂する前に画面がフリーズしそうだ。
0036デフォルトの名無しさんNGNG
16進新計算機って、
>>31

16進数([1,2,3,4,5,6,7,8,9,a,b,c,d,e,f]として、
16番目で次の桁に繰り上がる[10]となる数のことです。)
を四則演算(あるいはそれ以上か?)できる計算機じゃないですか?
(Win付属の電卓も関数電卓モードにしてあると16進計算ができる)
たしかアポロ宇宙船の映画で、宇宙飛行士が16進筆算しているのを見たことがある。
ってプログラミングするなら名前ぐらい覚えておきたい。
0037デフォルトの名無しさんNGNG
>>33
昔のLOGINかなんかで実際にCPUで目玉焼き作ったりしてたよ。(ウズラで)
今じゃアタリマエすぎて面白くも何とも無いけど。
0038デフォルトの名無しさんNGNG
goto文を使うと便利なのは、
関数の頭でクリティカルセクションに入るやつかな。

関数を2段で組むより、

end:
leaveCriticalSection();
return;
}

とやっておくと便利。
今更そんなプログラムをC++で組む程暇な奴がいるとは思わないけど。
0039デフォルトの名無しさんNGNG
HSP使っている奴らはみんな凄いってことか?
0040デフォルトの名無しさんNGNG
C++では、ふつー、
int somefunc()
{
CCriticalSection guard(&Module.CriticalSection);
 if( a ) return 0;
....
}
とかにすると思うけど……
0041デフォルトの名無しさんNGNG
>>0x01-0x28
もう、お前らバカかと、アホかと。
004238NGNG
>>40
そのコードの意味よくわからないんだけど
教えてくれない?
aって何?
0043デフォルトの名無しさんNGNG
デストラクタで自動的にクリティカルセクションがunlockされる
0044デフォルトの名無しさんNGNG
ようするにスタック領域にオブジェクトを作るって事?
0045デフォルトの名無しさんNGNG
オブジェクトじゃなくて、インスタンスね。
004640NGNG
 if( a ) return 0;
はこういうふうに途中でreturnしても問題ないという意味で、
本質ではないです。
スマソ。
0047デフォルトの名無しさんNGNG
いっそfor while廃止。


loop:
if(i < 0)
goto end;

func();

i++;
goto loop;
end:
0048デフォルトの名無しさんNGNG
スタック領域にインスタンス作る方法は、
デストラクタでunlockする事を期待するわけだけど、
もし途中で例外が投げられたりしても平気なのかな?
0049デフォルトの名無しさんNGNG
>>48
C++の例外はそのための例外じゃないのか?
0050デフォルトの名無しさんNGNG
>>100は>>99のうんこを食べる
0051名無しさん@お腹いっぱい。NGNG
java に goto 文が無くて、ビクーリしたYO!
0052デフォルトの名無しさんNGNG
gotoって無いとふべーんなことは確かにあるけど、
普段はめったに使わなくねぇ?
0053デフォルトの名無しさんNGNG

goto文さえあれば、分岐以外の制御文は要らない。
0054デフォルトの名無しさんNGNG
エラー処理にgoto使うなんて反則だね。
美しいコードにはgotoは存在しない。
0055デフォルトの名無しさんNGNG
>>54
gotoの利用法で多重ループからの脱出ってあるけど結構理にかなってるね。

0056デフォルトの名無しさんNGNG
>>54はgotoダメダメ教信者です。
0057デフォルトの名無しさんNGNG
55
printfのソースで結構みた。
0058デフォルトの名無しさんNGNG
gotoはみんな、throwにしてしまえ(w
0059デフォルトの名無しさんNGNG
全部末尾再帰
これ最強。
0060デフォルトの名無しさんNGNG
>>58
戻れないじゃん。
0061デフォルトの名無しさんNGNG
>>60
do{}while()
と組み合わせれば戻れるかも・・・
0062デフォルトの名無しさんNGNG
>>61
必死だな(藁
コード的に。
0063デフォルトの名無しさんNGNG
>>51
gotoの変わりにラベル指定できるbreakがあるよ
0064デフォルトの名無しさんNGNG
ラベル使ってる時点でgotoと同位
0065デフォルトの名無しさんNGNG
>>64
switch否定派?
006654NGNG
お前等みたいな低賃金低級低脳ルーチンワークプログラマは
神のコードから一番遠いところで一生グズってるのがお似合いだ
0067デフォルトの名無しさんNGNG
>>66←典型例
0068デフォルトの名無しさんNGNG
神のコードか。
しかし、その出来が66のような人間では、
神もたいしたことはないな。
0069デフォルトの名無しさんNGNG
>>68
紙のコードのタイポと思われ
0070デフォルトの名無しさんNGNG
>>1
原典
http://www.acm.org/classics/oct95/
0071デフォルトの名無しさんNGNG
蚊味のこーど?
0072デフォルトの名無しさんNGNG
>>66 神!
0073デフォルトの名無しさんNGNG
おまけ "`Goto considered harmful' considered harmful'"
http://www.sra.co.jp/people/katsu/doc/jargon/considered%20harmful.html
0074デフォルトの名無しさんNGNG
おまえら Knuth の Structured Programming with go to Statements を知らないのですか?
007554NGNG
Knuthなんて糞。
奴はプログラミングの世界を停滞させた戦犯の一人。
0076デフォルトの名無しさんNGNG
>>74
みんな多かれ少なかれ知っての上でそれは本当に正しいかをみんなで検証してみようって話だろ?
本厨ってのもどうかと。
案外「そう言うもんだ」って自分で検証してないことって多いんだよ。
0077デフォルトの名無しさんNGNG
Knuthが糞なのはTeXのマクロを書いてみれば実感できるが
それとgoto文恐怖症とは話が別。
0078デフォルトの名無しさんNGNG
必ず上から下に飛ぶのならgotoもいいもんだと思うが。
0079デフォルトの名無しさんNGNG
エラー処理をちょっと丁寧にやるととたんにgoto文のありがたみが良く分かる。
0080デフォルトの名無しさんNGNG
>>78-79
お前らは例外だ!
0081デフォルトの名無しさんNGNG
>>79同意
無理に関数化したりすると逆に読みづらくなる
0082デフォルトの名無しさんNGNG
ところで、
・break, continue
・関数末尾以外のreturn
・try ... catch ...
は、gotoと同じような機能を持ってるってことは分かってる?

gotoは、上のような意味でつかいたいが構文的にそういうものが用意されていない場合に
つかうわけ。たとえば、ネストしたループからの脱出とか、Cでtry ... catch...みたいな例外
処理をしたい場合とかね。

わかるかなぁ?
0083デフォルトの名無しさんNGNG
またこの手のスレか。
0084デフォルトの名無しさんNGNG
>>82
returnは違うと思う。
0085デフォルトの名無しさんNGNG
C の break がループと switch の中でしか使えないってのは失敗だと思う。
任意のブロックから抜けだせるようにしときゃよかったのに。
0086デフォルトの名無しさんNGNG
>>85
関数で使えばreturnと等価になるの?
0087 NGNG
>>85
漏れはむしろswitch抜ける予約語が別に欲しい
ループの中にswitch使えないのは痛い
0088デフォルトの名無しさんNGNG
今更そんなこと言われてモナー
0089デフォルトの名無しさんNGNG
>>87
ワシも欲しい
0090デフォルトの名無しさんNGNG

 goto 完全排除論って、古き良きBASICでボーダレスにジャンプしまくり出来たのを諌める為に存在したんだと思う(過去形)。
 Cみたいに関数内に限定された機能に対しても、同様の理屈を提示するのは如何なものか・・・そう思う。

 昔研修で、キーワードの存在すら完全否定されて渋々該当個所を手直しした記憶が怒りと共に沸々と。
 やっぱ多重ループ抜けるのには、Cだと簡潔なんじゃよ〜。
0091デフォルトの名無しさんNGNG
10 A=1+2+3+4
20 GOTO A
0092デフォルトの名無しさんNGNG
>>90 多重ループを抜けるのは return にしなさいな
 多重ループはそれなりに複雑だから その程度で構造化すれば丁度いい按配
009390NGNG
>>92
 それじゃあ、関数から抜けちゃうじゃん。
0094デフォルトの名無しさんNGNG
>>90
92の文章は、まさに多重ループは関数にして切り離せって
いっているんじゃないのか?
0095デフォルトの名無しさんNGNG
>>92 >>94
関数化するのは「機能」であって「複雑なコード」ではない。
ある機能を実現するのに、多重ループと脱出gotoが必要なら使って悪いことはない。
009690NGNG
 うわっ!
 日本語理解して文章読めないってのはこの事か!!

>>92殿、適切なアドバイス、改めて感謝します。
>>94殿、ご指摘に感謝。 間違えた事に気が付かない所でした。
0097デフォルトの名無しさんNGNG
>>95 そう言わずに 分割してみなさいって。
そういうの繰返せば
どうすればキレイに機能としても分割出来るか考えるようになるから
0098デフォルトの名無しさんNGNG
素直にgoto使うべきなのは やっぱり状態遷移型のコードだけじゃないのかな
0099デフォルトの名無しさんNGNG
状態遷移で検索したら こんなツールが!

http://www3.toshiba.co.jp/sic/seigyo/scf/sys01_07.htm
0100デフォルトの名無しさんNGNG
>>99
そのキャプチャの中の上の図、
単純な構造をわざと複雑に書いてねぇか?(w
0101デフォルトの名無しさんNGNG
gotoにスコープってあるの?
Cなんかで、ひとつの関数の中から他の関数の特定の行へ飛んだりとかってできない?
■ このスレッドは過去ログ倉庫に格納されています