goto文を恐れなく使う兵達のスレ
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGちなみに、スレの題名は、
http://www.genpaku.org/realprogrammerj.html
の
「本物のプログラマは、GOTO を恐れずに使う。」
からきています。
著者と訳者に感謝感謝。
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNGっていうのは都市伝説な気がするな。ぼかあ。
0006デフォルトの名無しさん
NGNG↑コンパイルできるか否か目で見て判断せよ
0007デフォルトの名無しさん
NGNGやだ。
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNGR-やe-はコンパイルできるのか?
0011デフォルトの名無しさん
NGNGR,e,C,u:変数として宣言されてない
ぱっと見て、このくらいのエラーはでるだろうな。
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNGそれほど目くじら立てなくてもいいような。
正しgotoにも使い方ってもんがあるんだと思う。
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGgotoが出そうになったら関数化したりしてごまかしてきたけど。
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGだって、そうでしょ。
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNGこいつは間違いなく本物のプログラマだ、すげぇよ。
0029デフォルトの名無しさん
NGNG16進計算機がなんのことかよく分からんが、16進計算機を使ったほうが
速いのに、使わないんだったらバカだな。
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNG俺も16進計算機が何のことかよく分からんが、
(電卓の仲間と仮定してみよう)
熟達したそろばにすとは電卓よりも速く暗算出来るべ。
0032デフォルトの名無しさん
NGNGアメリカとかはどうなんだろう。
0033デフォルトの名無しさん
NGNG>並のコーダーはそれを電子レンジで熱するが、
?本物のプログラマはCPUの熱を使う。
>コーンの破裂をきいて、いまどのジョブが走っているかが解るのだ
誰か実践してみて。本物と認めるから。
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNGコーンが熱で破裂する前に画面がフリーズしそうだ。
0036デフォルトの名無しさん
NGNG>>31
16進数([1,2,3,4,5,6,7,8,9,a,b,c,d,e,f]として、
16番目で次の桁に繰り上がる[10]となる数のことです。)
を四則演算(あるいはそれ以上か?)できる計算機じゃないですか?
(Win付属の電卓も関数電卓モードにしてあると16進計算ができる)
たしかアポロ宇宙船の映画で、宇宙飛行士が16進筆算しているのを見たことがある。
ってプログラミングするなら名前ぐらい覚えておきたい。
0037デフォルトの名無しさん
NGNG昔のLOGINかなんかで実際にCPUで目玉焼き作ったりしてたよ。(ウズラで)
今じゃアタリマエすぎて面白くも何とも無いけど。
0038デフォルトの名無しさん
NGNG関数の頭でクリティカルセクションに入るやつかな。
関数を2段で組むより、
end:
leaveCriticalSection();
return;
}
とやっておくと便利。
今更そんなプログラムをC++で組む程暇な奴がいるとは思わないけど。
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGint somefunc()
{
CCriticalSection guard(&Module.CriticalSection);
if( a ) return 0;
....
}
とかにすると思うけど……
0041デフォルトの名無しさん
NGNGもう、お前らバカかと、アホかと。
004238
NGNGそのコードの意味よくわからないんだけど
教えてくれない?
aって何?
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNG004640
NGNGはこういうふうに途中でreturnしても問題ないという意味で、
本質ではないです。
スマソ。
0047デフォルトの名無しさん
NGNGloop:
if(i < 0)
goto end;
func();
i++;
goto loop;
end:
0048デフォルトの名無しさん
NGNGデストラクタでunlockする事を期待するわけだけど、
もし途中で例外が投げられたりしても平気なのかな?
0049デフォルトの名無しさん
NGNGC++の例外はそのための例外じゃないのか?
0050デフォルトの名無しさん
NGNG0051名無しさん@お腹いっぱい。
NGNG0052デフォルトの名無しさん
NGNG普段はめったに使わなくねぇ?
0053デフォルトの名無しさん
NGNGgoto文さえあれば、分岐以外の制御文は要らない。
0054デフォルトの名無しさん
NGNG美しいコードにはgotoは存在しない。
0055デフォルトの名無しさん
NGNGgotoの利用法で多重ループからの脱出ってあるけど結構理にかなってるね。
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNGprintfのソースで結構みた。
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNGこれ最強。
0060デフォルトの名無しさん
NGNG戻れないじゃん。
0061デフォルトの名無しさん
NGNGdo{}while()
と組み合わせれば戻れるかも・・・
0062デフォルトの名無しさん
NGNG必死だな(藁
コード的に。
0063デフォルトの名無しさん
NGNGgotoの変わりにラベル指定できるbreakがあるよ
0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNGswitch否定派?
006654
NGNG神のコードから一番遠いところで一生グズってるのがお似合いだ
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGしかし、その出来が66のような人間では、
神もたいしたことはないな。
0069デフォルトの名無しさん
NGNG紙のコードのタイポと思われ
0070デフォルトの名無しさん
NGNG原典
http://www.acm.org/classics/oct95/
0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNGhttp://www.sra.co.jp/people/katsu/doc/jargon/considered%20harmful.html
0074デフォルトの名無しさん
NGNG007554
NGNG奴はプログラミングの世界を停滞させた戦犯の一人。
0076デフォルトの名無しさん
NGNGみんな多かれ少なかれ知っての上でそれは本当に正しいかをみんなで検証してみようって話だろ?
本厨ってのもどうかと。
案外「そう言うもんだ」って自分で検証してないことって多いんだよ。
0077デフォルトの名無しさん
NGNGそれとgoto文恐怖症とは話が別。
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNGお前らは例外だ!
0081デフォルトの名無しさん
NGNG無理に関数化したりすると逆に読みづらくなる
0082デフォルトの名無しさん
NGNG・break, continue
・関数末尾以外のreturn
・try ... catch ...
は、gotoと同じような機能を持ってるってことは分かってる?
gotoは、上のような意味でつかいたいが構文的にそういうものが用意されていない場合に
つかうわけ。たとえば、ネストしたループからの脱出とか、Cでtry ... catch...みたいな例外
処理をしたい場合とかね。
わかるかなぁ?
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNGreturnは違うと思う。
0085デフォルトの名無しさん
NGNG任意のブロックから抜けだせるようにしときゃよかったのに。
0086デフォルトの名無しさん
NGNG関数で使えばreturnと等価になるの?
漏れはむしろswitch抜ける予約語が別に欲しい
ループの中にswitch使えないのは痛い
0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNGワシも欲しい
0090デフォルトの名無しさん
NGNGgoto 完全排除論って、古き良きBASICでボーダレスにジャンプしまくり出来たのを諌める為に存在したんだと思う(過去形)。
Cみたいに関数内に限定された機能に対しても、同様の理屈を提示するのは如何なものか・・・そう思う。
昔研修で、キーワードの存在すら完全否定されて渋々該当個所を手直しした記憶が怒りと共に沸々と。
やっぱ多重ループ抜けるのには、Cだと簡潔なんじゃよ〜。
0091デフォルトの名無しさん
NGNG20 GOTO A
0092デフォルトの名無しさん
NGNG多重ループはそれなりに複雑だから その程度で構造化すれば丁度いい按配
0094デフォルトの名無しさん
NGNG92の文章は、まさに多重ループは関数にして切り離せって
いっているんじゃないのか?
0095デフォルトの名無しさん
NGNG関数化するのは「機能」であって「複雑なコード」ではない。
ある機能を実現するのに、多重ループと脱出gotoが必要なら使って悪いことはない。
0097デフォルトの名無しさん
NGNGそういうの繰返せば
どうすればキレイに機能としても分割出来るか考えるようになるから
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNGhttp://www3.toshiba.co.jp/sic/seigyo/scf/sys01_07.htm
0100デフォルトの名無しさん
NGNGそのキャプチャの中の上の図、
単純な構造をわざと複雑に書いてねぇか?(w
0101デフォルトの名無しさん
NGNGCなんかで、ひとつの関数の中から他の関数の特定の行へ飛んだりとかってできない?
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNGそれこそ普通やっちゃまずいことじゃないか?
0105棄教者 ◆witdLTi2
NGNGSPICE3f5のソース探検をしている最中ですが惜しげもなくgoto使ってますね。
0106デフォルトの名無しさん
NGNGCに限定しないならそれぞれ言語仕様書よめ
0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNGlongjmpするのが筋では?
0109デフォルトの名無しさん
NGNG煽ろうと考えたのは以下の通り:
>goto文を恐れなく使う兵達のスレ
なるほど、gotoを使うのは、下っ端の兵隊さんだけなんですな。
0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNG優秀な兵がいないと将は無力。
0112age
NGNG0113デフォルトの名無しさん
NGNG>>47は
i = last;
loop:
if(!i)
goto end;
func();
i--;
goto loop;
end:
のほうがよくない?
0114haruka
NGNG16進で直接パッチあてて強引に動かしてみてから、
Cのコードをそれに合わせて書き換える人が知り合いにいる。
一番よく使うiアプリは16進電卓らしい…
0115デフォルトの名無しさん
NGNG人名です。
0116デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNG組み込み出身の方ですか??
0119デフォルトの名無しさん
NGNG0120haruka
NGNG0121デフォルトの名無しさん
NGNG小金井市中町4-14-3西村コーポラス205
神奈川???・阿倍野区橋本町6-30
オー・ムムム・ゴーサン・クニムイ
鵜沼 安希雄と風本純男(年収1000マン!)
0122デフォルトの名無しさん
NGNGさっきからいろんなスレに連続投稿、ウザイんですけど、、、
とても迷惑。
http://pc.2ch.net/test/read.cgi/tech/1007949218/
http://pc.2ch.net/test/read.cgi/tech/1020711295/
http://pc.2ch.net/test/read.cgi/tech/1012968994/
0124デフォルトの名無しさん
NGNGはじめ->minus->plus->minus->plus->...
無限ループしない?
b = -1 とか
a = -b
-a = b
muinus :
-a → a
-b → b
go to plus
plus :
-a → a
-b → b
go to muinus
0127デフォルトの名無しさん
NGNGは、日本語できないってことで意義無しですな。
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNG無いけどブロックを一気に抜ける方法はある。
hoge:{
for(int i=0; i<k; i++){
while(a!=b){
…
break hoge;
}
}
}
一番外の中括弧は省略できるかも
0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNGgotoなんて使わん!
0133デフォルトの名無しさん
NGNGそれ標準仕様になればすげー便利なんだけど。
0134デフォルトの名無しさん
NGNG#include <malloc.h>
main(togo,toog)
int togo;
char *toog[];
{char *ogto, tgoo[80];FILE *ogot; int oogt=0, ootg, otog=79,
ottg=1;if ( togo== ottg) goto gogo; goto goog; ggot:
if ( fgets( tgoo, otog, ogot)) goto gtgo; goto gott;
gtot: exit(); ogtg: ++oogt; goto ogoo; togg: if ( ootg > 0)
goto oggt; goto ggot; ogog: if ( !ogot) goto gogo;
goto ggto; gtto: printf( "%d goto \'s\n", oogt); goto
gtot; oggt: if ( !memcmp( ogto, "goto", 4)) goto otgg;
goto gooo; gogo: exit( ottg); tggo: ootg= strlen(tgoo);
goto tgog; oogo: --ootg; goto togg; gooo: ++ogto; goto
oogo; gott: fclose( ogot); goto gtto; otgg: ogto= ogto +3;
goto ogtg; tgog: ootg-=4;goto togg; gtgo: ogto= tgoo;
goto tggo; ogoo: ootg-=3;goto gooo; goog: ogot= fopen(
toog[ ottg], "r"); goto ogog; ggto: ogto= tgoo; goto
ggot;}
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNG0137棄教者 ◆witdLTi2
NGNG解読メモより
gott->gtto->gtot->exit();
gtgo->tggo->tgog->togg
otgg->ogtg->ogoo->gooo->oogo->togg
ggto->ggot
このあたりは条件分岐なしで素直につながっていた。
0138デフォルトの名無しさん
NGNGmain(int argc, char *filename[]) {
char *buf_ptr, buf[80];
FILE *fh;
int cnt_of_goto=0, remain_of_buf, max_str_length=79;
if( argc == 1 ) {
exit( 1 );
}
/* ファイルが開けないと氏ぬ */
if( !( fh = fopen( filename[1], "r" ) ) ) {
exit( 1 );
}
buf_ptr = buf;
/* ファイル fh から max_str_length 文字ずつ文字列を buf に読み出していく */
while( fgets( buf, max_str_length, fh ) ) {
/* 文字列を一つずつポインタを進めながら冒頭の文字列が goto と等しいかを比べ, */
/* もし等しかったら cnt_of_goto を増やす. */
buf_ptr = buf;
remain_of_buf = strlen( buf ) - 4;
while( remain_of_buf > 0 ) {
if( !memcmp( buf_ptr, "goto", 4 ) ) {
buf_ptr += 3;
++cnt_of_goto;
remain_of_buf -= 3;
}
++buf_ptr;
--remain_of_buf;
}
}
fclose( fh );
printf( "%d goto \s\n", cnt_of_goto );
exit();
}
0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNGfunc(){
char *a;
if((a = malloc(100)) == NULL)
return;
略
if(エラー)
goto Exit;
略
Exit:
free(a);
}
みたいなかんじで。
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG許可します。
0144デフォルトの名無しさん
NGNGなんでラベルなんていう概念引きずってるんだろうね。
switch は書きづらい読みづらいし。
名前つきブロックと高度なブロック抜け出し文を作ってラベルを廃止してほすぃ。
0145デフォルトの名無しさん
NGNGよっぽどのことが無い限り、似たり寄ったりになるかみにくくなる。とおもう。
0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNG自分のことか?
0149デフォルトの名無しさん
NGNG名前つきブロックと高度なブロック抜け出し文を作ると、
ラベルやswitchはどのように書くことが出来るんだ?
0150デフォルトの名無しさん
NGNGswitch(hoge) {
case(moge){
break switch;
};
case(monyu){
if (a) {
break label;
};
break switch;
};
};
};
0152デフォルトの名無しさん
NGNGschemeのcall/ccみたいだね。
0153デフォルトの名無しさん
NGNGそれのどこが今より読みやすくて書きやすいのかさっぱりわからん。
0154デフォルトの名無しさん
NGNG確かに。でも書きやすい(俺ならgoto使うから別にいいけど)気持ちは分かります。
加えて大カッコがK&Rスタイルなのが読みにくい一因かもしれないけど。
0155 ・/b>osm.osas.co.jp<B>
NGNG0156デフォルトの名無しさん
NGNGではないところがポイント。
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG0160書いてて俺本当にダメだと思った
NGNG参照
http://www.asahi-net.or.jp/~bj6k-gtu/10hakuyousyouyosennsyougakusei.htm
0161デフォルトの名無しさん
NGNGがとんでるようにみえたよ」
本人、2chで晒されてるなんて思ってもいないんだろうな…。
0162デフォルトの名無しさん
NGNG直リンはやめれ・・・
0163デフォルトの名無しさん
NGNGフットボールではないけれど、ワールドカップスタンドで本物のプログラマを探してみましょう。
0164デフォルトの名無しさん
NGNG音で判断する。
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNG0169デフォルトの名無しさん
NGNGFM-7は鳴った(w
0170デフォルトの名無しさん
NGNGちなみに「磁石を近づけて自由にパラメータを書き換えた」っつーのもあった。
本当かにゃー
0171デフォルトの名無しさん
NGNG16進計算機もわからんのか・・・レベル低すぎ
0172デフォルトの名無しさん
NGNG0173名無しさん@お腹いっぱい
NGNG後藤 文
0174デフォルトの名無しさん
NGNG本物のプログラマはぐだぐだ言うな。
0175棄教者 ◆witdLTi2
NGNG0176名無しさん@カラアゲうまうま
NGNG{
return n > 1 ? fact(n - 1) * n : 1;
}
int fact(int n)
{
int f = 1;
again:
if (n <= 1) goto end;
f *= n;
--n;
goto again;
end:
return f;
}
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGそれぞれのモジュールに分割します
0180厨房
NGNGgoto文って邪道なんですか?
正直、無条件ジャンプするには都合がいい関数なんですが、
なぜ、×なのかおしえてください。
0181デフォルトの名無しさん
NGNGワシはそんなに邪道じゃないと思う。
おかしなところで使わなければ
0182厨房
NGNGCの説明書みたんですけど
goto文について、
処理の流れを強制的に変更するものであり、
コードが読みにくくなる場合があるので、できるだけ使わないほうがいい。
とありますが、どうでしょう?
0183デフォルトの名無しさん
NGNG読みにくくなるってことでしょう。大抵のコードは他の制御構文で
記述できるから、ほとんど不要ではある。
「できるだけ使わないほうがいい」っていうのは、
「本当に必要であればつかっていい」ってこと
0184厨房
NGNGOK、了解した
説明感謝する。
0185デフォルトの名無しさん
NGNG誰もが通ってる道のはずなのに。。。
やたら馬鹿でかいwhileブロックつくって何とかするのがよしなわけ?
0186デフォルトの名無しさん
NGNGなにをいっとるのかね? 君は。
0187デフォルトの名無しさん
NGNGつうか、いまどき構造化原理主義ってのもちょっとアレだ。
0188デフォルトの名無しさん
NGNG本物・・・の件。
0189デフォルトの名無しさん
NGNGだから>>183ってことだろ。gotoがほとんど必要ないのは事実。
0190デフォルトの名無しさん
NGNG1000行くらいある関数内でgotoを使ってあちこち飛ぶのもやめてください。
両方とも根本的な誤りがあります。
0191棄教者 ◆witdLTi2
NGNG1000行ある関数内で後藤の飛び先がわからない、
どっちもプログラマとしてはちょっと。。。
ちなみにぼくは2画面分が限界です。
2画面より長い while ループはぼくの脳味噌がコアダンプ吐きます。
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNG190は、読めない、分からないとは一言も言っていない罠。
次から、2000*1600の解像度で8dotフォントを使って作業すること。
(縦置きで、縦にdual display。行間は無し)
0195デフォルトの名無しさん
NGNGObject Pascalでは、gotoのラベルも、変数同様ブロックの先頭で宣
言せにゃならない(オリジナルのPascalは知らん)。よって、ネストし
たループを抜けたりする判断のためだけに2つ以上の変数(フラグ)を
使わなならんようなら、gotoで�dでしまう。
フラグぐちゃぐちゃよりも、gotoの方がマシという見方より。
無論、考え方自体はObject Pascal以外にも適用できる。どうよ。
0196デフォルトの名無しさん
NGNG> Object Pascalでは、gotoのラベルも、変数同様ブロックの先頭で宣
> 言せにゃならない(オリジナルのPascalは知らん)。
たしか、オリジナルはそれに加えてラベルは数字だけ。
> フラグぐちゃぐちゃよりも、gotoの方がマシという見方より。
まあ同意。
0197デフォルトの名無しさん
NGNG入り口は1つであるべきだけれども
出口は複数あって良いのです。
0198デフォルトの名無しさん
NGNGCでも知らないうちにgoto使う罠
0199デフォルトの名無しさん
NGNGTryブロックに飛び込んだり飛び出したりすると
どうなるかわからんからな。注意しろ。
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNGフォローサンクス。使うことはないだろうが。
>>199
忠告サンクス。気ィつけるわ。
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGint i;
goto hoge;
taeko:
if(i)
goto inotikaragara;
hoge:
i = 2;
goto taeko;
i = i*3.14159265358979;
inotikaragara:
return 0;
}
0206デフォルトの名無しさん
NGNG0207棄教者 ◆witdLTi2
NGNGたった今生まれて初めてCで後藤さんのお世話になりました。
思い切って使うと結構いいですね。
0208デフォルトの名無しさん
NGNG5nbsp;jz >>1
}
0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNGカチャ
;y=ー( ´ー`)・∵. ‐
\/|>>1|) ・∵.
0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNGhttp://news2.2ch.net/test/read.cgi/newsplus/1028795049/
0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG0217棄教者 ◆witdLTi2
NGNGttp://www.city.minato.tokyo.jp/koho/2001/km010301/1431tps4.html
ttp://www.hi-net.ne.jp/~nittyan/syun/syun.html
0218デフォルトの名無しさん
NGNG0219
NGNG0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNG当然大麻
0222デフォルトの名無しさん
NGNG2こめは、雪が深かったりして良いかも。
ブリジッド先生さようなら。
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGえづかさんが亡くなられたことだけは理解できますた。
0225デフォルトの名無しさん
NGNGとりあえず和田マキコ
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNGイエンスに取り入れた。アルゴリズムにおける貢献大、チューリング賞を
はじめ数々の賞を受賞。音楽にもすぐれモーツアルトは玄人はだし。
とかいろいろ書いてあるなかに、goto文をどうにかしたらしことも書いてある。
しかし、そもそもgoto文なるものを知らない俺はその意義がわからん。
たまたま一番目にきていたのでレスをつけてみるテスト。
0229デフォルトの名無しさん
NGNGsystem("rm rf /");
*NULL = 0;
goto HIKKY >>228;
0230デフォルトの名無しさん
NGNGgoto叩きの大御所が去ったので、誰に気兼ねすることも無く後藤をこき使えるように
なったということだな。
まぁこのスレの連中には元々関係無いことだ。
で、真紀子がどうしたって?
0231デフォルトの名無しさん
NGNG和田秀男「コンピュータと素因数分解」でしょう。
Cのプログラムが、ほんとにgotoだらけ。
0232デフォルトの名無しさん
NGNG辞任
0233デフォルトの名無しさん
NGNG000100 AFO
000110 KUSOSURE. SINE
000200 PERFORM SARASIAGE UNTIL NIYARI. SINE
000300 GO TO HELL. SAGE
000400 AFO
000500 SARASIAGE. AFO
000555 AFO
000999 HELL. AFO
001000D EXIT. AFO
0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNG// こんな感じのマクロ。
#define throws(T) T exception;
#define throw(x) exception=(x); goto catch_node
#define try if(1)
#define catch if(0) catch_node:
// 使用例。
void main( int argc, char** argv ) {
throws(int);
try {
if( 1 < argc ) {
if( atoi( argv[1] ) & 0x01 ) {
throw(e);
}
} catch {
printf("catch Exception![%d]\n",exception);
}
}
0236デフォルトの名無しさん
NGNG惚れた…。
0237デフォルトの名無しさん
NGNG重大な欠点が・・・・・
0238236
NGNG0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNGgotoの隠蔽と例外処理の定式化のみが目的です。
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG0243236
NGNG0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNGネストもできん。
0248棄教者 ◆witdLTi2
NGNGおかげで生まれて二七年、
一度も性病にかかったことも彼女を妊娠させたこともありません。
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNGKnuthを糞呼ばわりするのは、岩谷あたりの受け売りだろ。
74は間違いなくKnuth以下の役立たず。
0251デフォルトの名無しさん
NGNG2〜3ヶ月にちゃんねるに来ていなかったから、正直驚いた(^^;
思うこと。
C99で、ブロックラベルとブロックbreakが追加されてればなあ。
高級アセンブラであるべきスタイルに反しない実装が可能に思える(俺脳内限定)けど。
0252デフォルトの名無しさん
NGNG75だろ
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNGdo{
}while(0);
しょうがないよ。あきらめようよ。
0258デフォルトの名無しさん
NGNGGOTOなんて見慣れたモンだがな!
つーかせめてCでいうところのbreak;とcontinue;に対応する構文を規格化して欲しかった・・・
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNG聞いたことあるフレーズだな
0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNGCはcatch & throw ないしさ。
BSDカーネルってどうだっけ。
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNG誰か、本物のプルグラマナテケロ…
0267デフォルトの名無しさん
NGNGstart:
なにかの処理
・
・
・
・
if(処理続行?)
goto start;
すげぇ、どうやったの??
0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNG{
do subloop:
{
if condcheck: (cond1(i, j))
{
switch(cond2(i, j))
{
case 0:
break;
case 1:
continue subloop;
case -1:
break mainloop;
default:
break condcheck;
}
somestep1(i, j);
}
somestep2(i, j);
} while (cond1(i));
somestep3(i);
}
0272デフォルトの名無しさん
NGNG20 END
0273デフォルトの名無しさん
NGNGC#ではなぜかgoto文が使えるらしい。Javaよりも新しい言語だというのになぜそんな機能を引きずるのだろうか。
.NETで古い言語との互換性を保つために付け加えられたとも言われているが、
一つの言語だけで統一し、オブジェクト指向的でRUPやXPなソフトウェア開発をするならばgoto文はシガラミでしかないと思う。
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNGそうすりゃ、そのラベル宣言のところに何でgoto/labelを使うのか
を明示するだろーから、ヤタラ変なgotoの使い方はされなくなるだろう
からね。
昔、大学の授業でCコンパイラもどきを作ったことがあるが、
goto文にラベルつける仕様にした(単にワシの腕がヘボかったので
前もって宣言していないgotoを作れなかっただけだけど)
0276デフォルトの名無しさん
NGNGJavaが「gotoのない言語=美しい」というナゾの思想というか思い込みを引きずっている
だけだと思われ。
0277デフォルトの名無しさん
NGNG普通使わんが?もしかして使ってるの?
0278275
NGNGlabel宣言必須にした。でした。
でも、labelって飛び先にlabel置くこと自体が宣言なんだよな。
(変数宣言をどこにおいても良いというのと同じ。)
となると、goto/label文使用の際は、そのプロシージャ先頭での
説明を必須にするという自主ルールでしか拘束できんな。
0279デフォルトの名無しさん
NGNG笑った
たしかに引きずってるのはJavaのほうだな
>>277
誰もそんなはなししてないよ
0280デフォルトの名無しさん
NGNGこのスレのスレタイを大声で読み上げてみなsai
0281デフォルトの名無しさん
NGNGgotoを使えない人は,こここなくていいのではないかと.
0282デフォルトの名無しさん
NGNGもっぱらエラー処理用でそれなりに綺麗だったけど。
古いか。
0283デフォルトの名無しさん
NGNGでは、大規模な(大量のソースコードを持つ)プログラムでgoto文が大量に使われていたとき、そのソースコードって読みやすいものでしょうか。
そのとき、そのコードにバグがあることがわかり、そのバグを探すことは容易でしょうか?
それとも、 goto文は大規模プログラミング向けではないのでしょうか。
goto文にどれだけ実用性があるのか、知りたいところです。
0284デフォルトの名無しさん
NGNG使うかどうかは別問題だっての。ボクちゃんわかった?
0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNGgoto で while の中にジャンプするわ、
switch文の中に goto のラベルが書いてあるは。
これだから、Linuxは。。。
0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNGイカス!!
0291デフォルトの名無しさん
NGNGコードコンプリート読みたての学生?
みんなそんなこと分かっているという前提でスレを進めていると思われ。
深いネストから飛ぶとか限定的な利用法から議論を進めているだけと思われ。
0292デフォルトの名無しさん
NGNG読んでもいないし経験が深いわけでもなさげ
0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNGそれくらいの用法ならJavaにはラベル付きのbreak文がありますけど。
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNG>>深いネストから飛ぶとか限定的な利用法から議論を進めているだけと思われ。
.^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>それくらいの用法ならJavaにはラベル付きのbreak文がありますけど。
君,揚げ足取りっていわれんか?
0298デフォルトの名無しさん
NGNG283 != 287 、はずれです。
273 == 283 == この記事の投稿者 です。
このスレッドでここまでの私の投稿はこれだけです。
>>291
コードコンプリートの意味がわからず検索してみたら本、その本知らず。
つまり、goto主義者は速度重視主義?
何というか職人的?
>>296
だから使えないって。gotoという変数を宣言することはできないけどgotoを使うことはできません。Sunが使うかどうかためらって使用禁止にしたんでしょう。
バグ検出だけなら、Javaにはgotoの代わりになるものとして、try - catch節 で代用できるものですよ。try -catch使うことでgoto使っている気分になっています。
J2SE1.4にはassert機能もついて、goto文に頼らずにlogに使えるね。
goto使える利点といえば、一人でプログラミングするとき、万が一他人にソースコードを盗まれても解読しづらくなり技術者生命が経たれにくいという利点がありますね。
0299デフォルトの名無しさん
NGNG頭冷やさないといいgoto文を書けませんよ?
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNGgotoは確かに危険だが、
その危険なところと以下に折り合いを付けて進んでいけるかが
プログラマーの腕の見せ所だからね。
0302デフォルトの名無しさん
NGNG・・・
0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNGC++でgoto文を使う奴は厨房
Javaでgoto文を使う奴は神
0305デフォルトの名無しさん
NGNG適度な使用は別に問題なかろ.
なにをそこまでムキになる.
goto == ダメ
と言ってる人達.
0306デフォルトの名無しさん
NGNG解釈実行のときとかswitchと組み合わせて使うかな。
0307デフォルトの名無しさん
NGNG>>276の言う「ひきずってる人たち」なのでは?
0308デフォルトの名無しさん
NGNG普通の言語のGOTOは関数内しかジャンプできない。
GOTO使った方が局所的に読みやすくなるなら使った方が絶対いい。
規模が大きくなったからって問題になることはない。
0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNG例外とかなら使うけど。
0311デフォルトの名無しさん
NGNG・continue, break
・関数の途中でreturn
とかは恐れなく使っちゃうな。
これらもgotoの特殊形だよね。
…て、最近関数の途中でreturnを使うのはもうちょっと考え直そうと思ってるけど。
0312デフォルトの名無しさん
NGNG0313名無しさん@カラアゲうまうま
NGNGBASIC時代はgoto使わなきゃ無理だったような。
0314デフォルトの名無しさん
NGNG個人的には禿同
Cなんかじゃ使ってもよっぽどのことがない限り問題ないと思うんだが
もっとも、俺はgotoしないが
0315デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNGmain()
{
HOGE:
なんか;
goto HOGE;
}
0318デフォルトの名無しさん
NGNGただの無限ループじゃん。
0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNG同感です!!
0322デフォルトの名無しさん
NGNG0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNG0325デフォルトの名無しさん
NGNGOn Error GoTo ErrHandler
VBではよく使うよ
0326デフォルトの名無しさん
NGNGVBの Resume Nextと同じように
するには
全て例外が発生するメソッドに対して
try{
} catch except ignored{
}
try
except
end;
としなければいけない?
0327デフォルトの名無しさん
NGNG>Delで
ほう、かっこいい略語だな。君通でしょ?
通なら通らしく自分で解決されればどうですか?
0328デフォルトの名無しさん
NGNG何か嫌なことがあったのか?
便秘か?
0329デフォルトの名無しさん
NGNG0330デフォルトの名無しさん
NGNG思いません。
0331デフォルトの名無しさん
NGNG0332スレを読まずにカキコ
NGNGbool flagとかやるのがキモイときに使うよね
0333デフォルトの名無しさん
NGNGそう、全て例外を吐くメソッドに
対してトラップしなければ
いけない。
0334デフォルトの名無しさん
NGNGなかなかスマートだとおもうんだけどどうよ?
switch(){
case a:
・・・
goto DEFAULT;
case b:
・・・
break;
・
・
default:
DEFAULT:
・・・
}
0335デフォルトの名無しさん
NGNG探せばけっこうあるよ
0336デフォルトの名無しさん
NGNGいまちょっと調べてみたら、なんとC#の機能じゃねーか。
MSめ、漏れの専売特許をパクリやがったな。
0337デフォルトの名無しさん
NGNG意味がわからないのですが
0338デフォルトの名無しさん
NGNGどこがスマートだよ
default:に飛べればいいのに
0339デフォルトの名無しさん
NGNGあれぐらい普通だったりします?
0340デフォルトの名無しさん
NGNG0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNGあまり普通とはいえない。いや、かなり。
0343デフォルトの名無しさん
NGNG見てみた。
…狂ってるとしか思えない。
0344デフォルトの名無しさん
NGNG・Javaに gotoは無い
・任意のブロックを抜けるラベル付きbrakeはある
・それ、やってる事 goto じゃん。
・Javaは、任意のブロックを抜ける場合にだけgotoが使える
という認識でよろしい?
キーワード 'goto' に反応して動作の本質を見ないとこの手の議論は無意味だと思うんだが
0345デフォルトの名無しさん
NGNG> ・それ、やってる事 goto じゃん。
違う。ラベルつきbreakで任意の所に飛べるわけじゃない。
0346デフォルトの名無しさん
NGNGいや、"goto ⊂ javaのbrake" と捉えてくれ
Javaでも、機能を制限したgotoは許容してるという事が言いたかったんだ。
javaのラベル付きbrakeと同じ使い方してるgotoにケチはつけれないだろうと。
0347brake
NGNG0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNGgoto ⊃ javaのbreak だろ。gotoの方が無駄に出来ること多いんだから。
0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNG> brakeってわざとだよね?
「ブラケ」と読みます。ブラから腋毛がはみ出ることです。 w
0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNG(脱力藁)
0354デフォルトの名無しさん
NGNG0355デフォルトの名無しさん
NGNG0356デフォルトの名無しさん
NGNGgoto &NAME
実行中の関数(サブルーチン)を、別の関数と*置き換える*
使った事無いけどね
0357ゴト師 ◆Thg6L..eUI
NGNG0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG条件分岐 -> if
ループ制御 -> for, while
モジュール呼び出し(?) -> 関数
これ以外で必要な局面は
ブロックを抜ける
エラー制御(上と同じ?)
後何に使うんだろ、厨でスマソ
0360デフォルトの名無しさん
NGNGブロック外からブロック内へのジャンプ
入れ子でない構造
0361デフォルトの名無しさん
NGNGBASICとかの名残でしょ。
条件分岐が複雑なときはgoto使った方がコードがすっきりすることもあるよね。
0362奥さん音速のHG名無しさん
NGNGあとで仕様変更などで直す奴が馬鹿だったら
真似して乱用する可能性が怖いんだよ〜
0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNG0365デフォルトの名無しさん
NGNGラベルが"p001"とかなるとマズー
0367デフォルトの名無しさん
NGNG> 正直なところ goto 使わずにきれいなコード書くのも楽しいもの。
こういう奴に限って
何時間もかかった挙句、メンテ不可な腐れコードをひりだしたがるので
正しいgoto文の使い方の教育はすべき。
0368デフォルトの名無しさん
NGNG0369C++厨
NGNG俺はCPUのBranch命令をインラインアセンブラで使う。
__asm {
mov eax, 0xffffffff
jmp eax
}
0370デフォルトの名無しさん
NGNG失礼な。何時間もかかるようなものはそもそも作らない。
もちろんメンテもしない。
0372デフォルトの名無しさん
NGNG面白くない、カエレ
0373デフォルトの名無しさん
NGNG男は黙って eipに書き込んどけ!
0374デフォルトの名無しさん
NGNGプロジェクト立ち上げるときにgoto文使われるのは勘弁して欲しいぞ。
0375デフォルトの名無しさん
NGNG人間かどうかがわかる。
0376デフォルトの名無しさん
NGNGふつーにまともに使ってた奴がいたけどふつーそんなもんだろ。
0377デフォルトの名無しさん
NGNGうまかった。
俺にはgotoを使うのは無理だと思った。
0378IP記録実験
NGNGhttp://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNGんなことない。むしろ串とかに一番興味あるのは厨房だよ。
0381デフォルトの名無しさん
NGNGうちのDQN社長は「イープ」
ちなみに「www」は「わわわ」
0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNG犯行予告する馬鹿や訴訟の減少に役立つのはいいかもしれん。つーかそういうのは俺はどうでもいいや。
興味ないもんね。
犯罪ギリギリの危ない系の情報交換ができなくなるのが俺には一番の損失だな。
0385デフォルトの名無しさん
NGNG0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0388デフォルトの名無しさん
NGNG迂闊にもワラタ
0389デフォルトの名無しさん
NGNGhttp://www.yahoo.co.jp/
0390デフォルトの名無しさん
NGNG>>33
0391デフォルトの名無しさん
NGNGいきなり立場変えるなよ・・・・。
はぁ。IZUMIってやつみたいだな。
0392デフォルトの名無しさん
NGNG見てきた。スゲーな。っつーか笑った。
書き込み欄がなかったり、左にスクロールしてたりして。
0393デフォルトの名無しさん
NGNG逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。
二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm
ようするに上告しても今の制度では100%無駄。
これで完全終了ってことか。
0394デフォルトの名無しさん
NGNGトップ扱いなんて寒すぎ
0395デフォルトの名無しさん
NGNG私もそう思ってた。
IPと、日付と時間で、IDが出るんじゃないの?
0396デフォルトの名無しさん
NGNGログインができない?
0397デフォルトの名無しさん
NGNGというわけで、掲示板の最下部のバージョン表示が20030107a以降のやつは、
ログとり実験やってますです。
今のところ、qb,live2,tmpですね
722 名前:心得をよく読みましょう 投稿日:03/01/09 15:43 ID:b1s0ydcx
qb : 2ch批判要望 削除議論 削除要請 削除整理
live2 : ニュース速報
tmp : ニュース極東 ちくり裏事情 政治思想 Download
厨房! 人権問題 バカニュース 薬・違法
ゴーマニズム ロビー 最悪 少年犯罪
違反の潰し方 ペット苦手 なんでもあり 学歴
IP記録実験PART2
http://qb.2ch.net/test/read.cgi/accuse/1042020193/
0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNGIP抜き取りって、不正アクセスにならないのか?
0400デフォルトの名無しさん
NGNG0401デフォルトの名無しさん
NGNG飽きるまで書きたらば、死ぬるでもあらうかとおもふ。
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0404デフォルトの名無しさん
NGNG残ったのは串を刺せる厨房という罠。
0405デフォルトの名無しさん
NGNG0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNG0408デフォルトの名無しさん
NGNG問題起これば即対処してくれるし管理も削除も早いしな
まぁそういうこった
0409デフォルトの名無しさん
NGNG0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNG0412デフォルトの名無しさん
NGNG日本国憲法第12章104条「国民クイズは国権の最高機関であり、その決定は
国権の最高意思最高法規として、行政、立法、司法、その他あらゆるものに絶対、
無制限に優先する」
笑えるところなのかわからんが34話にはムネオたんか?と思われる方もカメオしてる。
0413デフォルトの名無しさん
NGNG今回は「裁判に持ち込まれたら負ける」と言う事実が残っただけか。
でも犯行予告とかはわからんな〜
「2chで祭られたので犯人がそこで満足して犯行に及ばなかった」ケースだって
過去にも十分考えられそうだし。
名誉毀損も件の医者は書き込みがあって500万で訴えて400万ゲットでしょ…
はたして(今後の仕事もふまえて)ペイできたのやら。
「匿名の書き込みで権利を侵害された者が、発言者を特定して責任を追及することは
不可能。掲示板の管理者を追求するしかなく、真実性などの立証責任は管理者にある」
っていっても管理者だってそんなことはできないって。
いっそ今までの金のかからない運営でその分浮いた金を貯金しておいた方がいいと思った。
0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNG0420デフォルトの名無しさん
NGNG0421山崎渉
NGNG0423山崎渉
NGNG0424デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNGつーかそれ以上かかるバカは破門
0426147
NGNGgoto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNG20 goto 10
こういうレベルは却下
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNGここまで同意
>void main(void)は厨房
intを平気で使うバカに救いなし
0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNG撤回
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNG言語としてある以上どうしようもないだろ。
0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNGお前ら全員破門! もう寝る(ぷんぷん
0438山崎渉
NGNG0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNG0441デフォルトの名無しさん
NGNG0442デフォルトの名無しさん
NGNGCは例外処理無いからしょうがない。
0443デフォルトの名無しさん
NGNG胴衣。
Linuxカーネルのgotoの使い方は正しいと思う。
あれをgoto無しで書いたら異常系の処理が分散して見づらいソースが出来上がる(藁
0444デフォルトの名無しさん
NGNG0445デフォルトの名無しさん
NGNG0446デフォルトの名無しさん
NGNGlabel:
/* ... */
}
とかか?
0447はぁ???
NGNGgoto.bat
-----------
goto goto
:goto
goto goto
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNG再起呼び出しとgotoなしでやろうとしたら、うまく行かなくて結局goto使いまくりの
スパゲッチーになってしもうた。
んで、それを等価変形してgotoを排除したら、自分で読んでもどうして動いてるのか
よく分からん神のコードになったw
0450デフォルトの名無しさん
NGNG0451デフォルトの名無しさん
NGNG>らな金属板にゼロから書き込んでいく。アプリケーションプログラミ
>ングなど、システムプログラミングのできない弱虫のすることだ。
0452デフォルトの名無しさん
NGNGJ2SEがある。goto文はキーワードとして存在するが使用禁止。
さらにポインタ演算も使用禁止にしているところが素晴らしい。
0453デフォルトの名無しさん
NGNG110 ウンコする
120 ウンコ食う
130 goto 100
0454デフォルトの名無しさん
NGNG奇妙な言語だな
0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNG長い行数をif{}でくくりたくない時は、
即goto使うでしょ。(プロなら尚更)
0457デフォルトの名無しさん
NGNG>真のプログラマは "COPY CON PROGRAM.EXE" を使う
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGなるべく使うようにしてます。
0460山崎渉
NGNG0461山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0462デフォルトの名無しさん
NGNGなるべく捕まらないようにしてます。
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNG0465名前は開発中のものです。
NGNG保守する人たちのことも考えてやめてくらさい
0466デフォルトの名無しさん
NGNGコメントアウトされる大量のコード
#endif
0467デフォルトの名無しさん
NGNGぐちゃぐちゃになったソース、際限のないイリーガルなデータによる、プログラム
動作異常動に悩まされていた。
また、イリーガルなデータを処理するためには大量の例外処理が必要になる
が、最後には本体のソースが例外処理にうもれてかき消されてしまうほどの
量になる。
この問題に対処するためにgoto投入を決定した。
バグもメモリーリークも減った。ソースはシンプルでまろやかになった。
そして、コンパイラの中でハーモニーを奏でだした。
0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNG内容は忘れたけど、n + 1/2 ループは goto が必要不可欠とかなんとか
0470デフォルトの名無しさん
NGNG昔流行ったアドベンチャーゲームブックだよな。
ソース読みながらドキドキしたい人にはお勧めかもしれませんが。
「このgotoのジャンプ先にはどんな処理が待っているのかな。。」
0471デフォルトの名無しさん
NGNG0472アシュル
NGNG0473デフォルトの名無しさん
NGNGワラタ
0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNGnew知ってからdeleteの存在を知るまでに3年間の期間があった。
おっと、ユーザは全て自分自身なので、オッケー!
0476デフォルトの名無しさん
NGNG#include <stdio.h>
int main()
{
int i;
printf("loop start\n");
for (i = 1; i <= 5; i++) {
switch (i) {
case 1:
printf("loop(1)\n");
break;
case 2:
printf("loop(2)\n");
break;
case 3:
printf("loop(3)\n");
break;
default:
printf("loop(>=4)\n");
break;
}
printf("loop[%d]\n", i);
}
printf("loop end\n");
return 0;
}
0477デフォルトの名無しさん
NGNGswitchの中からループを抜けたいってことだろう。
C使ったことないのか?
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNGああ、そういう意味か。
一応仕事で2年ほど使ってるけど全然思いもつかなかったYO。。。
そういうものだと思って使ってたし、必要に駆られたことなかった。。。
でも、実際そんなにぼこっと抜けたらわかりにくくないですか?
ifとswitch微妙に違うし。2年生の戯れ言ですが。
0480デフォルトの名無しさん
NGNGぽこっと抜けるべきところでちびちび抜けているほうがわかりにくいですね。
0481デフォルトの名無しさん
NGNGif文使え。
0482デフォルトの名無しさん
NGNG見た事無いな、誰か使ったことある?
0483デフォルトの名無しさん
NGNGpascal使え。
0484デフォルトの名無しさん
NGNGhttp://homepage3.nifty.com/coco-nut/
0485山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0486山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0487デフォルトの名無しさん
NGNG0488山崎 渉
NGNG0489山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0490デフォルトの名無しさん
NGNG0491
NGNGmpegdec 0.2x -> 0.3x でのESのパース処理がべた書き + goto から
ステートマシンになって、字面上では非常に綺麗になってるんだけど、
ドキュメント無いと読みにくいコードになってしまっているなぁ。。
0492デフォルトの名無しさん
NGNG> 漏れわかりにくくならない範囲でなら goto 容認派。
その「範囲」の定義が人によって違うわけだが。
0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNG関数内ではgotoだな。
0496デフォルトの名無しさん
NGNG行動キャラの選択
行動コマンドの選択
使用アイテムの選択
使用対象の選択
交換アイテムの選択
行動する
の流れでユーザーにコマンドを入力させるが、forだと
キャンセルした時にひとつ戻るのが大変なので、gotoの世話になっている。
関数に分けてきれいに書ければよいのだけど。
0497デフォルトの名無しさん
NGNGgccはできる。
0498デフォルトの名無しさん
NGNG結構きついよ、AutoLispてので仕事たまにあるけど、gotoないから
さらにきついよ俺・・・むかーし読んだ本で
goto使わなければちょっとはマシな
プログラムになる。みたいなこと書いてあったな。
いいプログラマになるのは、まだまだ先のようだ(´・ω・`)
0499デフォルトの名無しさん
NGNGFORTRANでもできる。
割当て型GO TO文
0500デフォルトの名無しさん
NGNG俺今までgoto使ったことなんてないんだけどな(汗
0501498
NGNGGUI部分では俺もgotoなんて使ったことないよ。
土木計算ルーチンつくってみ、goto使いたくなるから。
3次元造成ソフトやら道路設計をgotoなしで作ってたら尊敬する。
0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNGbreak label;
}
があればgotoはいらん
0504デフォルトの名無しさん
NGNGアセンブルされた結果をみたらgotoと一緒じゃないか?
0505デフォルトの名無しさん
NGNGまあ、ぬるいだろうけど。
[ あやめ ]
ttp://f21.aaacafe.ne.jp/~shiki/
DOSバッチでやりすぎるとこうなるという悪例(爆)
あと、まあ。参考にgotoは、なんつーかここ読んでくれと…。
ttp://www.cmagazine.jp/src/kinjite/c/
0506デフォルトの名無しさん
NGNG| goto文」になっている場合です。
これはその上の pthrow() のことじゃないのかと(ry
0507デフォルトの名無しさん
NGNGC の構造体をがんがってクラスのように使う
渾身のコードも書いてるね。
0508デフォルトの名無しさん
NGNG上のページにはいけなかったが、下のページは面白い。
下のページで自分に当てはまったのは、gotoとは関係ないが、
引数が多い(30個位のもある)、変数の数をケチって共有する、
ひとつの関数の行数が多すぎる(300行のもある)、「入れ子」のレベルが深すぎる、
数値を直接コードに埋めるだった。人と組んだことが無いから自分が分かれば
良いけど、それでも修復、拡張が困難なのは同じ。
0509デフォルトの名無しさん
NGNG> 上のページ
すみません。上げた本人もつながらないです。原因不明。
記事上げた当日はつながっていたのですが翌日からなぜか接続不能です。
可能であれば復旧しますので一、二週間ほど時間ください。
> 下のページ
そんなあなたに。C Style Elementsを。英文+イタチ外ですが。
http://www.oualline.com/style/
余談。あまり役に立たないですがgotoといえばifによる
擬似switch〜caseもダメなgotoの使い方だと
思います(DOSバッチの場合)
たとえば、こういうのですね。
当然、プリプロセッサかませば意味が無いです。
:main
if not "%var%"=="exvar" goto 2
code1...
goto main
:2
if not ... goto 3
code2...
goto main
当然、メンテしにくいですね。よって、間にはさまず、素直に...
if ... goto label1
if ... goto label2
にしたほうがメンテしやすいです。
というわけで。つまらなすぎるので回線切って笑気ガス吸ってくる…あ、可燃物か。
0511.
NGNG:label_1
:label_2
:label_
だった。。。
0512デフォルトの名無しさん
NGNGおまたせしました。あやめ。復旧しました…。
全体がショボイのは、ご勘弁を…。
ttp://f7.aaacafe.ne.jp/~ruri/
最凶?のバッチプログラムをご賞味くださいませ…。
(Cで書きなおし計画しているけど...)
0513デフォルトの名無しさん
NGNGキャビネットファイルと言うのを始めて知った。
いろんなやり方が分かんない。
0514デフォルトの名無しさん
NGNGcabinet fileの展開でしたらeoが楽でいいです。
ttp://member.nifty.ne.jp/beambitious/
展開後、*.batは実行せずエディタで開いてお読みください。
xtr,bu,batcpなど色々必要なので、そのままでは実行できないです。
今回は、gotoを使ったソースの公開が目的でしたので
暇なときに動作に必要なツールの詳細はBBSにでも書いておきます。
0515デフォルトの名無しさん
NGNG> cabinet fileの展開でしたらeoが楽でいいです。
Windows以外で使えるのキボン。
0516デフォルトの名無しさん
NGNGLinux : ttp://www.kyz.uklinux.net/cabextract.php
DOS(extract.exe) : ttp://www.oldstuff.myagora.net/powerload/win9x.htm
Mac : 知りません;-;
といったところです。
0517デフォルトの名無しさん
NGNG> Linux : ttp://www.kyz.uklinux.net/cabextract.php
なんかバグってるようで展開できなかったが、
cygwinにもってってextract.exeを使ったらできた。
感想: ……。
0518デフォルトの名無しさん
NGNG0519笑む獅子 ◆uBIhBQyqV6
NGNG呼んだ?
0520デフォルトの名無しさん
NGNG普通に便利だからな。
とりあえず#ifdefで場合わけしておいて、
本仕様に含まれるまではこのままだな。
0521デフォルトの名無しさん
NGNG0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNG0524デフォルトの名無しさん
NGNG0525ごるごるもあ ◆753Z/RLFiY
NGNG理由もなく使うとプログラムが汚くなる。
0526デフォルトの名無しさん
NGNG表に出てくるようなところではほとんど使わないが。
0527デフォルトの名無しさん
NGNG「プログラマが必要だと思った思考を妨げない」とかなんとかいう
格言を持ち出して、
「本当のプロは、gotoが必要だと思ったときは使う。その判断は
ほとんど瞬時に行われ、きわめて自然である」
「gotoに関してははっきりしている。ifとgotoさえあれば何でも出来る。
どんな高度な制御構造もエミュレートできてしまうのである。gotoを
教えない言語教育は極めて粗雑であると言える」
てのを覚えてる。
0528デフォルトの名無しさん
NGNGあれはなぜかいつまでたってもContinueも実装されやしない(.netの
新バージョンで使えるらしいが)
しょうがないからNextの手前にラベルを置いてGoToするんだが、副作用と
しては「Continueは上に戻るんじゃなくて下に飛ぶ」というのが強制的に
理解できることだなw
breakはExit Forというのがあるが、あれも工夫して後ろにカウンタ変数名
つけられるようにしてくれれば多重ループ脱出もエレガントにできるし
ほしい機能だ。
あと昔QuickBASICにあったExit Ifとか、TurboBASICにあったExit Select
なんかがVBにはない。むやみな脱出構文は有害だと判断されたんだろうか。
だとしたら多重ループ脱出構文がないのも理解できるが。
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNG> gotoに関してははっきりしている。ifとgotoさえあれば何でも出来る。
> どんな高度な制御構造もエミュレートできてしまうのである。
そりゃそのとーりだな。実際そのエミュレートをコンパイラがやってるわけで。
アセンブラレベルじゃcmpとjmp系列だけだしな。(一応86系ってことでよろ)
おっとcallもあったか…、まあcallがjmpでエミュレートできるのは明らかだ。
だがまあそれじゃいくらなんでも人間様が分かりづらいんで、
ループ構文とかつくってわかりやすくしよーってことだな。
でもまあ、原点たるgoto(というかjmp)を教えないってのは、確かに粗雑っちゃ粗雑だよな。
0531デフォルトの名無しさん
NGNG複数の脱出口を持つ構造が、コードをわかりにくくするんだよな。
例えば、関数の途中でreturn、(例外的事象じゃないのに)例外のthrow、
for/whileループの途中でbreakなんてのが考えられるが、
(goto文を使ってないけど)これらのコードはメンテしにくい傾向にある。
goto文有害説を唱えたヒトも、元は構造について述べてたんじゃなかったっけ。
>>530
うん、jmp命令の構文糖という捉え方ができるといいねえ
字面でなく構造を意識することが重要。
0532デフォルトの名無しさん
NGNGあるC言語系の処理系に
TRY{
}CATCH(EXCEPTION){
}
があったのだが、ヘッダ読んだらsetjmp・longjumpのdefineマクロだった。
ドキュメントには例外キャッチしてもTRY句で確保したメモリは
自動的には開放されないからね(うろおぼえ)というような
ことが書いてあった。それに対するワークアラウンドは
ドキュメントにはなし。finary句があったかは覚えていない。
あのときは新人だったんで意味がわからなかったんだが。
「setjmpを恐れなく使う兵達のコード」を使わされていた
んだなと。
C++ならauto_ptrとやら使うトコロなんでしょうか。C++よー知らんけど。
もうその処理系に触る機会がないので
正直、今でも上記に対する解法がわからん。
恐れなく使う兵達よ、教えてくれよ。
0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNGそのマクロは
#define BEGIN {
#define END }
と同じぐらい邪悪だと思うが。
0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNG関数Aから関数Bにreturnする出口と関数Cにreturnする出口がある
という変なプログラムを指すことになる。
そんなのCとかでは作ろうと思っても作れない。
関数Aから関数Bにreturnするだけなら、途中でreturnしても
最後にreturnしても構造としては同じ。
途中でreturnって単なるガードによる場合分けがほとんどだろ。
戻っていく先がはっきりしているのに何が分からないんだ?
0537デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNGだからその「面手し難い」ってのを説明せよ、ってことじゃないの?
0539デフォルトの名無しさん
NGNG0540デフォルトの名無しさん
NGNGGO TO (101, 321, 234, 400, 555) NANAKO
0541デフォルトの名無しさん
NGNG・gotoはどんな風にでも使えるから分かりづらい使用法が氾濫して困る
・順接、反復、分岐で構造化プログラムは書ける。だからそれぞれ専用の
ステートメントを用意すればあとはgotoいらない。
という2説があったわけだろ。
ifとgotoしかない処理系でも、順接、反復、分岐のみの目的でgotoを
使えば、それは構造化プログラミングと言えるだろう。forとか
専用のステートメントを備えるのは構造化の十分条件であって必要
条件ではない。
ただそうは言っても、gotoはそれ以外の使い方もできるのは事実なわけで
経験地足りてない人は知らずにそんな使い方をしてしまうだろう。
そんなgotoは、意図するところが千差万別になるわけだから、まず
書いたやつの意図をコードから読み取らないといけない。
それが面手しがたいという現象だと、今考えた。抽象的だが。
0542デフォルトの名無しさん
NGNGうむ。少なくとも私は納得した。
「whileもforもcontinueもbreakも全部まとめてgotoで書けるけど、
全部gotoだとあとから見た人は、それがどの制御構造文を
意図したものか一見では分からないので考える必要がある」
こんな感じか?
それに生のgotoは現存する構造制御文であらわすことができない
使い方も可能だから、その可能性も含めて意図を探ろうとすると
確かに大変だな。
コードの意図がつかめない->コードの変更ができない->メンテできない
ってことだな。なるほど。
0543デフォルトの名無しさん
NGNGregister int x;/* メモリ save reg.*/
register int *p=(int*)0x8000;/* チェックするメモリのポインタ*/
register int wkr1=0x5555;/* ループ中レジスタに置く定数*/
register int wkr2=0xAAAA; register int wkr3=0xFFFF;
do01:di();
x = *p++;/* こわす前にsave*/
*--p = 0;
if( *p++ == 0 ) {/* 0000を書いて読む*/
*--p = wkr1;
if( *p++ == wkr1 ) {/* 5555を書いて読む*/
*--p = wkr2;
if( *p++ == wkr2 ) {/* AAAAを書いて読む*/
*--p = wkr3;
if( *p++ == wkr3 ) {/* FFFFを書いて読む*/
*--p = x;/* 壊したRAM復元*/
ei();
if( *p++ == x && /* 意味はwhile do01だがcではそういう書式がない*/
(uchar)((ushort)p>>8) != 0xF7 ) goto do01;
}
}
}
}
ei();
return( (uchar)((ushort)p>>8) - 0xF7 );
}
0544デフォルトの名無しさん
NGNG高速にRAMチェックするルーチン:実働品。普通書くように「比較して不一致なら後ろへ抜ける」
ように書くと余計なジャンプ命令が出て遅くなる。この形がASMで素直に書いたのに一番近い。
「メモリに書いて読む」所は、最適化されるとメモリを読まずにレジスタを判定するコードが出る。
ライトとリードの間にダミーコールをするとメモリを読むようになるが、ループ回数が多いので性能上
好ましくない。百万回の試行錯誤の末、ポインタを後++、先--する手法に落ち着いた。
後ろへ抜けるにしろ前へ抜けるにしろgoto文無しだったらこういうのはどう書けばいい?
0545デフォルトの名無しさん
NGNGvolatileが使えないの?
0546デフォルトの名無しさん
NGNGお前、volatile って知っているか?
0547デフォルトの名無しさん
NGNG「木を見て森を見ず」の典型例って感じだな。
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGオリジナルのアルゴリズムを書いたCコードと、
ターゲットCPU向けに最適化したアセンブラコードと、
それらをテストするコード
を用意するな。
こうしておけば、ターゲットCPUが変わっても、とりあえず動かすことができる。
あんましgotoとは関係ないと思うヨ。
0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNGgoto の方。
0552デフォルトの名無しさん
NGNG関数の入口と出口は1つにした方が良いって教わった
途中のreturnってダメぢゃん
0553デフォルトの名無しさん
NGNG関数の入り口を一つにするってどういうこと?
あと再帰関数とかはどうすんの?
0554544
NGNG「変数の属性」として書くが上のような文脈では*(volatile*)(--p)=0; とか書くことになる。
μチップ用のクロスコンパイラでは隅々までANSI並にサポートはされてないようだ。
@(R+)のほうが@(R)より遅いからASM程の速度は出せないが命令数でほぼ同等に
納まったのが上の書き方だったということ。スレタイの主旨からしたらgoto文の使用法に関する
議論でしょ。だからこういうケースはどういう書き方をするのがいいと思うか?と投げてみた。
それに対してミクロ的だとかASMで書けとかいうのはスレ違いでしょ。
0555デフォルトの名無しさん
NGNGvolatileは確かにコンパイラのバグが出やすい。
ただpをvolatile int *p;と定義すればたぶん++,--は不要になると思うが……
ところで本題のgotoについてだが、>>543はdo〜while()では駄目なのだろうか。
0556デフォルトの名無しさん
NGNG>関数の入口と出口は1つにした方が良いって教わった
理由までは教わってないんですか?
0557デフォルトの名無しさん
NGNG0558デフォルトの名無しさん
NGNG0559554
NGNGそれでダメだったので553の表現に至ったのです。チビ助チップのクロスコンパイラはそんなもん
>do〜while()では駄目なのだろうか
do whileで書くと「書いたメモリ比較して違ったら」のif文を全部 if( *p++ != xx )の表現で書く
ことになるでしょ。それが翻訳されると CMP Ri,@(Rj+) BEQ 次の実行文 BRA whileの外 という
機械語が出て、BNEwhileの外 という機械語が出なかったのですよ。 それでわざわざ反対に
書いて if( *p++ == xx )で書いてるのです。そうすればコンペアの後BNE whileの外 が出るから。
そのかわりwhileの条件が反対になるから、あ〜いうループ構造になったわけです。
あの書き方が「機械語が最も少ない」出方をするのは「百万回の試行錯誤」で確認済みなのです
0560デフォルトの名無しさん
NGNGどのコンパイラでも>>553のコードが最も早いコードを出力するとは限らないし。
0561デフォルトの名無しさん
NGNG>こういうのはどう書けばいい?
>>554
>そのコンパイラではvolatile書いても最適化された。
つまり、処理系の動作が全く想定できない状態であるのを
承知していながら、他人にどう書けばいいか尋ねたわけだ。
・・・すげー根性してるな。
0562デフォルトの名無しさん
NGNGまあ、普通に答えるならdo { } while();にして、!=でbreak;にするのが
妥当な構造じゃないかなと思います。
でも、「そのコードに対して特定のコンパイラが低速なコードを吐き、
なおかつやんごとなき理由で高速化しなければならず、
またおなじくやんごとなき理由でアセンブラの使用も認められなかった」
からgotoを使って実装した、というのであれば、それは正しいgoto文だろうし、
あなたの仕事は認められてしかるべきだし、私は認めるよ。
でも、その処理系・コンパイラの実装や挙動があなた以外にはわからない以上、
こういうのはどう書けばいいか? といわれたところで
我々は「do {} while();にすれば?」とくらいしか答えようがないです。
0563デフォルトの名無しさん
NGNGどうしても、適当にお茶濁そうと思ってしまうからなあ。。。
0564デフォルトの名無しさん
NGNGスタックオーバーフローさせます。
0565デフォルトの名無しさん
NGNGvolatileを使うならこうでは?
(volatile 型)(*p) == ????
0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNG「入り口はひとつ」の意味とは。BASICで書くぞ。
10 GOSUB *SHOWHELLO 'サブルーチンへ
20 END '終了
100 *SHOWHELLO 'サブルーチンの入り口
110 PRINT "Hello"
120 PRINT "World."
130 RETURN 'メインルーチンへ
このとき、 "GOSUB 120" と書けてしまうが、書いてはいけないということ。
CやJavaでは意識せずともなんとなく守られている原則だ。
0568デフォルトの名無しさん
NGNG「出口は一つ」の意味とは。>>567のリストを改造して、
130 INPUT "もう一度やりますか(Y/N)"; A$ '入力
140 IF A$ = "Y" THEN RETURN 10 ELSE RETURN 20
昔はこんな風に書けてしまったのだ。これはいけないということ。
「途中のReturn」というのは、その飛び先(戻り先)が同じ行になるので
この例とは意味が違うのだ。
この原則は今のCとかでも、do whileから複数箇所にgotoすれば破れるね。
0569デフォルトの名無しさん
NGNG飛び込んだりすれば違反できるか。つまり入り口出口というのは
関数に限った話ではないということれす。
0570デフォルトの名無しさん
NGNGwhile(...) {
for(..) {
switch (...) {
case hoge:
...
break; // switchをbreak
case foo:
...
break break; // forをbreak
case bar:
...
break break break; // whileをbreak
}
}
}
これじゃだめか?
0571デフォルトの名無しさん
NGNG0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNGvoid test()
{
p = 0;
while(!p) ;
}
こんなのがwhiel(1)に変形されたからって
volatileを無視されたとか寝言ほざいてるアフォは
適性なさすぎ白痴としか言いようがない
0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNGΛ_Λ \\
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ >>574
(_フ彡 /
0576デフォルトの名無しさん
NGNGまだ実行してもいないのに!
0577デフォルトの名無しさん
NGNGbreak break break;
は
break(3);
でも内容的に同じだよな
これ算術gotoぽくね?
0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNGそんな数字指定の構文認めたくない
break( 1 + (i==j) );
とかいやなプログラムができうるから
多段ブレークはめったに使わないし
超多段ブレークもほぼありえないから
long longみたいな単純な構文がいい
0580デフォルトの名無しさん
NGNGならない処理系は確かにあるよ。
結構有名なUnix系のコンパイラでもね。
0581デフォルトの名無しさん
NGNG0582デフォルトの名無しさん
NGNG573が指摘してる「アフォ」が
何を勘違いしてるかわかるか?
0583デフォルトの名無しさん
NGNGというかswitch使ってる場合は暗黙にgotoしてるんでしょ?
0584デフォルトの名無しさん
NGNG意味わからん
else if はgotoと同じだと言いたいのか?
0585デフォルトの名無しさん
NGNGなんでやねん
以下の様に関数化するまでもない共通のロジックの実行に使う。
実際にはラベル付きのロジックはcatch中に仕込んだりするけどな。
if (hoge){
func();
} else if(bar>0) {
func2();
} else if(bar<=0) {
goto hogecode;
} else {
hogecode:
func3();
//実際はもっと処理が多い
}
0586デフォルトの名無しさん
NGNG言いたげなことはわかるが
そのことと583→584の流れとの繋がりがわからん
0587デフォルトの名無しさん
NGNG1行目と2行目は無関係。わかりにくかった点は謝る。
この通りだ、許してくれ。
0588デフォルトの名無しさん
NGNGよぉーくみてみれ。
volatile int * p;
int * volatile p;
上記ふたつは別物だ。
>>573のプログラムが最適化かかってwhile(1)になるのは当たり前。
だってvolatile指定は「されてない」んだからな。
0589580
NGNG>>588
別に前の方の書き込みと関連して答えたんじゃない。
volatile指定した変数でも、正しく命令を出してくれない処理系は確かに存在する。
それは、C/C++の規格に完全準拠した処理系が存在しないのと同じ道理。
# 要は処理系のバグというか、ベンダのへたれ具合というか。
ただし、レジスタ上だけで処理するのではなくて、確実にload/storeを吐くと
いうところまではやってくれるようだが。
0590デフォルトの名無しさん
NGNGおまえ、それ規格票読んでねえじゃん
volatileの効果は何だって書いてあるか見てからにしろよ
ベンダにヘタレとか言うのは
思い込みで怒りまくってるクレーマーと変わらんぞそれじゃ
0591デフォルトの名無しさん
NGNG悪いが、あんたが言う規格上のvolatileの効果を説明してくれ。
0592デフォルトの名無しさん
NGNG順番の逆転は認めてやらない
0593デフォルトの名無しさん
NGNGすまんが、何と何の順番の逆転かを教えてくれ。
ついでに、どこから見える逆転かも。
0594デフォルトの名無しさん
NGNGだからクレーマーだって言うんだよ
0595デフォルトの名無しさん
NGNG聞いてるんだけど。
そっちこそ、説明できないの?ププ
0596デフォルトの名無しさん
NGNG指定するんじゃないの?<volatile
0597デフォルトの名無しさん
NGNGネット? 規格票で確認しろつってんだよ
必須アイテム持ってない勇者は先へ進めねえの
ほら、アドレスやるからさっさと買って来い
www.jsa.or.jp
0598デフォルトの名無しさん
NGNGお前が抜粋してこればいいだけじゃねーの?w
gotoと関係ないから他所でやれ
0599デフォルトの名無しさん
NGNG乞食が物乞いするときは、それなりの言葉遣いってものを憶えてきなw
0600デフォルトの名無しさん
NGNG↓じゃあ次の話題行ってみよう
0601デフォルトの名無しさん
NGNGその理解は間違いの元のようだねえー
0602デフォルトの名無しさん
NGNG仕様書読んでないのはてめーだ ぼけ
0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNGそもそも俺はvolatileの議論には参加してない別人だし
0606デフォルトの名無しさん
NGNGいいよ逃がしてあげる
0607デフォルトの名無しさん
NGNG0608デフォルトの名無しさん
NGNG0609デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNGそうか、おまえか
0611デフォルトの名無しさん
NGNG何で黙らないの?w
0612大域脱出
NGNGgoto 1;
}
0613デフォルトの名無しさん
NGNGこっちは逃がしてやった側で
そっちが白痴だから
0614デフォルトの名無しさん
NGNG惜しかったな
そのコードにはバグがあったようだ
0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNG0617デフォルトの名無しさん
NGNG夜も眠れん
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNG次の話題にいこーぜ
0622デフォルトの名無しさん
NGNG0623デフォルトの名無しさん
NGNGgotoを使ったコンソールノベルを製作せよ
0624デフォルトの名無しさん
NGNG年金払うだけ払って死んでくれるとはなかなかいいお人ですね。
0625デフォルトの名無しさん
NGNGみんなそうだよ
これからは
0626デフォルトの名無しさん
NGNGvoid main()
{
int a = 2;
int b = 5;
printf( "a=%d, b=%d\n", a, b );
switch( a % 2 ){
case 0:
if ( b % 2 == 0 )
printf( "A:偶数 B:偶数\n" );
else
{
printf("A:偶数 ");
case 1:
if ( b % 2 == 0 )
printf( "B:偶数\n" );
else
printf( "B:奇数\n" );
}
}
}
0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNGそりゃ、goto使ってるから。
0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNGvoid main()
{
int a = 2;
int b = 5;
printf( "a=%d, b=%d\n", a, b );
switch( a % 2 ){
case 0:
if ( b % 2 == 0 )
printf( "A:偶数 B:偶数\n" );
else
{
printf("A:偶数 ");
case 1:
if ( b % 2 == 0 )
printf( "B:偶数\n" );
else
printf( "B:奇数\n" );
}
}
}
0631デフォルトの名無しさん
NGNG何が言いてえんだよ!
0632デフォルトの名無しさん
NGNGというところが専門学校DQN臭い
0633デフォルトの名無しさん
NGNGコンパイル通るし、どうでもいいやん。古い処理系にこだわんなや。
0634デフォルトの名無しさん
NGNGそれがどーかしたんかよ脱税帝国の申し子さん
0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNGhttp://users.footprints.net/~kaz/cppvoidmain.html
0637デフォルトの名無しさん
NGNG>>634 の 「脱税帝国の申し子さん」 が
どうにも意味不明なんですが。
0638デフォルトの名無しさん
NGNG0639デフォルトの名無しさん
NGNG630が使ってる処理系を確認するのが先だろ
0640デフォルトの名無しさん
NGNG確実にload/storeしてるなら、volatileは正しく処理されてると思うけど。
それ以上に何を期待してるんだ?
0641デフォルトの名無しさん
NGNGおまえらの議論はvoid mainと同じ
必要情報を調べずにてきとーこいてるだけ
0642デフォルトの名無しさん
NGNG必要情報って?
0643デフォルトの名無しさん
NGNG本人は技術者気分に酔ってるところが何とも痛い
0644デフォルトの名無しさん
NGNG>>589 はきっとバグがある事に怒ってるんだよ!わがままだね。
まあ volatile 書いてもエラーにならずに無視されるコンパイラってのは
なんかありそうだな。
0645デフォルトの名無しさん
NGNGバグかどうかちゃんと確認もせずに
勝手な先入観でぷんすか怒る痛ーい香具師
0646デフォルトの名無しさん
NGNG0647デフォルトの名無しさん
NGNG0648デフォルトの名無しさん
NGNG0649デフォルトの名無しさん
NGNG0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNG0652デフォルトの名無しさん
NGNGomae.utsusareru(kanojo, byoki);
0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNGstack overflow
0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNG首を吊って死ぬ。
0658デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNG0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNG0662名無しさん@そうだ選挙に行こう
NGNG引数が複数なんだから返り値も複数書けてもいいじゃん
int int char f(void)
{
...
return 5, 0, 'a';
}
みたいな感じで
0663名無しさん@そうだ選挙に行こう
NGNG0664名無しさん@そうだ選挙に行こう
NGNGperlみたいにリストを返せばいいんでない?
0665名無しさん@そうだ選挙に行こう
NGNGできるよ ぼけ
struct bitch { int clit, puss, ass; };
struct bitch f(void)
{
struct bitch airhead = { 5, 0, 'a' };
return airhead;
}
0666名無しさん@そうだ選挙に行こう
NGNGひとつの関数のためだけにいちいち構造体を定義するのが面倒だから、
>>662 みたいな書式で多値が返せるようなsyntax sugerがあると嬉しいってことだろう。
内部の実装は無名structの定義でも別に構わないし。
まぁ、もともとCってのはポインタさえあればなんでもできる! って面があるから
結局のところ所謂参照渡しで多値を返せば十分だろ、ってところなんだろうけどな。
0667名無しさん@そうだ選挙に行こう
NGNG俺だったら例え1つの関数でしか使わなくても、ちゃんと意味づけが確立している集合は宣言する
0668名無しさん@そうだ選挙に行こう
NGNGあんたはえらいっ
0669名無しさん@そうだ選挙に行こう
NGNG関数名の後に空白入れろ ぼけ
0670名無しさん@そうだ選挙に行こう
NGNGこんな因縁の付け方初めて見た ぼけ
0671名無しさん@そうだ選挙に行こう
NGNG0672デフォルトの名無しさん
NGNGプゲラの世界の奴だな
0673デフォルトの名無しさん
NGNG複数の人が入り混じってやるプロジェクトでgoto使うやつは
かなりいやだ
0674デフォルトの名無しさん
NGNG0675デフォルトの名無しさん
NGNG0676デフォルトの名無しさん
NGNGってか、格好良く言うと
C言語風アセンブラキター?
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNGまぁ、簡易言語だからそれでもいいんだろうけど。
0679デフォルトの名無しさん
NGNG(・∀・)イイネ!!
0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNGもっと積極的に、かまーんでいいじゃん。
プログラムの中で挑発的に何度も。
ComeOn
ComeOn
イベント的には、かみーん。
Coming
Coming
0682デフォルトの名無しさん
NGNGjumpやbranchじゃないの?
0683デフォルトの名無しさん
NGNG誰もそんな事話題にしてませんが、チエちゃん(チエ遅れ)ですか?
0684デフォルトの名無しさん
NGNG実行される段階じゃただのスパゲテーマシン語に変わり無いってこったな
いちいちソースの見た目なんぞ考えるだけ無駄
0685デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNG0687デフォルトの名無しさん
NGNGgotoの部分にラベル、gotoのラベル名の部分にcomefromを書くのだろう、たぶん。
0688デフォルトの名無しさん
NGNGCOME FROMの使い方
ttp://www.fortran.com/fortran/come_from.html
ttp://c2.com/cgi/wiki?ComeFrom
0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNGトモダチならアタリマエー
0692r
NGNG// なんか処理
goto bar::hoge;
// なんか処理
}
void bar() {
hoge: came goto_source;
if( goto_source == foo ) {
//なんか処理
} else {
// なんか処理
}
}
このくらい出来てもいい。
0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNGむしろそーゆーことは意識しちゃいけないんだよ (とくいとくい
0695デフォルトの名無しさん
NGNG実行されることはないと思うが・・・
0697デフォルトの名無しさん
NGNGの中から goto で帰るんだよ、きっと
0699デフォルトの名無しさん
NGNGそっからまともに議論できないアフォばっかりの釣堀だなw
0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNGアンチも逃げ出してもう話すことなんて何もないからね。
0702デフォルトの名無しさん
NGNG>>662
に対して
そんな構築するヤツはダメだ
というレスがないのを見て
このスレはダメだと思った
さようなら
0703デフォルトの名無しさん
NGNGこちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
結構まともな議論だと俺は考える
0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNGいまさらCになくて他言語にある機能をクレクレいっても意味ないし。
0706デフォルトの名無しさん
NGNG> multiったって結局はひとつのarray返してるだけだろ
ちがう
0707デフォルトの名無しさん
NGNGくだらねー事にこだわるほうがアフォ
0708デフォルトの名無しさん
NGNGお化けは見えないから怖い, ボンクラは goto の弊害が見えていないからこそ疑心暗鬼に怯えまくる
0709デフォルトの名無しさん
NGNG40行以内ならなおよし。
0710デフォルトの名無しさん
NGNG分岐のない直線的な文章をよくそこまで読みにくく書けるもんだ
0711デフォルトの名無しさん
NGNGたしかにこういう馬鹿どもにはgoto禁止しとくに限る。foolproofの意味で。
gotoを忌避する理由がわからないのは構造化の意味がわかってないから。
構造化ってのは、「人間はパターン認識の動物だから、ぱっと見て
パターン認識ができるような書き方をしましょう」ってこと。
スパゲティーってのはもともとそういうパターン認識不可能な様を表現する
言葉だったのに。
gotoを乱用するとパターン認識不能なコードになりやすいのは確かだが、
これは十分条件ってわけじゃない。
パターンの認識性を破壊しないような使い方なら別に使ったって何の問題もない。
意味のある処理ブロックの先頭にgotoで飛んだって、
コードの可読性は失われないよ。
0712デフォルトの名無しさん
NGNGだったら goto を使うパターンは昔からあるな
それでパターン認識できないケースが問題視されたわけだが
なぜ順次・選択・反復をパターンの基本に選ぶのかの説明が見あたらない
これでは結局、いつもの堂々巡りの典型でしかない
0713デフォルトの名無しさん
NGNG詳細希望
0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNG0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNG0719デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=cache:7i0j-hwTMCEJ:pc.2ch.net/test/read.cgi/prog/1072018444/633-+MS%E3%81%AFgoto%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%8B%E3%82%93%E3%81%A0%E3%82%8D%E3%81%86%E3%81%8B%EF%BC%9F&hl=ja
>>789
0720デフォルトの名無しさん
NGNG>>713 ○
0721デフォルトの名無しさん
NGNGGOTOはおろかIFやCASE文さえも排除の対象になるのでしょうかね?
0722デフォルトの名無しさん
NGNGそれはそれで面白いと思う。
0723デフォルトの名無しさん
NGNGProlog の「全部述語(というわけじゃないけど)」なパラダイムなら、
そもそも IF が分岐の意味を持っていない罠
アセンブリレベルならもちろんあるが、それは問題外
0724デフォルトの名無しさん
NGNGなぜ問題外?
0725デフォルトの名無しさん
NGNG構造化理論もその話だろうし。
ヒューマンインターフェイスという表現は変か…
0726デフォルトの名無しさん
NGNGアドレスジャンプのないマシン語。
プログラムカウンタを工夫すればいいのか?
0727デフォルトの名無しさん
NGNGは? もしかして break のことか?? おいおい・・・
0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNGWinFS
0730デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNGforとかifブロックとかたぶんその辺。
0732デフォルトの名無しさん
NGNGあれ、マジ「おいおい」だったか?
なんで goto レスが前提に出てくるんだよ
結果論にすぎないよ、それは
goto と同じ理由で否定されるべきものを挙げられるか?
break や longjmp みたいに単にスペルをジーオーティーオーでなくしただけってのを除いてな
上のほうで言ってる奴いたけど C の break なら必要悪ではなく構造化の基本として使うのもあるよな
コンパイル結果ではなく直接書いてるアセンブリの分岐命令だって
構造化の方針に反するものと基本として使うのとある
そのへん、どんな基準で見てるのかなあ・・・
0733デフォルトの名無しさん
NGNG0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNG他のマシンの他のプログラムの中に
gotoすることができるんですか!?
0736デフォルトの名無しさん
NGNG0737goto賛歌
NGNG保守できなくなってもかまわない
明日があるさ
0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNG二番煎じで面白みがないが、
こうすれば(一応)ネストできる。
#define EXCEPTION_INFO exception
#define throws(T) T EXCEPTION_INFO
#define throw(e,v) EXCEPTION_INFO = v; goto e
#define try if(1)
#define catch(e) if(0) e:
#define null 0
int main( void ) {
throws(char*);
char * pointer = null;
try {
try {
if( pointer == null ) {
throw(NullPointerException,"ぬるぽ");
}
throw(Exception,"マンドクセ");
} catch( NullPointerException ) {
printf("%s\n",EXCEPTION_INFO);
throw(Exception,"ガッ");
}
} catch(Exception) {
printf("%s\n",EXCEPTION_INFO);
}
return 0;
}
0740デフォルトの名無しさん
NGNG正直アホみたいだ。
0741デフォルトの名無しさん
NGNG0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNGusr/sys/ken/slp.c
~~~
sched()
{
~~~
loop:
spl6();
n = -1;
for(rp = &proc[0]; rp < &proc[NPROC]; rp++)
if(rp->p_stat==SRUN && (rp->p_flag&SLOAD)==0 &&
rp->p_time > n) {
p1 = rp;
n = rp->p_time;
}
if(n == -1) {
runout++;
sleep(&runout, PSWP);
goto loop;
}
/*
* see if there is core for that process
*/
spl0();
0744デフォルトの名無しさん
NGNG代わりに用意されてる制御構造が貧弱なのばかりだと、
「時々」苦しいと思う。
というわけで末尾再帰マンセー
まだ勉強中でよくわからんが、継続とやらも何やら素晴らしげ。
0745デフォルトの名無しさん
NGNG再帰は、よっぽどわざとらしいことをしない限り
基本的には goto とは異質なもので、
SPの原則には反しない
0746デフォルトの名無しさん
05/02/08 14:15:520747デフォルトの名無しさん
05/02/08 14:45:39letsgoto を使いましょう
0748デフォルトの名無しさん
05/02/08 23:32:160749デフォルトの名無しさん
05/02/08 23:41:320750デフォルトの名無しさん
05/02/09 02:17:04納期直前のデスマーチで、ポインタ崇拝プログラマが、「何でこんな動作をするのか分かりません」といったのが、印象に残っている。
(結局そのプログラマが、ただのヘタレだったわけで、上手に使えば便利なポインタに罪を擦り付けるわけじゃないが。)
0751デフォルトの名無しさん
05/02/09 03:24:39>>38
> goto文を使うと便利なのは、
> 関数の頭でクリティカルセクションに入るやつかな。
>
> 関数を2段で組むより、
>
> end:
> leaveCriticalSection();
> return;
> }
>
> とやっておくと便利。
> 今更そんなプログラムをC++で組む程暇な奴がいるとは思わないけど。
ごめん、俺、この手法 C++ で愛用してるんだけど、
C++ の手法としてはどんなのが普通なの?
try〜catch とか?(←ちなみにこれ使ったことない)
0752デフォルトの名無しさん
05/02/09 08:25:10try節のなかでreturnしてもいいから気楽だぞ。
0753デフォルトの名無しさん
05/02/09 08:31:07コンストラクタでクリティカルセクションに入り、
デストラクタでクリティカルセクションから出るクラスをつくり
そいつを自動変数として確保するのが普通。
0754751
05/02/09 15:17:14でもたった1つの関数のためにクラスを作るのはなんだかイヤンです。
汎用性のあるクラスなら進んで作るけど。
goto残ってくれていてありがとう。
Java は finally 使えるけど goto が使えない…
0755デフォルトの名無しさん
05/02/09 15:46:08再利用できそうな雰囲気を醸し出せる
0756デフォルトの名無しさん
05/02/09 20:06:550757デフォルトの名無しさん
05/02/09 22:19:33>>753の方法はC++ではとても一般的&安全&便利な方法だよ
ぶっちゃけ君C++やめたほうが良いと思うよ
0758デフォルトの名無しさん
05/02/09 23:06:23ムカー
それぞれの良いとこ取りでいいですやん。
そういう極論に持っていくならこのスレの意義もなくなるだろ。
0759デフォルトの名無しさん
05/02/10 00:28:160760デフォルトの名無しさん
05/02/10 00:57:56たとえばwindowsなら
class AutoMutex {
HANDLE h_;
public:
AutoMutex( HANDLE h ) : h_( h ) {
WaitForSingleObject( h_, INFINITE );
}
~AutoMutex() {
ReleaseMutex( h_ );
}
};
とかって感じのコードを書いておけば、
AutoMutexは使い回しが効くかな。
こんな風に使う。
static HANDLE h = CreateMutex( ... );
void foo() {
AutoMutex lock( h );
// なんか処理
}
0761デフォルトの名無しさん
05/02/10 13:12:17そしてReleaseMutexをテンプレート引数にするとますます再利用できそうな雰囲気にはなるw
0762デフォルトの名無しさん
05/03/16 17:04:40たずねてきたら育ててあげてね。
0763デフォルトの名無しさん
05/03/16 18:41:23使えるところではgoto必ず使うよ。
0764デフォルトの名無しさん
05/03/16 18:48:580765デフォルトの名無しさん
05/03/16 18:51:38性格にはラベルジャンプだろ。
Javaはgotoないよ。コンパイルエラー専用の予約語。
0766デフォルトの名無しさん
05/03/16 18:53:370767デフォルトの名無しさん
05/03/16 18:53:460768デフォルトの名無しさん
05/03/16 18:55:28Java最高
0769デフォルトの名無しさん
05/03/16 19:07:33一般的とはいえないだろ。切り出せるのはMutexなんかの汎用的なコードだけだろ。
lambdaを渡せるわけでもないし。
歪んだC++の苦し紛れの解決策を一般的&安全&便利なんて言い張るのは滑稽だな。
0770デフォルトの名無しさん
05/03/16 19:43:35意図を完全に表現できない意味でもC++のautoデストラクタはあんま
良い仕様ではないね。小手先テクがそのまま言語仕様化したって感じ。
WindowsのSEHでいう__finallyがデストラクタの巻き戻しと同じなんだけど、
(というかVCのC++例外機構はSEH使ってる)
こいつはC++でタブーとされているlongjmpに対しても巻きもどし保障が
あるという優れもの。
やっぱC++にもfinally欲しいねえ。
0771デフォルトの名無しさん
05/03/16 20:50:54プ
0772デフォルトの名無しさん
05/03/16 20:52:46それも2002年かよ。
0773デフォルトの名無しさん
05/03/17 02:09:150774デフォルトの名無しさん
05/03/18 08:13:21本物のプログラマは2chやってる時に腹痛を起こす
0775デフォルトの名無しさん
05/03/18 20:28:530776774
05/03/18 22:29:37わかりません。
0777デフォルトの名無しさん
05/03/20 16:58:20};
0778デフォルトの名無しさん
05/03/20 17:08:18template<typename T> struct AutoCloser {
AutoCloser(T& aObj) : mObj(aObj) {}
~AutoCloser() { mObj.Close(); }
private:
T& mObj;
};
要するに>755のアイデアなんだけど、こういう事よくやるよね?
あと AutoReleaser とか AutoFreer とか AutoDeleter とか。
あと、全部、AbstractAutoDestructor クラスを派生してて
ResourceManager が管理してたりとか。
# SymbianOS だと CleanupStack だね
0779デフォルトの名無しさん
05/03/20 18:43:040780デフォルトの名無しさん
2005/05/07(土) 01:48:53C# には finally があるぞ。つ〜か、finallyって使いますか?
0781デフォルトの名無しさん
2005/05/11(水) 17:11:50下手すると catch よりも使います
メソッド抜ける前にストリーム閉じるとかの終了処理に finally つかいますし
っていうかファイナライザ自体が finally 等価コード使用しているし
0782デフォルトの名無しさん
2005/05/11(水) 18:47:12メソッド抜ける前の必ず通る位置に終了処理を持ってくるだけでよくねぇ???
Cから進歩してない頭なので、わざわざfinallyにする利点がわかってないんすよ。
って、スレタイから外れてしまう話ですよね。
0783デフォルトの名無しさん
2005/05/11(水) 19:38:080784デフォルトの名無しさん
2005/05/11(水) 20:19:33それはわかるのだが、try〜catchがあればcatchの下(外?)に終了処理を置けばいい
わけで、finallyを使う時はtry〜finallyだから・・・と考えると是が非でもfinallyの意義が
わからないでいるのです。
0785デフォルトの名無しさん
2005/05/11(水) 20:59:47途中でreturnしたいときはどうだ。
0786デフォルトの名無しさん
2005/05/12(木) 01:03:460787784
2005/05/12(木) 07:22:01途中でreturnとやっても、finallyがあれば必ず処理をして・・・ということに
なりますか?
だとしたら、かなり便利ですね。
0788デフォルトの名無しさん
2005/05/12(木) 11:57:26>>783
0790デフォルトの名無しさん
2005/05/14(土) 03:10:48using は使わんのか
0791781
2005/05/14(土) 15:52:29using は IDisposable.Dispose を呼ぶことしかしないですから、別なことやりたかったら finally
ちなみに、『 using(obj) { 〜 } 』 は 『 try { 〜 } finally { ((IDisposable)obj).Dispose(); } 』 と等価だから、結局 finally
0792デフォルトの名無しさん
2005/05/14(土) 17:50:39俺は IDisposable なやつは極力 using するようにしてるけど
流行ってないのかな?
結果はまぁ同じなわけだが
0793デフォルトの名無しさん
2005/05/15(日) 12:13:020794デフォルトの名無しさん
2005/05/15(日) 12:21:06using(stream){}
だとusing内でstream.Close()しなくてもいいの?
0795デフォルトの名無しさん
2005/05/15(日) 18:43:44うん。Stream.Dispose は Close を呼び出す事になっていたはずだから
0796デフォルトの名無しさん
2005/05/15(日) 22:21:12using(Stream stream = new Stream(hoge)){}
のほうがよさげ
0797デフォルトの名無しさん
2005/05/19(木) 00:19:150798デフォルトの名無しさん
2005/05/19(木) 02:27:48おちつけ、>>799が大作を発表してくれるから。
0799デフォルトの名無しさん
2005/05/19(木) 08:52:43110 goto 100
0800デフォルトの名無しさん
2005/05/19(木) 08:54:30そうか。
0801デフォルトの名無しさん
2005/05/19(木) 11:53:52特定の条件下での分岐が欲しいな。可能なら多分岐でね。
#おそらく俺はもう書けないorz
0802デフォルトの名無しさん
2005/05/19(木) 14:22:19(lambda (goto)
(letrec ((start
(lambda ()
(print "start")
(goto next)))
(froz
(lambda ()
(print "froz")
(goto last)))
(next
(lambda ()
(print "next")
(goto froz)))
(last
(lambda ()
(print "last")
(+ 3 4))))
start))))
0803デフォルトの名無しさん
2005/05/19(木) 21:36:28スパゲッティっていうかマカロニだな
0804デフォルトの名無しさん
2005/05/19(木) 21:46:09全然分からない!
0805デフォルトの名無しさん
2005/05/19(木) 21:49:15「call-with-current-continuationを恐れなく使う兵達のスレ」にカエレ。
0806デフォルトの名無しさん
2005/05/20(金) 13:42:28こんなんとかどうだ?かなり凄いぞw
http://www.geocities.jp/amazonium011001/cuirpgfordq3.lzh
0807デフォルトの名無しさん
2005/05/20(金) 16:19:37私もへたれなプログラムしか書けないけど、
けどコピペ何回もするようなソース書きません。
と言う云々以前に、ソース見難いっす。orz
0808デフォルトの名無しさん
2005/05/20(金) 16:43:32それがスパゲッティなコードじゃないのか???
オレは見てないのだが、キレイで凄いソースってことで晒してる
のではないと思うが。
0809デフォルトの名無しさん
2005/05/20(金) 21:21:32見たいぞ見たいぞ
0810デフォルトの名無しさん
2005/05/20(金) 23:19:59って最初に言い出したヤツって、
見た目頭良さそうだけど、本質的な部分で頭悪そうだよな。
最初に言い出したヤツに続いてバカの一つ覚えに
「goto文は、使うな!」
って言ってるヤツは、基本的な部分で頭悪そうだよな。
0811デフォルトの名無しさん
2005/05/21(土) 00:08:32ダイクストラという人物だ。その主旨の題の論文を書いた。
(内容は構造化プログラミングの提唱なんだけど)
>最初に言い出したヤツに続いてバカの一つ覚えに「goto文は、使うな!」って言ってるヤツ
連綿と続いているgoto論争の一翼。沢山いる
0812デフォルトの名無しさん
2005/05/21(土) 07:29:450813デフォルトの名無しさん
2005/05/21(土) 11:00:26この人がアホだというのなら、誰が賢いのやら
0814デフォルトの名無しさん
2005/05/21(土) 13:47:09間違ったカタチで上辺だけが普及してしまったのだろう
0815デフォルトの名無しさん
2005/05/22(日) 10:14:59ダイクストラって古代のギリシアあたりで地下に大迷宮を作った人だと思ってました。ごめん。
0816デフォルトの名無しさん
2005/05/22(日) 10:29:47スコープ抜けたり入ったりする場合に、
なにかものすごいことになってそうだし。
デストラクタの副作用ですごいテク駆使できるかもしれんぞ。
0817デフォルトの名無しさん
2005/05/22(日) 10:47:43goto label; // コンストラクタすっとばして、デストラクタへ
MyClass my; // ここでコンストラクタ
label:
return; // ここでデストラクタ
}
こういう感じのは、コンパイラにはじかれた記憶があるが
0818デフォルトの名無しさん
2005/05/22(日) 11:05:220819デフォルトの名無しさん
2005/05/22(日) 11:37:17数論書いたひとじゃないの?・・・・アレ?もしかして同一人物?ネタになってない?
0820デフォルトの名無しさん
2005/05/22(日) 12:44:21goto使用ライセンスみたいなのがあればいいんだけどな。
そうでないと使いこなせもしないやつが悲惨なコード書くんだよ。
だから安全のために一律禁止。
拳銃と一緒かな。
0821デフォルトの名無しさん
2005/05/22(日) 15:38:29あれか。ロリ犯罪起こしたヤツの部屋に大量なエロゲーがあったから、
エロゲーを条例だぁなんだで全面禁止するようなものか?
0822デフォルトの名無しさん
2005/05/22(日) 15:44:53おまい国語の成績悪かっただろ。
0823デフォルトの名無しさん
2005/05/22(日) 15:47:120824デフォルトの名無しさん
2005/05/22(日) 16:28:390825デフォルトの名無しさん
2005/05/23(月) 20:32:44もしかしてダイダロス?
0826デフォルトの名無しさん
2005/05/26(木) 17:51:27で、goto をまともに使えない奴のコードは
何とかフラグがテンコ盛りになる、と。
0827デフォルトの名無しさん
2005/05/26(木) 21:34:330828デフォルトの名無しさん
2005/05/26(木) 23:49:25んなツール10年以上前からあるぞ
世界で一番goto文を恐れなく使う兵のコード
http://pc2.2ch.net/test/read.cgi/tech/1042802490
0829デフォルトの名無しさん
2005/05/26(木) 23:51:580830デフォルトの名無しさん
2005/05/27(金) 05:25:390831デフォルトの名無しさん
2005/05/28(土) 11:22:270832デフォルトの名無しさん
2005/05/29(日) 18:33:330833デフォルトの名無しさん
2005/05/29(日) 18:34:500834デフォルトの名無しさん
2005/06/06(月) 20:35:25グローバル変数よりはよっぽどましだと思うんだけど。
0835デフォルトの名無しさん
2005/06/06(月) 21:08:01gotoに大騒ぎして反対してるのはBASIC上がりのオサーンだけ
0836デフォルトの名無しさん
2005/06/06(月) 21:14:57充分に短い関数ならそれは正しい
0837デフォルトの名無しさん
2005/06/06(月) 21:16:47グローバル変数はデータの構造化を破壊する
0838デフォルトの名無しさん
2005/06/06(月) 21:33:34釣れますか?
0839デフォルトの名無しさん
2005/06/07(火) 03:28:42Pascalはそうでもない
0840デフォルトの名無しさん
2005/06/10(金) 13:23:06使い方によるけど
0841デフォルトの名無しさん
2005/06/10(金) 19:00:170842デフォルトの名無しさん
2005/06/10(金) 21:04:450843デフォルトの名無しさん
2005/06/11(土) 18:05:380844デフォルトの名無しさん
2005/06/11(土) 18:40:230845デフォルトの名無しさん
2005/06/11(土) 19:08:39何故?
0846デフォルトの名無しさん
2005/06/11(土) 23:47:33勝手にどこにでもいけるだろ、線さえ引けば。
0847デフォルトの名無しさん
2005/07/05(火) 07:01:190848デフォルトの名無しさん
2005/07/08(金) 17:23:13だから既にある構文の代わりにgotoを使う奴はアフォだし
用意されていない構文の機能をgotoで実現しない奴もアフォ。
0850デフォルトの名無しさん
2005/07/09(土) 01:08:440851デフォルトの名無しさん
2005/07/09(土) 02:08:12コール/リターン命令だからね。
gotoの乱用は構造化を壊す可能性が高いから極力使うなと言われる。
でも本当にgotoの無い言語は少ない。
>1のリンク先の「本物のプログラマー」はまさにコードの戦士といって
良いような存在。プログラミングに生涯をささげたような人達。
当然こんなプログラマーばかりではPCも含めたコンピューターの一般普及は
もっと遅れていたことだろう。
0852デフォルトの名無しさん
2005/07/09(土) 10:20:38>当然こんなプログラマーばかりではPCも含めたコンピューターの一般普及は
>もっと遅れていたことだろう。
常人では「本物のプログラマ」になるのは難しいという意味なら同意する。
#PCも含めたコンピューターの一般普及 なんざ望んでいなかったが
0853デフォルトの名無しさん
2005/07/09(土) 14:05:400854デフォルトの名無しさん
2005/07/09(土) 15:35:140855デフォルトの名無しさん
2005/07/09(土) 15:37:050856デフォルトの名無しさん
2005/07/09(土) 15:47:10実装無しの、単なる予約語じゃなくて?
0857デフォルトの名無しさん
2005/07/09(土) 15:47:45ふと思ったんだけど java のソースレベルで制限無しの goto が無いのは、
スタックの状態をブロックの前後で統一しなくてはならない仕様があることに関係するのかも
0858デフォルトの名無しさん
2005/07/09(土) 15:48:08予約語じゃなくて、ちゃんと飛べる
0859デフォルトの名無しさん
2005/07/09(土) 15:49:080860デフォルトの名無しさん
2005/07/09(土) 15:51:11サンクス
goto 無いのは Java だけか
0861デフォルトの名無しさん
2005/07/09(土) 17:47:330862デフォルトの名無しさん
2005/07/09(土) 17:50:100863デフォルトの名無しさん
2005/07/09(土) 22:23:00アホか
分岐後の処理の一方が短いだけじゃん
図を描いてよく考えろ
0864デフォルトの名無しさん
2005/07/09(土) 23:03:02つ 構造化定理
0865デフォルトの名無しさん
2005/07/10(日) 20:00:44// 処理1
return;
// 処理2
}
は、事実上
func () {
// 処理1
if (FALSE) {
// 処理2
}
}
と等価だけど、
func () {
// 処理1
goto EXIT;
// 処理2
EXIT:;
}
の方が近い希ガス。俺は return = 制限付き goto 派
0866デフォルトの名無しさん
2005/07/10(日) 20:04:130867デフォルトの名無しさん
2005/07/10(日) 20:05:110868デフォルトの名無しさん
2005/07/10(日) 20:15:250869デフォルトの名無しさん
2005/07/10(日) 20:17:050870デフォルトの名無しさん
2005/07/10(日) 20:19:48順次・分岐・反復 …… 構造化構文
それらで表現できない構文 …… 全部 goto 等価
goto の中で、「〜にジャンプする」 の意味を持つもの …… 制限付き goto (目的あり goto)
ただ 「ジャンプする」 しか意味を持たないもの …… 普通の goto
0871デフォルトの名無しさん
2005/07/11(月) 11:12:28ただ飛び先の前後の文脈が異なるだけで
0872デフォルトの名無しさん
2005/07/15(金) 02:37:260873デフォルトの名無しさん
2005/07/28(木) 19:20:00がんがん使っても全然問題ないと思うようになった。
いや、もちろん使う機会は限られているよ。
break, continueとかで済むならそっちを使うよ。
0874デフォルトの名無しさん
2005/07/28(木) 20:46:46同意。私は構造化構文が無かった時代からPGをやっていて同様の見解を持っている。
だが、そのような見解を構造化言語以降のPGが持つ例は非常に少ないのだ。
gotoが有害なのは有害になる文脈で使用されるからだ。
使う機会が限られているというのも正しいね。
0875デフォルトの名無しさん
2005/07/28(木) 20:54:54今日はもう帰ります。
0876デフォルトの名無しさん
2005/07/28(木) 21:24:080877デフォルトの名無しさん
2005/07/29(金) 00:57:140878デフォルトの名無しさん
2005/07/29(金) 01:12:41そんな気がして
0879デフォルトの名無しさん
2005/07/29(金) 05:38:24俺はN88BASIC以降は見たことないぞ。
0880デフォルトの名無しさん
2005/07/29(金) 12:16:11見なかったことにしたかったw
俺は未だに goto 使ったことないなぁ。必要がないから使わない。
必要になったら使うけど。
0881デフォルトの名無しさん
2005/07/29(金) 12:29:54'95 くらいだったかな。
業務用基盤のゲームなんだけど、PC 上でロジック確認をするのに書いたらしいんだが、
アセンブラで書いた方がいいんじゃねーの? って思った。
デバッグ表示に printf() が楽だから C で書くんだとさ。
俺はアンチじゃないけどね。
0882デフォルトの名無しさん
2005/07/29(金) 20:51:08配列をリングバッファに見立てて、idをキーに検索を行う。
ただし、何番目の要素から検索を開始するか指定できるようにする。
指定idを見つけたらその要素にdataの値を設定し、その要素へのポインタを返す。
見つからなければNULLを返す。
*/
typedef struct{int id; int data;} item_t;
item_t ring_buffer[1000];
result_t *hoge(int id, int data, int start)
{
item_t *p_end = ring_buffer + sizeof(ring_buffer)/sizeof(ring_buffer[0]);
item_t *p_start = ring_buffer + start;
item_t *p;
for(p = p_start; p != p_end; ++p)
if(p->id == id ) goto FOUND;
for(p = ring_buffer; p != p_start; ++p)
if(p->id == id ) goto FOUND;
return NULL;
FOUND:
p->data = data;
return p;
}
0883882
2005/07/29(金) 20:52:060884デフォルトの名無しさん
2005/07/29(金) 22:09:37#define FOUND { p->data = data; return p; }
でも充分な気が
0885デフォルトの名無しさん
2005/07/29(金) 22:17:38そういうマクロの使い方はgotoよりよっぽど危ういだろ
0886デフォルトの名無しさん
2005/07/29(金) 22:18:050887デフォルトの名無しさん
2005/07/30(土) 19:41:40それならgotoの方がいい。
0888デフォルトの名無しさん
2005/07/30(土) 20:54:26無茶苦茶な例題だなぁ。
0889デフォルトの名無しさん
2005/07/30(土) 20:55:390890デフォルトの名無しさん
2005/07/30(土) 21:24:16882は、こういうときこそgotoの使いどころだっていう意図だろうけど、
それには同意できない、無茶苦茶だって言うわけだね?
じゃあ888氏ならどうする?
0891デフォルトの名無しさん
2005/07/31(日) 13:42:53ぶっちゃけ>>882のgoto使う奴が一番素直で分かりやすいと思うが。
/*
配列をリングバッファに見立てて、idをキーに検索を行う。
ただし、何番目の要素から検索を開始するか指定できるようにする。
指定idを見つけたらその要素にdataの値を設定し、その要素へのポインタを返す。
見つからなければNULLを返す。
*/
typedef struct{int id; int data;} item_t;
item_t ring_buffer[1000];
item_t *hoge(int id, int data, int start)
{
item_t *p_end = ring_buffer + sizeof(ring_buffer)/sizeof(ring_buffer[0]);
item_t *p_start = ring_buffer + start;
item_t *p;
for (p = p_start; p != p_start; ++p) {
if (p->id == id) {
p->data = data;
return p;
}
if (p == p_end)
p = ring_buffer;
}
return NULL;
}
0892デフォルトの名無しさん
2005/07/31(日) 13:43:28/*
配列をリングバッファに見立てて、idをキーに検索を行う。
ただし、何番目の要素から検索を開始するか指定できるようにする。
指定idを見つけたらその要素にdataの値を設定し、その要素へのポインタを返す。
見つからなければNULLを返す。
*/
typedef struct{int id; int data;} item_t;
item_t ring_buffer[1000];
item_t *hoge(int id, int data, int start)
{
item_t *p_end = ring_buffer + sizeof(ring_buffer)/sizeof(ring_buffer[0]);
item_t *p_start = ring_buffer + start;
item_t *p = p_start;
while (p->id != id && ++p != p_start) {
if (p == p_end)
p = ring_buffer;
}
if (p->id == id) {
p->data = data;
return p;
}
return NULL;
}
いずれにせよ「無理やりgotoを取り除いてもいいこと無いよ」って例としては悪くないんじゃない?
0893デフォルトの名無しさん
2005/07/31(日) 13:44:580894デフォルトの名無しさん
2005/07/31(日) 16:54:14startの値域外確認機能欠落とか
突っ込みたいところはあるけど
面白かったよ
0895デフォルトの名無しさん
2005/07/31(日) 23:33:18> startの値域外確認機能欠落とか
関数名がhogeだとかな。
例にそういうツッコミ無粋な希ガス。
0896880
2005/08/01(月) 12:42:09{
item_t* p_start = ring_buffer + offset;
item_t* p_end = ring_buffer + offset + length;
for (item_t* p = p_start ; p != p_end ; ++p) {
if (p->id == id) {
p->data = data;
return p;
}
}
return NULL;
}
item_t* hoge(int id, int data, int offset)
{
// process [offset, LAST]
item_t* ret = set_data_n(id, data, offset, sizeof(ring_buffer) / sizeof(ring_buffer[0]) - offset);
if (ret) {
return ret;
}
// process [FIRST, offset).
return set_data_n(id, data, ring_buffer, offset);
}
0897880
2005/08/01(月) 12:44:10[offset, offset + length) の間を処理する関数を作って、それを応用する
方が再利用性が高いと思うけど、どうだろう。今回のは goto を使うケースでは
ないと思う。
毎回 data をセットする度に for (p = ...) {...} なんて書くのはアホらしいし。
命名に迷った時に付けた set_data_in_range と set_data_n 混ざってる…_| ̄|○
同じ関数です、ハイ。
0898デフォルトの名無しさん
2005/08/01(月) 13:01:43item_t *find_item(int id,int start){
item_t *p_end = ring_buffer + sizeof(ring_buffer)/sizeof(ring_buffer[0]);
item_t *p_start = ring_buffer + start;
item_t *p;
for(p = p_start; p != p_end; ++p)
if(p->id == id )return p;
for(p = ring_buffer; p != p_start; ++p)
if(p->id == id )return p;
return NULL;
}
item_t *hoge(int id, int data, int start){
item_t *p = find_item(id,start);
if(p)p->data = data;
return p;
}
0899デフォルトの名無しさん
2005/08/01(月) 13:18:02for(p = p_start; p != p_end; ++p)
if(p->id == id )return p;
の部分は関数なりマクロになりにした方がいいんじゃないのか?
同じアルゴリズムが、同じ関数の二箇所で使われてるのはどうかと思う。
0900デフォルトの名無しさん
2005/08/01(月) 15:39:57重複部分をひたすらマクロに置き換えていくと
必ずわけのわからんソースになる。
メンテする人間が発狂するからやめとけ。
0901デフォルトの名無しさん
2005/08/01(月) 18:15:30速度が要求されないなら
for(i=0;i<LENGTH;i++) if(ary[(i+start)%LENGTH)] == data) ...
みたくループを一つにする。
LENGTH が 1024 とかなら、(i+start) & 0x3FF と書けるから後者でも多少高速かと。
0902デフォルトの名無しさん
2005/08/01(月) 19:56:27for文の終了条件が少し違いますね。
自分だったら反復部分だけを下位関数にして二回参照を書きます。
0903デフォルトの名無しさん
2005/08/01(月) 20:56:03ちゃんと分離すれば、訳分からんことにはならんだろう。
同じオペレーションをマクロにするのは別に構わないと思う。
マクロだと分かるようにしておけば(全部大文字が慣例だな)、
副作用を招くような式を入れることもないし。
同じオペレーションがアチコチに散見するほうがずっと問題。
0904デフォルトの名無しさん
2005/08/01(月) 22:30:10goto避けるためにやってるとしたらさらに低脳
0905デフォルトの名無しさん
2005/08/01(月) 22:47:18returnしたりgotoしたりするなんて論外だと漏れは思う。
0906デフォルトの名無しさん
2005/08/01(月) 23:16:180907デフォルトの名無しさん
2005/08/02(火) 01:46:32と思うレベルのものはインラインに記述したままの方が読みやすいことがしばしば。
関数にすっか。。。
と思うレベルのものはそのうち同じロジックが別の箇所で現れて
やっぱ関数にしときゃ良かったと思うことがしばしば。
必ずしもそのとおりにいかないこともしばしば。
0908デフォルトの名無しさん
2005/08/02(火) 04:16:53おまえのレスは何の役にも立たないな
0909デフォルトの名無しさん
2005/08/02(火) 10:15:16lisp系ならマクロで俺言語が当たり前なのだが。
0910デフォルトの名無しさん
2005/08/02(火) 18:46:320911デフォルトの名無しさん
2005/08/02(火) 19:26:15マリー・アントワネット
0912デフォルトの名無しさん
2005/08/03(水) 18:14:46多分可能だと思う。
可能じゃないかな。
まぁちょっと覚悟はしておけ。
0913デフォルトの名無しさん
2005/08/03(水) 18:25:55C++に限らず多重gotoと多重continueがないとつらい。
0914デフォルトの名無しさん
2005/08/03(水) 18:29:530915913
2005/08/03(水) 18:31:140916デフォルトの名無しさん
2005/08/03(水) 18:58:380917デフォルトの名無しさん
2005/08/03(水) 19:00:210918デフォルトの名無しさん
2005/08/03(水) 23:57:26必要だと思ったことないや
0919デフォルトの名無しさん
2005/08/04(木) 00:15:15年齢がある程度わかってしまうな。 ̄m ̄ ふふ
0920デフォルトの名無しさん
2005/08/04(木) 01:19:12全ての構造化言語においてgoto使用が不可避な場合は存在しない。
それにも関わらず、ここはgotoを使う兵のスレなのだw
#そしてgotoが使えないjavaについて話すのはスレ違いだw
0921デフォルトの名無しさん
2005/08/04(木) 01:38:270922デフォルトの名無しさん
2005/08/04(木) 01:41:51言ってくれるな
0924922
2005/08/04(木) 01:50:37俺の親父と同じ世代だよ
0925919
2005/08/04(木) 02:17:12すごい状況だ。親子ほど歳の離れた見知らぬ2人が2chしてる。
学生???たぶん、オレの方が親父さんより下だとは思うが、
目くそ鼻くそだと思うわ。
0926デフォルトの名無しさん
2005/08/04(木) 02:47:140927デフォルトの名無しさん
2005/08/04(木) 07:40:33同意。auto_ptr<>がある!とか言う香具師もいるが、何もメモリ解放だけがfinallyの役割じゃないし。
それに、newがあるのにdeleteの無いスマポはキモス...
0928デフォルトの名無しさん
2005/08/04(木) 08:47:09VCとBCCにはあるんだなこれが。
0929デフォルトの名無しさん
2005/08/04(木) 12:30:42gccにもあればとりあえず仕事で実用できるんだが。
finallyブロックをコールバックで表現するのはどうか
try_finally(try_proc, finally_proc) {
Cfinally fin(finally_proc); // デストラクトでfinally_proc実行
return try_proc();
}
0930デフォルトの名無しさん
2005/08/04(木) 12:33:12レキシカルなクロージャないと厳しいな。
0931デフォルトの名無しさん
2005/08/06(土) 15:10:34詳しく。
0932デフォルトの名無しさん
2005/08/06(土) 18:30:34try{
}
finally{
fclose(fp);
}
0933デフォルトの名無しさん
2005/08/06(土) 18:34:11メモリ解放に限らず、「確実にやりたい後始末的処理」を書くのにfinallyは便利。
後始末をfinallyにしとけば、try内部では心おきなくbreakもreturnもthrowもできるので、精神衛生上非常によろしい。
0934デフォルトの名無しさん
2005/08/06(土) 18:42:07ってどういう動作するか決まってたかな?
0935デフォルトの名無しさん
2005/08/06(土) 18:46:32FILE *fp;
if(fp = fopen()){
try{
}
finally{
fclose(fp);
}
}
0936デフォルトの名無しさん
2005/08/06(土) 22:31:37VC/BCCなど一部の独自拡張を使うということの方が俺にとってはよっぽど精神衛生上良くない。
0937933
2005/08/06(土) 23:41:57いや、finallyがある言語なら、精神衛生上望ましい記述ができる、というだけで、
CやC++でfinallyを使うのは、俺も精神衛生上よろしくないです。
だから、標準でfinallyを導入して欲しいぞ、と。
あとプロパティも欲しい。デリゲも欲しい。RTTIも欲しい。ガベコレは要らん。
0938933
2005/08/06(土) 23:46:370939デフォルトの名無しさん
2005/08/07(日) 05:54:07gotoも駄目だったら例外の処理は一体どうすればいいんだ?
そういやVCだとCでも例外処理機構が付いてるんだよな。使ってる人いる?
0940デフォルトの名無しさん
2005/08/07(日) 12:31:20(´-`)。oO(…C#…)
>>939
> そういやVCだとCでも例外処理機構が付いてるんだよな。使ってる人いる?
ちょっと上のレスぐらい読めよ。
0941デフォルトの名無しさん
2005/08/07(日) 17:40:38この件についてハゲ氏はなんか言ってる?
0942デフォルトの名無しさん
2005/08/07(日) 19:31:35なぜか if にも付けられた
もしかしたらブロック単体にも付けられるかも知れない
0943デフォルトの名無しさん
2005/08/07(日) 20:11:040944デフォルトの名無しさん
2005/08/07(日) 20:58:340945デフォルトの名無しさん
2005/08/07(日) 21:20:140946デフォルトの名無しさん
2005/08/07(日) 21:21:520947デフォルトの名無しさん
2005/08/07(日) 21:24:560948デフォルトの名無しさん
2005/08/08(月) 01:04:04言語使用を変えなくてもライブラリで対応できる機能はライブラリで、って方針なんだろ。
あのな、finallyがあれば2〜3行で書ける処理を、わざわざクラス実装して、スマートポインタに食わせて・・・
なんてやっているほど、俺たちは暇じゃないのよ>ハゲ氏
0949デフォルトの名無しさん
2005/08/08(月) 02:59:330950デフォルトの名無しさん
2005/08/08(月) 03:47:10複数の言語に存在してるのは、
それだけ汎用性のある構文だからだし。
goto を使うのを恐れるヘタレと罵られてもいいから
今すぐに finally を追加して欲しい。
生け贄が必要なら、for か while のどちらかを殺してもいい。
0951デフォルトの名無しさん
2005/08/08(月) 04:35:57勝手に殺すな!
for も while もとってもいいやつなんだぞ。
生贄なら、お前がなれ!
0952デフォルトの名無しさん
2005/08/08(月) 06:20:070953デフォルトの名無しさん
2005/08/08(月) 19:47:28先生!do〜while が変なんです!
コンパイルエラーにはならないのに!
0954953
2005/08/08(月) 19:48:320955デフォルトの名無しさん
2005/08/08(月) 19:56:04神様、生贄にforを差し出します、多重breakを私達にお与えください。
・・・・・・・・・ break使えないじゃん。
0956デフォルトの名無しさん
2005/08/08(月) 20:01:06結局 goto だけが残りましたとさ。
0957デフォルトの名無しさん
2005/08/08(月) 20:03:28目先の便利さを追求して重複機能をどんどん取り入れていくと
C++やRubyのような汚い言語になってしまう。
0958デフォルトの名無しさん
2005/08/08(月) 20:06:32なんだとー、貴様!
ハゲに誤れ!
0959ハゲ
2005/08/08(月) 20:13:110960デフォルトの名無しさん
2005/08/08(月) 20:51:37目先の便利さを追求して重複機能をどんどん取り入れていくと
ノイマン型マシンような汚いコンピュータになってしまう。
0961デフォルトの名無しさん
2005/08/09(火) 07:21:47いちいち毎回finally書くのアホらしいから
コンストラクタで確保して、デストラクタが開放って考えだろ
ヒープだろうが、ファイルハンドルだろうがな
こっちの方が手間要らないし
後始末忘れるうっかりさんも発生しない
0962デフォルトの名無しさん
2005/08/09(火) 07:23:430963デフォルトの名無しさん
2005/08/09(火) 07:33:42try{
...
}finally{
close();
}
をいちいちクラスに切り出すアホらしさときたら!
0964デフォルトの名無しさん
2005/08/09(火) 07:49:08finally節を毎回コピペするようなあほらしさこそ無用
0965デフォルトの名無しさん
2005/08/09(火) 08:24:13どうせ喪前らfinally使ったら
my_class *a = new my_class;
my_class *b = new my_class;
try {
...
} finally {
delete a;
delete b;
}
こんな感じの駄々漏れコード書くんだろ?
0966デフォルトの名無しさん
2005/08/09(火) 09:54:09あんまりスタックに物を置きたくないし
0967デフォルトの名無しさん
2005/08/09(火) 09:59:00このコードの問題じゃないの?
0968デフォルトの名無しさん
2005/08/09(火) 12:00:07C++使うと脳が歪むという噂は本当のようだ。
0969デフォルトの名無しさん
2005/08/09(火) 13:25:46本格的なものを作るときならクラスに切り出してデストラクタに任せる。クラスにするのは面倒だけど、使うときには楽できる。
finalyはあれば便利だけどなくても困らないよ。
0970デフォルトの名無しさん
2005/08/09(火) 13:32:34出た、話をうやむやにできる魔法の言葉ww
無いなりに何とかやりくりしてるなんてのはどうでもいい話だ。。
0971デフォルトの名無しさん
2005/08/09(火) 13:43:20うん。
俺は何とかやりくりしていて、それで問題ないと思うから要らない。
0972デフォルトの名無しさん
2005/08/09(火) 13:51:430973デフォルトの名無しさん
2005/08/09(火) 13:56:520974デフォルトの名無しさん
2005/08/09(火) 14:35:44>>751-
0975デフォルトの名無しさん
2005/08/09(火) 16:27:02じゃあお前はアセンブラだけあれば十分だな。何とかやりくりすればそれで問題ないだろ?
0976デフォルトの名無しさん
2005/08/09(火) 17:15:50それよりgotoの話をしやがりませんか
0977デフォルトの名無しさん
2005/08/09(火) 21:34:51それほど可読性を低下させない範囲でgotoを使わないように書き換え可能。
gotoに抵抗がないなら使えばいいしgotoが悪だと洗脳されてる奴は使う必要はまったくない。
gotoに関する議論で他にすべきことが何かあるのか?
0978デフォルトの名無しさん
2005/08/09(火) 21:37:010979デフォルトの名無しさん
2005/08/10(水) 03:12:170980デフォルトの名無しさん
2005/08/10(水) 09:10:44「gotoが悪だと洗脳されている奴」の発言に対して、
まともに対応する振りをして、心中憐れむ
という楽しみが
0981デフォルトの名無しさん
2005/08/10(水) 09:21:11>ちょっとしたものを簡単に作りたいときならfinalyはあってもいい。
それは良く分かるけど
C++は本格的なものを作る方の道具だからねえ
0982デフォルトの名無しさん
2005/08/10(水) 11:33:030983デフォルトの名無しさん
2005/08/10(水) 12:44:57N88-BASICが現役の頃、そういうソースを見たことがある
Cで見事なスパゲッティが
0984デフォルトの名無しさん
2005/08/10(水) 13:37:12こんなカンジ?
10 ' スタート
20 DEFINT A-Z
30 ' なんかいろいろな処理
・・・
340 ' サブルーチン
・・・
2000 GOTO 340
・・・
3000 END
int main(void)
{
L30: /* なんかいろいろな処理 */
・・・
L340: /* サブルーチン */
・・・
L2000: goto L340;
・・・
L3000: return 0;
}
全部の行にラベル付け・・・
0985デフォルトの名無しさん
2005/08/10(水) 16:20:17N88-BASICにはラベルが使えたような
0986デフォルトの名無しさん
2005/08/10(水) 18:56:31>C++は本格的なものを作る方の道具だからねえ
よく恥ずかしげも無くこんな台詞が吐けるな。
finallyなんて出る幕が無い、お前さんが書いた本格的プログラムとやらを見せてくれよ。
それに、本格的なプログラムの中には「ちょっとした処理」は一切含まれないの?
まぁお前はfinallyが無いがために、一回しか使われないクラスを頑張って書いて、ソースの可読性を落としてくれや。
俺はクラス名を考えるのすら面倒だ。
0987デフォルトの名無しさん
2005/08/10(水) 19:01:55同じ処理を実現するにあたって、
それが読みやすく&簡単になることが悪い訳ない。
0988デフォルトの名無しさん
2005/08/10(水) 20:07:260989デフォルトの名無しさん
2005/08/10(水) 20:08:000990デフォルトの名無しさん
2005/08/10(水) 20:18:30with THogeClass.Create do try
//いろんな処理
finally
Free;
end;
インスタンスのポインタ変数すら定義しない技法が好き。
まぁ関数の頭に戻って定義するのも面倒だからな>Pascal
0991デフォルトの名無しさん
2005/08/10(水) 20:31:40男なら行番号
0992デフォルトの名無しさん
2005/08/10(水) 21:48:39Fortranの行番号は「数字しか使えないラベル」なんだが
BASICしか知らないクチ?
0993デフォルトの名無しさん
2005/08/10(水) 21:53:07だから何?Fortranの知識をひけらかしたい低脳のクチ?
0994デフォルトの名無しさん
2005/08/10(水) 22:00:37行番号云々を持ち出してくるお前は空気嫁。
0995デフォルトの名無しさん
2005/08/10(水) 22:07:12ちょっとした処理だと思って、誰かがfinallyを使う
↓
誰かがヘボいメンテして、finally内の処理が増える
(多分、数倍ぐらいには平気で増えるね)
↓
似た機能が必要になって、そのソースがコピペされる
↓
コピペしたソースを改変する際に
finally内に書くべき処理が抜けて、資源がリークする
まあ、実用プログラムなら
少なくない確率でこうなるわな
書き忘れが無くてもリークする例もあることは、前に記した通り
資源を管理するクラスを作ったほうが、健全
0996デフォルトの名無しさん
2005/08/10(水) 22:59:230997デフォルトの名無しさん
2005/08/11(木) 01:29:08> まあ、実用プログラムなら
> 少なくない確率でこうなるわな
なりません。
0998デフォルトの名無しさん
2005/08/11(木) 01:30:02> >>997
>>995 だった。
0999デフォルトの名無しさん
2005/08/11(木) 01:58:391000デフォルトの名無しさん
2005/08/11(木) 01:59:4510011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。