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

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

レス数が1000を超えています。これ以上書き込みはできません。
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なんかで、ひとつの関数の中から他の関数の特定の行へ飛んだりとかってできない?
0102デフォルトの名無しさんNGNG
そういうことはインラインアセンブラで
0103デフォルトの名無しさんNGNG
gotoは命令?文?
0104デフォルトの名無しさんNGNG
>>101
それこそ普通やっちゃまずいことじゃないか?

0105棄教者 ◆witdLTi2 NGNG
半導体メーカー勤務の棄教者です。
SPICE3f5のソース探検をしている最中ですが惜しげもなくgoto使ってますね。
0106デフォルトの名無しさんNGNG
>>103 Cに「命令」なんてあったか?
Cに限定しないならそれぞれ言語仕様書よめ
0107デフォルトの名無しさんNGNG
>>105 スピードが必要というのは錦の旗ですから 何でもアリです
0108デフォルトの名無しさんNGNG
>>101
longjmpするのが筋では?
0109デフォルトの名無しさんNGNG
煽ったれと思ってのぞいたら、マジレスばかりなので、いなくなるね。

煽ろうと考えたのは以下の通り:
>goto文を恐れなく使う兵達のスレ
なるほど、gotoを使うのは、下っ端の兵隊さんだけなんですな。
0110デフォルトの名無しさんNGNG
「兵」は「つわもの」と読ませたいのだと思われ。
0111デフォルトの名無しさんNGNG
>>109
優秀な兵がいないと将は無力。
0112ageNGNG
109を晒しage!!!
0113デフォルトの名無しさんNGNG
恐れすだが
>>47は

i = last;
loop:
if(!i)
  goto end;

func();

i--;
goto loop;
end:

のほうがよくない?
0114harukaNGNG
デバッグのときにリンクとロード時間がもったいないからって
16進で直接パッチあてて強引に動かしてみてから、
Cのコードをそれに合わせて書き換える人が知り合いにいる。

一番よく使うiアプリは16進電卓らしい…
0115デフォルトの名無しさんNGNG
>>103
人名です。
0116デフォルトの名無しさんNGNG
エディットコンティニューをしらんのか、そいつわ
0117harukaNGNG
>>116
多分知ってると思いますが。
0118デフォルトの名無しさんNGNG
>>114
組み込み出身の方ですか??
0119デフォルトの名無しさんNGNG
ロード時間が勿体無いほどかかるって事は、組込かゲームだろう
0120harukaNGNG
組み込みです。
0121デフォルトの名無しさんNGNG



小金井市中町4-14-3西村コーポラス205
神奈川???・阿倍野区橋本町6-30
オー・ムムム・ゴーサン・クニムイ
鵜沼 安希雄と風本純男(年収1000マン!)
0122デフォルトの名無しさんNGNG
>>121
さっきからいろんなスレに連続投稿、ウザイんですけど、、、
とても迷惑。
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/
0123                           NGNG

      a = -b
      -a =  b
 
 muinus :
      a = -a
      b = -b
    go to plus
   plus :
      a = -a
      b = -b
    go to muinus

0124デフォルトの名無しさんNGNG
>>123
はじめ->minus->plus->minus->plus->...
無限ループしない?
0125                           NGNG
      a =  1
      b = -1   とか

      a = -b
      -a =  b
 
 muinus :
      -a → a
      -b → b
    go to plus
   plus :
      -a → a
      -b → b
    go to muinus

0126                  NGNG
>>124    うん。どうやって2重らせんにしたらよろしいか。
0127デフォルトの名無しさんNGNG
>>109
は、日本語できないってことで意義無しですな。
0128デフォルトの名無しさんNGNG
javaにgotoが無いってほんと?
0129デフォルトの名無しさんNGNG
>>128
無いけどブロックを一気に抜ける方法はある。

hoge:{
  for(int i=0; i<k; i++){
    while(a!=b){
      …
      break hoge;
    }
  }
}
一番外の中括弧は省略できるかも
0130デフォルトの名無しさんNGNG
gccはgotoのラベルを変数に代入できるらしい。
0131デフォルトの名無しさんNGNG
>>130 それいいね 実行中断と継続が書けそう
0132デフォルトの名無しさんNGNG
おとなしくそこだけインラインアセンブラで書いとけ
gotoなんて使わん!
0133デフォルトの名無しさんNGNG
>>130
それ標準仕様になればすげー便利なんだけど。
0134デフォルトの名無しさんNGNG
#include <stdio.h>
#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デフォルトの名無しさんNGNG
おえ…
0136デフォルトの名無しさんNGNG
後藤マンセー
0137棄教者 ◆witdLTi2 NGNG
要らないところでgoto使いすぎ。
解読メモより

gott->gtto->gtot->exit();
gtgo->tggo->tgog->togg
otgg->ogtg->ogoo->gooo->oogo->togg
ggto->ggot
このあたりは条件分岐なしで素直につながっていた。
0138デフォルトの名無しさんNGNG
間違っていたら恥ずかしいので名無しさんで。
main(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デフォルトの名無しさんNGNG
exit じゃなくて return にしてほスィ
0140デフォルトの名無しさんNGNG
tuka "exit()" ってしてもいいの?
0141デフォルトの名無しさんNGNG
最近gotoつかった。
func(){
  char *a;
  if((a = malloc(100)) == NULL)
    return;
略
  if(エラー)
    goto Exit;
略
Exit:
  free(a);
}
みたいなかんじで。
0142デフォルトの名無しさんNGNG
多重継承を恐れなく使う兵達のスレを作っても良いですか?
0143デフォルトの名無しさんNGNG
>>142
許可します。
0144デフォルトの名無しさんNGNG
Java も C# も
なんでラベルなんていう概念引きずってるんだろうね。
switch は書きづらい読みづらいし。

名前つきブロックと高度なブロック抜け出し文を作ってラベルを廃止してほすぃ。
0145デフォルトの名無しさんNGNG
>>144
よっぽどのことが無い限り、似たり寄ったりになるかみにくくなる。とおもう。
0146デフォルトの名無しさんNGNG
人が読みやすいコードってのも重要だしなぁ。
0147デフォルトの名無しさんNGNG
すっごいアホがいるなw >>109
0148デフォルトの名無しさんNGNG
>>147
自分のことか?
0149デフォルトの名無しさんNGNG
>>144
名前つきブロックと高度なブロック抜け出し文を作ると、
ラベルやswitchはどのように書くことが出来るんだ?
0150デフォルトの名無しさんNGNG
label: {
 switch(hoge) {
  case(moge){
   break switch;
  };
  case(monyu){
   if (a) {
    break label;
   };
   break switch;
  };
 };
};
0151デフォルトの名無しさんNGNG
>>148 恥ずかしい>>109ハケーン(ププ-
0152デフォルトの名無しさんNGNG
>>150
schemeのcall/ccみたいだね。
0153デフォルトの名無しさんNGNG
>>150
それのどこが今より読みやすくて書きやすいのかさっぱりわからん。
0154デフォルトの名無しさんNGNG
>>153
 確かに。でも書きやすい(俺ならgoto使うから別にいいけど)気持ちは分かります。
 加えて大カッコがK&Rスタイルなのが読みにくい一因かもしれないけど。
0155 ・/b>osm.osas.co.jp<B> NGNG
test
0156デフォルトの名無しさんNGNG
「GOTO を恐れずに使うのは、本物のプログラマは。」
ではないところがポイント。
0157デフォルトの名無しさんNGNG
goto文を恐れなく使うロボット二等兵のスレはこちらですか?
0158デフォルトの名無しさんNGNG
スレのタイトルにワラタよ
0159デフォルトの名無しさんNGNG
後藤ふみって誰? 挿れると気持ち良いの?
0160書いてて俺本当にダメだと思ったNGNG
大分県緒方小一年 ごとう あや

参照
http://www.asahi-net.or.jp/~bj6k-gtu/10hakuyousyouyosennsyougakusei.htm
0161デフォルトの名無しさんNGNG
「はっぱはねトラックきたらまいあがるとり
 がとんでるようにみえたよ」

本人、2chで晒されてるなんて思ってもいないんだろうな…。
0162デフォルトの名無しさんNGNG
>>160
直リンはやめれ・・・
0163デフォルトの名無しさんNGNG
>フットボールの試合観戦では、11x14 インチのファンフォールド紙に出力したシミュレーションと実際のプレイと比較してるのが本物のプログラマだ。
フットボールではないけれど、ワールドカップスタンドで本物のプログラマを探してみましょう。
0164デフォルトの名無しさんNGNG
本物のプログラマは、今メモリのどのあたりに書き込みが行われているか
音で判断する。
0165デフォルトの名無しさんNGNG
jmp >>1
0166デフォルトの名無しさんNGNG
本物のプログラマは2chに来ない
0167デフォルトの名無しさんNGNG
メモリ書き込み時に音なんて出る?
0168デフォルトの名無しさんNGNG
磁気コアメモリですか?
0169デフォルトの名無しさんNGNG
>>167-168
FM-7は鳴った(w
0170デフォルトの名無しさんNGNG
本物のウィザードリーマニアは、ディスクシーク音で出現する敵を予知できた。


ちなみに「磁石を近づけて自由にパラメータを書き換えた」っつーのもあった。
本当かにゃー
0171デフォルトの名無しさんNGNG
>>31
16進計算機もわからんのか・・・レベル低すぎ
0172デフォルトの名無しさんNGNG
ム板で16進数について説明してたアフォがいるスレはここですか?
0173名無しさん@お腹いっぱいNGNG

 後藤 文
0174デフォルトの名無しさんNGNG
>>http://www.genpaku.org/realprogrammerj.html を書いた人へ

本物のプログラマはぐだぐだ言うな。
0175棄教者 ◆witdLTi2 NGNG
関数の再帰呼び出しと同じことを後藤さんにやらせる方法を教えてください。
0176名無しさん@カラアゲうまうまNGNG
int fact(int n)
{
  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デフォルトの名無しさんNGNG
本物のプログラマはOSなんて使わない。
0178デフォルトの名無しさんNGNG
本物のプログラマは画面描画からメモリ管理、ファイルシステムまで全て一つのアプリケーションの中に実装します。
0179デフォルトの名無しさんNGNG
本物のプログラマは画面描画からメモリ管理、ファイルシステムを、
それぞれのモジュールに分割します
0180厨房NGNG
C使いなんですけど

goto文って邪道なんですか?
正直、無条件ジャンプするには都合がいい関数なんですが、
なぜ、×なのかおしえてください。
0181デフォルトの名無しさんNGNG
>>180
ワシはそんなに邪道じゃないと思う。
おかしなところで使わなければ
0182厨房NGNG
>>181
Cの説明書みたんですけど
goto文について、
処理の流れを強制的に変更するものであり、
コードが読みにくくなる場合があるので、できるだけ使わないほうがいい。

とありますが、どうでしょう?
0183デフォルトの名無しさんNGNG
それは、やたらめったら使った場合のことで、必要もなしにつかうと
読みにくくなるってことでしょう。大抵のコードは他の制御構文で
記述できるから、ほとんど不要ではある。
「できるだけ使わないほうがいい」っていうのは、
「本当に必要であればつかっていい」ってこと
0184厨房NGNG
>>183
OK、了解した
説明感謝する。
0185デフォルトの名無しさんNGNG
他の制御構文で何とかした結果、やたら読みにくいコードになる。
誰もが通ってる道のはずなのに。。。

やたら馬鹿でかいwhileブロックつくって何とかするのがよしなわけ?
0186デフォルトの名無しさんNGNG
>>185
なにをいっとるのかね? 君は。
0187デフォルトの名無しさんNGNG
変な風にコードを変形してまで goto 避けるのはどうかと思う。
つうか、いまどき構造化原理主義ってのもちょっとアレだ。
0188デフォルトの名無しさんNGNG
大昔し、bitで読んだな、なつかしすぎ。bitsだったかな?
本物・・・の件。
0189デフォルトの名無しさんNGNG
>>187
だから>>183ってことだろ。gotoがほとんど必要ないのは事実。
0190デフォルトの名無しさんNGNG
1000行くらいあるwhileループを書くのはやめてください。
1000行くらいある関数内でgotoを使ってあちこち飛ぶのもやめてください。
両方とも根本的な誤りがあります。
0191棄教者 ◆witdLTi2 NGNG
1000行ある while ループが読めない、
1000行ある関数内で後藤の飛び先がわからない、
どっちもプログラマとしてはちょっと。。。

ちなみにぼくは2画面分が限界です。
2画面より長い while ループはぼくの脳味噌がコアダンプ吐きます。
0192デフォルトの名無しさんNGNG
後藤さんは沖ノ鳥島に飛ばされますた。
0193デフォルトの名無しさんNGNG
>191
190は、読めない、分からないとは一言も言っていない罠。
次から、2000*1600の解像度で8dotフォントを使って作業すること。
(縦置きで、縦にdual display。行間は無し)
0194棄教者 ◆witdLTi2 NGNG
>>193
ちなみに昔の OASYS 使っているので、
一画面=4行です。
0195デフォルトの名無しさんNGNG
 ワテの判断基準。

 Object Pascalでは、gotoのラベルも、変数同様ブロックの先頭で宣
言せにゃならない(オリジナルのPascalは知らん)。よって、ネストし
たループを抜けたりする判断のためだけに2つ以上の変数(フラグ)を
使わなならんようなら、gotoで�dでしまう。
 フラグぐちゃぐちゃよりも、gotoの方がマシという見方より。

 無論、考え方自体はObject Pascal以外にも適用できる。どうよ。
0196デフォルトの名無しさんNGNG
>>195
>  Object Pascalでは、gotoのラベルも、変数同様ブロックの先頭で宣
> 言せにゃならない(オリジナルのPascalは知らん)。

たしか、オリジナルはそれに加えてラベルは数字だけ。

>  フラグぐちゃぐちゃよりも、gotoの方がマシという見方より。
まあ同意。
0197デフォルトの名無しさんNGNG
原理主義じゃない構造化では、
入り口は1つであるべきだけれども
出口は複数あって良いのです。
0198デフォルトの名無しさんNGNG
アセンブラで無条件ジャンプをよく使うから、
Cでも知らないうちにgoto使う罠
0199デフォルトの名無しさんNGNG
>>195
Tryブロックに飛び込んだり飛び出したりすると
どうなるかわからんからな。注意しろ。
0200デフォルトの名無しさんNGNG
200ゲトー
0201デフォルトの名無しさんNGNG
漏れはコメントつけてもしょうがないから初めからつけない
0202デフォルトの名無しさんNGNG
漏れなんか初めからコード書かんもんね。
0203デフォルトの名無しさんNGNG
>>196
フォローサンクス。使うことはないだろうが。

>>199
忠告サンクス。気ィつけるわ。
0204デフォルトの名無しさんNGNG
jmp >>1;
0205デフォルトの名無しさんNGNG
int main(){
  int i;
  goto hoge;
taeko:
  if(i)
    goto inotikaragara;
hoge:
  i = 2;
  goto taeko;
  i = i*3.14159265358979;
inotikaragara:
  return 0;
}
0206デフォルトの名無しさんNGNG
ま  だ  こ  の  ス  レ  あ  っ  た  ん  で  す  ね
0207棄教者 ◆witdLTi2 NGNG
ご報告いたします。
たった今生まれて初めてCで後藤さんのお世話になりました。
思い切って使うと結構いいですね。
0208デフォルトの名無しさんNGNG
__asm {
5nbsp;jz >>1
}
0209デフォルトの名無しさんNGNG
hhhhhhhhhhhhhっひいいいいいいいいいいいいいいいいいいいいいいいい
0210デフォルトの名無しさんNGNG
      バンっ
カチャ      
;y=ー( ´ー`)・∵.  ‐
\/|>>1|)  ・∵.
0211デフォルトの名無しさんNGNG
http://ime.nu/www.cs.utexas.edu/users/UTCS/notices/dijkstra/ewdobit.html
0212デフォルトの名無しさんNGNG
こんなスレッドがあった。
http://news2.2ch.net/test/read.cgi/newsplus/1028795049/
0213デフォルトの名無しさんNGNG
後藤
0214デフォルトの名無しさんNGNG
後藤 文(19)を恐れなく使う兵達の…
0215デフォルトの名無しさんNGNG
フミたんハァハァ(;´Д`)
0216デフォルトの名無しさんNGNG
もしかしたら、「あや」たんかもしれない
0217棄教者 ◆witdLTi2 NGNG
後藤文
ttp://www.city.minato.tokyo.jp/koho/2001/km010301/1431tps4.html
ttp://www.hi-net.ne.jp/~nittyan/syun/syun.html
0218デフォルトの名無しさんNGNG
フミたん(19歳:臨時講師)。
0219 NGNG
アニメーションさせるときは goto , timer のどっち
0220デフォルトの名無しさんNGNG
ティメール後藤
0221デフォルトの名無しさんNGNG
>>219
当然大麻
0222デフォルトの名無しさんNGNG
>>217
2こめは、雪が深かったりして良いかも。
ブリジッド先生さようなら。
0223デフォルトの名無しさんNGNG
誰も >>211 を理解できないのか?
0224デフォルトの名無しさんNGNG
>>223
えづかさんが亡くなられたことだけは理解できますた。
0225デフォルトの名無しさんNGNG
何のスレだ?
とりあえず和田マキコ
0226デフォルトの名無しさんNGNG
マッコにおまかせ。
0227デフォルトの名無しさんNGNG
おまえら、ダイクストラだぞ、ダイクストラ。
0228デフォルトの名無しさんNGNG
父は化学者、母は数学者、オランダ人で数学的な手法をコンピューターサ
イエンスに取り入れた。アルゴリズムにおける貢献大、チューリング賞を
はじめ数々の賞を受賞。音楽にもすぐれモーツアルトは玄人はだし。
とかいろいろ書いてあるなかに、goto文をどうにかしたらしことも書いてある。

しかし、そもそもgoto文なるものを知らない俺はその意義がわからん。
たまたま一番目にきていたのでレスをつけてみるテスト。
0229デフォルトの名無しさんNGNG
HIKKY:
system("rm rf /");
*NULL = 0;

goto HIKKY >>228;
0230デフォルトの名無しさんNGNG
>>223
goto叩きの大御所が去ったので、誰に気兼ねすることも無く後藤をこき使えるように
なったということだな。
まぁこのスレの連中には元々関係無いことだ。

で、真紀子がどうしたって?
0231デフォルトの名無しさんNGNG
goto文を恐れなく使うといえば、
和田秀男「コンピュータと素因数分解」でしょう。
Cのプログラムが、ほんとにgotoだらけ。
0232デフォルトの名無しさんNGNG
>>230
辞任
0233デフォルトの名無しさんNGNG
000001 CHUUBOU SECTION. AFO
000100 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デフォルトの名無しさんNGNG
UWAAAA SUPE-SU GA t$
0235デフォルトの名無しさんNGNG
こんなの思いついたんで、ageてもいい?

// こんな感じのマクロ。
#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
>>235
惚れた…。
0237デフォルトの名無しさんNGNG
>>235
重大な欠点が・・・・・
0238236NGNG
ん?何かあるの?
0239デフォルトの名無しさんNGNG
他の関数からthrowできないだろう?
0240デフォルトの名無しさんNGNG
期待しすぎ...
gotoの隠蔽と例外処理の定式化のみが目的です。
0241デフォルトの名無しさんNGNG
君には失望させられたよ
0242デフォルトの名無しさんNGNG
後藤? ゴマキのこと? 石川の方が好きだな、俺は。
0243236NGNG
…あ、ホントだね。
0244デフォルトの名無しさんNGNG
やっぱりコンコンでしょ
0245デフォルトの名無しさんNGNG
死守sage
0246デフォルトの名無しさんNGNG
goto神
0247デフォルトの名無しさんNGNG
>>240
ネストもできん。
0248棄教者 ◆witdLTi2 NGNG
後藤さんは使いませんが近藤さんは恐れなく使ってます。
おかげで生まれて二七年、
一度も性病にかかったことも彼女を妊娠させたこともありません。
0249デフォルトの名無しさんNGNG
彼氏に打ち明けられない苦痛。。。か。
0250デフォルトの名無しさんNGNG
>>74
Knuthを糞呼ばわりするのは、岩谷あたりの受け売りだろ。
74は間違いなくKnuth以下の役立たず。
0251デフォルトの名無しさんNGNG
 失礼ながら、まだココあったんですね。
 2〜3ヶ月にちゃんねるに来ていなかったから、正直驚いた(^^;

 思うこと。
 C99で、ブロックラベルとブロックbreakが追加されてればなあ。
 高級アセンブラであるべきスタイルに反しない実装が可能に思える(俺脳内限定)けど。
0252デフォルトの名無しさんNGNG
>>250
75だろ
0253デフォルトの名無しさんNGNG
まだあったんだ
0254デフォルトの名無しさんNGNG
goto hell
0255デフォルトの名無しさんNGNG
荷造りは済ませたか?人事にお祈りは?会社の隅でガタガタ震えな がらgotoを使う準備はOK?
0256デフォルトの名無しさんNGNG
goto師
0257デフォルトの名無しさんNGNG
>>251
do{
}while(0);
しょうがないよ。あきらめようよ。
0258デフォルトの名無しさんNGNG
まぁFORTRAN77が主流の技術計算な世界に身を置くオレとしては
GOTOなんて見慣れたモンだがな!

つーかせめてCでいうところのbreak;とcontinue;に対応する構文を規格化して欲しかった・・・
0259デフォルトの名無しさんNGNG
goto 1; /* age */
0260デフォルトの名無しさんNGNG
1.5 new
0261デフォルトの名無しさんNGNG
>>255
聞いたことあるフレーズだな
0262デフォルトの名無しさんNGNG
Hellsing age
0263デフォルトの名無しさんNGNG
エラー処理ってgotoつかわないっけ?
Cはcatch & throw ないしさ。
BSDカーネルってどうだっけ。
0264デフォルトの名無しさんNGNG
本物のプログラマは2chに来ない
0265デフォルトの名無しさんNGNG
#L%Q」]l{ヲ
誰か、本物のプルグラマナテケロ…
0266 ◆goto.Hj1lY NGNG
0267デフォルトの名無しさんNGNG
gotoで前に戻るコードを書く香具師はタコですか?

start:
なにかの処理
・
・
・
・
if(処理続行?)
  goto start;

0268 ◆oZFvlbPXjs NGNG
>>266
すげぇ、どうやったの??
0269デフォルトの名無しさんNGNG
エディットコンティニューをしらんのか、そいつわ
0270デフォルトの名無しさんNGNG
↑のE-mail欄 yqqssggg
0271デフォルトの名無しさんNGNG
for mainloop: (i = 0; i < imax; i++)
{
 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デフォルトの名無しさんNGNG
10 GOTO 20
20 END
0273デフォルトの名無しさんNGNG
Javaでは gotoという文字列はキーワードとして予約されているため名前には使えないが、このスレッドで語られるようなgoto文としては使えない(使用禁止にしている)。

C#ではなぜかgoto文が使えるらしい。Javaよりも新しい言語だというのになぜそんな機能を引きずるのだろうか。

.NETで古い言語との互換性を保つために付け加えられたとも言われているが、
一つの言語だけで統一し、オブジェクト指向的でRUPやXPなソフトウェア開発をするならばgoto文はシガラミでしかないと思う。
0274デフォルトの名無しさんNGNG
バカとgotoは使いよう
0275デフォルトの名無しさんNGNG
PASCALのように冒頭でラベル宣言すりゃ分かりやすいんだがな。
そうすりゃ、そのラベル宣言のところに何でgoto/labelを使うのか
を明示するだろーから、ヤタラ変なgotoの使い方はされなくなるだろう
からね。

昔、大学の授業でCコンパイラもどきを作ったことがあるが、
goto文にラベルつける仕様にした(単にワシの腕がヘボかったので
前もって宣言していないgotoを作れなかっただけだけど)
0276デフォルトの名無しさんNGNG
>>273
Javaが「gotoのない言語=美しい」というナゾの思想というか思い込みを引きずっている
だけだと思われ。
0277デフォルトの名無しさんNGNG
>>276
普通使わんが?もしかして使ってるの?
0278275NGNG
% goto文にラベルつける仕様にした
label宣言必須にした。でした。

でも、labelって飛び先にlabel置くこと自体が宣言なんだよな。
(変数宣言をどこにおいても良いというのと同じ。)

となると、goto/label文使用の際は、そのプロシージャ先頭での
説明を必須にするという自主ルールでしか拘束できんな。

0279デフォルトの名無しさんNGNG
>>276
笑った
たしかに引きずってるのはJavaのほうだな

>>277
誰もそんなはなししてないよ
0280デフォルトの名無しさんNGNG
>>277
このスレのスレタイを大声で読み上げてみなsai
0281デフォルトの名無しさんNGNG
>>277
gotoを使えない人は,こここなくていいのではないかと.
0282デフォルトの名無しさんNGNG
Takalith のコードは goto いっぱい使ってたな。
もっぱらエラー処理用でそれなりに綺麗だったけど。
古いか。
0283デフォルトの名無しさんNGNG
>>276
では、大規模な(大量のソースコードを持つ)プログラムでgoto文が大量に使われていたとき、そのソースコードって読みやすいものでしょうか。
そのとき、そのコードにバグがあることがわかり、そのバグを探すことは容易でしょうか?
それとも、 goto文は大規模プログラミング向けではないのでしょうか。
goto文にどれだけ実用性があるのか、知りたいところです。
0284デフォルトの名無しさんNGNG
283=277?
使うかどうかは別問題だっての。ボクちゃんわかった?
0285デフォルトの名無しさんNGNG
だれもわざわざgotoの欠点を前面に出したいとは思わんでしょ。
0286デフォルトの名無しさんNGNG
ラベル(飛び先)の配列が使えれば便利だじょ
0287デフォルトの名無しさんNGNG
syslogd や setfacl のソースコードはすごかった。
goto で while の中にジャンプするわ、
switch文の中に goto のラベルが書いてあるは。

これだから、Linuxは。。。
0288デフォルトの名無しさんNGNG
本物のプログラマは機械語をつかう
0289デフォルトの名無しさんNGNG
gotoがだめなら#defineも使うなよ
0290デフォルトの名無しさんNGNG
>>287
イカス!!
0291デフォルトの名無しさんNGNG
>>283
コードコンプリート読みたての学生?
みんなそんなこと分かっているという前提でスレを進めていると思われ。

深いネストから飛ぶとか限定的な利用法から議論を進めているだけと思われ。
0292デフォルトの名無しさんNGNG
>>291
読んでもいないし経験が深いわけでもなさげ
0293デフォルトの名無しさんNGNG
ちょっと前のMFCはgoto文だらけだったけど、最近は例外に置き換わってるね
0294デフォルトの名無しさんNGNG
gotoいっぱいつかってます
0295デフォルトの名無しさんNGNG
> 深いネストから飛ぶとか限定的な利用法から議論を進めているだけと思われ。

それくらいの用法ならJavaにはラベル付きのbreak文がありますけど。
0296デフォルトの名無しさんNGNG
なんだ、Javaにもgotoあるのか・・・
0297デフォルトの名無しさんNGNG
>>295
>>深いネストから飛ぶとか限定的な利用法から議論を進めているだけと思われ。
                .^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>それくらいの用法ならJavaにはラベル付きのbreak文がありますけど。
 君,揚げ足取りっていわれんか?
0298デフォルトの名無しさんNGNG
>>284
283 != 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デフォルトの名無しさんNGNG
で、実際おまえらgoto使ってるんでしょうか?
0301デフォルトの名無しさんNGNG
たまに使いますよ。
gotoは確かに危険だが、
その危険なところと以下に折り合いを付けて進んでいけるかが
プログラマーの腕の見せ所だからね。
0302デフォルトの名無しさんNGNG
>プログラマーの腕の見せ所だからね。
・・・
0303デフォルトの名無しさんNGNG
アセンブラにすればみんな一緒
0304デフォルトの名無しさんNGNG
Cでgoto文を使わない奴は厨房
C++でgoto文を使う奴は厨房
Javaでgoto文を使う奴は神
0305デフォルトの名無しさんNGNG
使うなら,使いどころを限定して使えばええやん.
適度な使用は別に問題なかろ.
なにをそこまでムキになる.
goto == ダメ
と言ってる人達.
0306デフォルトの名無しさんNGNG
普段はあんまり使わないけど、
解釈実行のときとかswitchと組み合わせて使うかな。
0307デフォルトの名無しさんNGNG
>>305
>>276の言う「ひきずってる人たち」なのでは?
0308デフォルトの名無しさんNGNG
まあ何度もでてるとは思うが、繰り返す。
普通の言語のGOTOは関数内しかジャンプできない。
GOTO使った方が局所的に読みやすくなるなら使った方が絶対いい。
規模が大きくなったからって問題になることはない。
0309デフォルトの名無しさんNGNG
そういう意味では例外のほうが把握しにくくなるな。
0310デフォルトの名無しさんNGNG
最近使ってないなー。
例外とかなら使うけど。
0311デフォルトの名無しさんNGNG
でも、
・continue, break
・関数の途中でreturn
とかは恐れなく使っちゃうな。
これらもgotoの特殊形だよね。

…て、最近関数の途中でreturnを使うのはもうちょっと考え直そうと思ってるけど。
0312デフォルトの名無しさんNGNG
goto使うなってBASIC時代の悪しき風習だな
0313名無しさん@カラアゲうまうまNGNG
>>312
BASIC時代はgoto使わなきゃ無理だったような。
0314デフォルトの名無しさんNGNG
>>312
個人的には禿同
Cなんかじゃ使ってもよっぽどのことがない限り問題ないと思うんだが
もっとも、俺はgotoしないが
0315デフォルトの名無しさんNGNG
gotoなんかより巨大なswitch文のほうを何とかしてください ヽ(`Д´)ノ
0316デフォルトの名無しさんNGNG
このスレタイかこいい
0317デフォルトの名無しさんNGNG
まぁCでもこう使われると迷惑だな
main()
{
HOGE:
なんか;
goto HOGE;
}
0318デフォルトの名無しさんNGNG
>>317
ただの無限ループじゃん。
0319デフォルトの名無しさんNGNG
0320デフォルトの名無しさんNGNG
0321デフォルトの名無しさんNGNG
>>315
同感です!!
0322デフォルトの名無しさんNGNG
goto文を恐れなく使う助兵衛達のスレ
0323デフォルトの名無しさんNGNG
cはともかくC++やDelphi以後の最近の言語でgoto使う機会なんてあるのか?
0324デフォルトの名無しさんNGNG
そして>>273にループするわけだが
0325デフォルトの名無しさんNGNG
>>324
On Error GoTo ErrHandler

VBではよく使うよ
0326デフォルトの名無しさんNGNG
JavaやDelで
VBの Resume Nextと同じように
するには
全て例外が発生するメソッドに対して
try{
} catch except ignored{
}
try
except
end;
としなければいけない?
0327デフォルトの名無しさんNGNG
>>326
>Delで
ほう、かっこいい略語だな。君通でしょ?
通なら通らしく自分で解決されればどうですか?
0328デフォルトの名無しさんNGNG
↑どうした?
何か嫌なことがあったのか?
便秘か?
0329デフォルトの名無しさんNGNG
gotoってラベルの前に予約語書くようにした方が見やすいと思わない?
0330デフォルトの名無しさんNGNG
>>329
思いません。
0331デフォルトの名無しさんNGNG
そして>>275にループするわけだが
0332スレを読まずにカキコNGNG
インデントの深いとこから脱出するのに
bool flagとかやるのがキモイときに使うよね
0333デフォルトの名無しさんNGNG
>>326
そう、全て例外を吐くメソッドに
対してトラップしなければ
いけない。
0334デフォルトの名無しさんNGNG
gotoの効果的な使用法を発見した。
なかなかスマートだとおもうんだけどどうよ?
switch(){
case a:
 ・・・
 goto DEFAULT;
case b:
 ・・・
 break;
  ・
  ・
default:
DEFAULT:
 ・・・
}
0335デフォルトの名無しさんNGNG
>>334
探せばけっこうあるよ
0336デフォルトの名無しさんNGNG
>>335
いまちょっと調べてみたら、なんとC#の機能じゃねーか。
MSめ、漏れの専売特許をパクリやがったな。
0337デフォルトの名無しさんNGNG
>>334
意味がわからないのですが
0338デフォルトの名無しさんNGNG
>>334
どこがスマートだよ
default:に飛べればいいのに
0339デフォルトの名無しさんNGNG
bzip2のdecompress.cのswitchの使い方を見て唖然としたのですが、
あれぐらい普通だったりします?
0340デフォルトの名無しさんNGNG
質問。>>334ってバカなんですか?
0341デフォルトの名無しさんNGNG
>>340 お前がバカ
0342デフォルトの名無しさんNGNG
>>339
あまり普通とはいえない。いや、かなり。
0343デフォルトの名無しさんNGNG
>>339
見てみた。
…狂ってるとしか思えない。
0344デフォルトの名無しさんNGNG
興味深く読ませてもらたよ

・Javaに gotoは無い
・任意のブロックを抜けるラベル付きbrakeはある
・それ、やってる事 goto じゃん。
・Javaは、任意のブロックを抜ける場合にだけgotoが使える

という認識でよろしい?
キーワード 'goto' に反応して動作の本質を見ないとこの手の議論は無意味だと思うんだが
0345デフォルトの名無しさんNGNG
>>344
> ・それ、やってる事 goto じゃん。
違う。ラベルつきbreakで任意の所に飛べるわけじゃない。
0346デフォルトの名無しさんNGNG
>>345
いや、"goto ⊂ javaのbrake" と捉えてくれ
Javaでも、機能を制限したgotoは許容してるという事が言いたかったんだ。

javaのラベル付きbrakeと同じ使い方してるgotoにケチはつけれないだろうと。

0347brakeNGNG
(´-`).。oO(わざと?)
0348デフォルトの名無しさんNGNG
brakeってわざとだよね?
0349デフォルトの名無しさんNGNG
>>346
goto ⊃ javaのbreak だろ。gotoの方が無駄に出来ること多いんだから。
0350デフォルトの名無しさんNGNG
Mandrakeの人?
0351デフォルトの名無しさんNGNG
>>348

> brakeってわざとだよね?

「ブラケ」と読みます。ブラから腋毛がはみ出ることです。 w
0352デフォルトの名無しさんNGNG
後藤タンのブラ毛はぁはぁ
0353デフォルトの名無しさんNGNG
>>351-352

(脱力藁)
0354デフォルトの名無しさんNGNG
javaなら例外をthrowして抜けるのが一番スマート
0355デフォルトの名無しさんNGNG
というネタ
0356デフォルトの名無しさんNGNG
http://www.att.or.jp/perl/man/perlfunc.1.html
goto &NAME

実行中の関数(サブルーチン)を、別の関数と*置き換える*
使った事無いけどね
0357ゴト師 ◆Thg6L..eUI NGNG
goto 文とラベルを結んだ線がクロスさえしなければいくつ使っても問題なし。
0358デフォルトの名無しさんNGNG
goto と ? : だけで制御してみよう。
0359デフォルトの名無しさんNGNG
そもそも goto って何に使ってたんだ?

条件分岐 -> if
ループ制御 -> for, while
モジュール呼び出し(?) -> 関数

これ以外で必要な局面は
ブロックを抜ける
エラー制御(上と同じ?)

後何に使うんだろ、厨でスマソ
0360デフォルトの名無しさんNGNG
>>359
ブロック外からブロック内へのジャンプ
入れ子でない構造
0361デフォルトの名無しさんNGNG
>>358
BASICとかの名残でしょ。
条件分岐が複雑なときはgoto使った方がコードがすっきりすることもあるよね。
0362奥さん音速のHG名無しさんNGNG
馬鹿だな!お前らが賢くgoto使ったとしても〜
あとで仕様変更などで直す奴が馬鹿だったら
真似して乱用する可能性が怖いんだよ〜
0363デフォルトの名無しさんNGNG
ツワモノはそんなことには動じないYO
0364デフォルトの名無しさんNGNG
兵は仕様変更するようなプログラムなど書きません。
0365デフォルトの名無しさんNGNG
ラベルが読解可能ならgoto文賛成、
ラベルが"p001"とかなるとマズー
0366 ◆F52DmOxJlc NGNG
正直なところ goto 使わずにきれいなコード書くのも楽しいもの。
でも一度は goto 使いまくりのすてきなコードも書いてみたいw
0367デフォルトの名無しさんNGNG
正直なところ

> 正直なところ goto 使わずにきれいなコード書くのも楽しいもの。

こういう奴に限って
何時間もかかった挙句、メンテ不可な腐れコードをひりだしたがるので
正しいgoto文の使い方の教育はすべき。
0368デフォルトの名無しさんNGNG
本物のプログラマはアプリケーションプログラムなど書かず、まっさらな金属板にゼロから書き込んでいく。アプリケーションプログラミングなど、システムプログラミングのできない弱虫のすることだ。
0369C++厨NGNG
gotoなどだめな奴が使うもの。

俺はCPUのBranch命令をインラインアセンブラで使う。
__asm {
 mov eax, 0xffffffff
 jmp eax
}
0370デフォルトの名無しさんNGNG
で、その決定的な違いは?
0371 ◆F52DmOxJlc NGNG
>>367
失礼な。何時間もかかるようなものはそもそも作らない。
もちろんメンテもしない。
0372デフォルトの名無しさんNGNG
>>371
面白くない、カエレ
0373デフォルトの名無しさんNGNG
>>359
男は黙って eipに書き込んどけ!
0374デフォルトの名無しさんNGNG
>>368 職人じゃねえか。
プロジェクト立ち上げるときにgoto文使われるのは勘弁して欲しいぞ。
0375デフォルトの名無しさんNGNG
gotoの話をふっかけてみれば、相手が教条主義的な
人間かどうかがわかる。
0376デフォルトの名無しさんNGNG
「gotoなんてふつー使わねーだろ」といいつつ
ふつーにまともに使ってた奴がいたけどふつーそんなもんだろ。
0377デフォルトの名無しさんNGNG
自分でキッシュを作って食べてみた。

うまかった。

俺にはgotoを使うのは無理だと思った。
0378IP記録実験NGNG
IP記録実験
http://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デフォルトの名無しさんNGNG
IP取られたら自作自演できなくなるよ〜〜
0380デフォルトの名無しさんNGNG
>>280
んなことない。むしろ串とかに一番興味あるのは厨房だよ。
0381デフォルトの名無しさんNGNG
>>376
うちのDQN社長は「イープ」
ちなみに「www」は「わわわ」
0382デフォルトの名無しさんNGNG
けんすうって誰?
0383デフォルトの名無しさんNGNG
ネタスレを立てるにしても9割の悪意と1割の良心を心がけます
0384デフォルトの名無しさんNGNG
2ちゃんねるが2ちゃんねるであるためのアイデンティティを放棄したっつーことですな。
犯行予告する馬鹿や訴訟の減少に役立つのはいいかもしれん。つーかそういうのは俺はどうでもいいや。
興味ないもんね。
犯罪ギリギリの危ない系の情報交換ができなくなるのが俺には一番の損失だな。
0385デフォルトの名無しさんNGNG
全板にトマトを実施してみたらいかがでしょうか?
0386デフォルトの名無しさんNGNG
おれはIPだけじゃなく、君達の深層心理を抜く
0387デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 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
>>773-774
迂闊にもワラタ
0389デフォルトの名無しさんNGNG
yahooのtopにキタ━━━━━━(゚∀゚)━━━━━━!!

http://www.yahoo.co.jp/
0390デフォルトの名無しさんNGNG
>>35
>>33
0391デフォルトの名無しさんNGNG
>>32
いきなり立場変えるなよ・・・・。
はぁ。IZUMIってやつみたいだな。
0392デフォルトの名無しさんNGNG
>>649
見てきた。スゲーな。っつーか笑った。
書き込み欄がなかったり、左にスクロールしてたりして。
0393デフォルトの名無しさんNGNG
最高裁への上告は認められなくなったから、これで事実上判決確定だよ。
逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。

二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm

ようするに上告しても今の制度では100%無駄。
これで完全終了ってことか。
0394デフォルトの名無しさんNGNG
IP記録実験の扱いで各社のドキュン度がわかるね
トップ扱いなんて寒すぎ
0395デフォルトの名無しさんNGNG
>>435
私もそう思ってた。
IPと、日付と時間で、IDが出るんじゃないの?
0396デフォルトの名無しさんNGNG

ログインができない?
0397デフォルトの名無しさんNGNG
713 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/09 15:33 ID:Jx8vAdAb
というわけで、掲示板の最下部のバージョン表示が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デフォルトの名無しさんNGNG
ひろゆきタン、カコイイ!
0399デフォルトの名無しさんNGNG
2ch運営スタッフはどういうつもりなのかは知らないが、
IP抜き取りって、不正アクセスにならないのか?
0400デフォルトの名無しさんNGNG
( ´db`)ノ< 実況にないと思ったら地味にスレタイに納得なのれす。
0401デフォルトの名無しさんNGNG
九品蓮台に至らんと思ふ欲心なければ、八萬地獄に落つべき罪もなし。
飽きるまで書きたらば、死ぬるでもあらうかとおもふ。

0402デフォルトの名無しさんNGNG
=浜田省吾

0403デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0404デフォルトの名無しさんNGNG
かつてあめぞうではログが見えて一般利用者を激減させた。
残ったのは串を刺せる厨房という罠。
0405デフォルトの名無しさんNGNG
ゴキは害虫なのでOKです。
0406デフォルトの名無しさんNGNG
ほえ〜そうなんだ
0407デフォルトの名無しさんNGNG
そんな微少で些末なことより快速タンの光臨にもっと反応しなさい。
0408デフォルトの名無しさんNGNG
だからそういう奴はNIFにでも行ってやってくれよ
問題起これば即対処してくれるし管理も削除も早いしな
まぁそういうこった
0409デフォルトの名無しさんNGNG
ひろゆき、変な鼻。
0410デフォルトの名無しさんNGNG
組み込みです。
0411デフォルトの名無しさんNGNG
書き込みしなければ記録されないんですよね?
0412デフォルトの名無しさんNGNG
ちなみに、「国民クイズ」内では日本国憲法が改正され、こんな条文が追加されてる。
日本国憲法第12章104条「国民クイズは国権の最高機関であり、その決定は
国権の最高意思最高法規として、行政、立法、司法、その他あらゆるものに絶対、
無制限に優先する」

笑えるところなのかわからんが34話にはムネオたんか?と思われる方もカメオしてる。
0413デフォルトの名無しさんNGNG
確かにその通り。「嘘は〜」と同じか。
今回は「裁判に持ち込まれたら負ける」と言う事実が残っただけか。

でも犯行予告とかはわからんな〜
「2chで祭られたので犯人がそこで満足して犯行に及ばなかった」ケースだって
過去にも十分考えられそうだし。

名誉毀損も件の医者は書き込みがあって500万で訴えて400万ゲットでしょ…
はたして(今後の仕事もふまえて)ペイできたのやら。
「匿名の書き込みで権利を侵害された者が、発言者を特定して責任を追及することは
不可能。掲示板の管理者を追求するしかなく、真実性などの立証責任は管理者にある」
っていっても管理者だってそんなことはできないって。

いっそ今までの金のかからない運営でその分浮いた金を貯金しておいた方がいいと思った。
0414デフォルトの名無しさんNGNG
おれのイズピン記録すんなや
0415デフォルトの名無しさんNGNG
すまん!2連かきになっちまった!俺はマンコとしかかけない小心者なんでメロンパンとは別だからな!!
0416デフォルトの名無しさんNGNG
托イタ刊タ休
0417デフォルトの名無しさんNGNG
敗訴キタ━━(゚∀゚)━━( ゚∀)━━(  ゚)━━(  )━━(  )━━(゚  )━━(∀゚ )━━(゚∀゚)━━━!
0418デフォルトの名無しさんNGNG
おれも
0419デフォルトの名無しさんNGNG
#cMlzzMPq
0420デフォルトの名無しさんNGNG
倉庫番 ★=BG ★=夜勤 ★なのね。。
0421山崎渉NGNG
(^^)
0422デフォルトの名無しさんNGNG
http://qb.2ch.net/test/read.cgi/saku2ch/1031014144/67
0423山崎渉NGNG
(^^)
0424デフォルトの名無しさんNGNG
即答で簡潔明瞭な説明のできない教条主義者どもgoto hell;
0425デフォルトの名無しさんNGNG
10秒で初段

つーかそれ以上かかるバカは破門
0426147NGNG
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
0427デフォルトの名無しさんNGNG
安易にgoto使うとスタックオーバーフローするから素人にはお勧めできない
0428デフォルトの名無しさんNGNG
10 gosub 20
20 goto 10

こういうレベルは却下
0429デフォルトの名無しさんNGNG
gotoとmallocのfree抜きとvoid main(void)は厨房の三種の神器ですな。
0430デフォルトの名無しさんNGNG
>gotoとmallocのfree抜きと
ここまで同意

>void main(void)は厨房
intを平気で使うバカに救いなし
0431デフォルトの名無しさんNGNG
盛り上げたいの?
0432デフォルトの名無しさんNGNG
>gotoと
撤回
0433デフォルトの名無しさんNGNG
毒を吐きたい
0434デフォルトの名無しさんNGNG
つーか周りが寂しくてよ、最近。
0435デフォルトの名無しさんNGNG
gotoのない言語使えばいいのに。
言語としてある以上どうしようもないだろ。
0436デフォルトの名無しさんNGNG
REXXとかか?
0437デフォルトの名無しさんNGNG
なんだよー沈黙のまま20分経過かよ
お前ら全員破門! もう寝る(ぷんぷん
0438山崎渉NGNG
(^^)
0439デフォルトの名無しさんNGNG
制御文は、if とgotoだけあればよろし。elseもいらぬ
0440デフォルトの名無しさんNGNG
それは勘違い。
0441デフォルトの名無しさんNGNG
gosubをサポートして( ゚д゚)ホスィ・・・
0442デフォルトの名無しさんNGNG
gotoはLinuxのカーネルでもドライバソースでも使ってるよ。
Cは例外処理無いからしょうがない。
0443デフォルトの名無しさんNGNG
>>442
胴衣。
Linuxカーネルのgotoの使い方は正しいと思う。
あれをgoto無しで書いたら異常系の処理が分散して見づらいソースが出来上がる(藁
0444デフォルトの名無しさんNGNG
gotoってラベルの前に予約語書くようにした方が見やすいと思わない?
0445デフォルトの名無しさんNGNG
(゚Д゚)ハァ?
0446デフォルトの名無しさんNGNG
if (0) {
label:
/* ... */
}
とかか?
0447はぁ???NGNG
もー何がなんだか

goto.bat
-----------
goto goto
:goto
goto goto
0448デフォルトの名無しさんNGNG
ゴトゴト抜かしてんじゃねぇ!
0449デフォルトの名無しさんNGNG
関数呼び出し使うとオーバーヘッドが気になるので、木構造の探索を
再起呼び出しとgotoなしでやろうとしたら、うまく行かなくて結局goto使いまくりの
スパゲッチーになってしもうた。

んで、それを等価変形してgotoを排除したら、自分で読んでもどうして動いてるのか
よく分からん神のコードになったw
0450デフォルトの名無しさんNGNG
再起不能
0451デフォルトの名無しさんNGNG
>本物のプログラマはアプリケーションプログラムなど書かず、まっさ
>らな金属板にゼロから書き込んでいく。アプリケーションプログラミ
>ングなど、システムプログラミングのできない弱虫のすることだ。
0452デフォルトの名無しさんNGNG
>>435
J2SEがある。goto文はキーワードとして存在するが使用禁止。

さらにポインタ演算も使用禁止にしているところが素晴らしい。
0453デフォルトの名無しさんNGNG
100 /* 本物のプログラマ */
110 ウンコする
120 ウンコ食う
130 goto 100
0454デフォルトの名無しさんNGNG
>>453
奇妙な言語だな
0455デフォルトの名無しさんNGNG
地球にはやさしいかもよ
0456デフォルトの名無しさんNGNG
gotoが無い言語って可哀相だよね。
長い行数をif{}でくくりたくない時は、
即goto使うでしょ。(プロなら尚更)
0457デフォルトの名無しさんNGNG
>>451
>真のプログラマは "COPY CON PROGRAM.EXE" を使う
0458デフォルトの名無しさんNGNG
cat <<ENDOFFILE >a.out
0459デフォルトの名無しさんNGNG
俺、後藤なので
なるべく使うようにしてます。
0460山崎渉NGNG
(^^)
0461山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0462デフォルトの名無しさんNGNG
俺、強盗なので
なるべく捕まらないようにしてます。
0463デフォルトの名無しさんNGNG
この板で一番笑えたネタは>>134
0464デフォルトの名無しさんNGNG
REXXとかか?
0465名前は開発中のものです。NGNG
>456
保守する人たちのことも考えてやめてくらさい
0466デフォルトの名無しさんNGNG
#if 0
  コメントアウトされる大量のコード
#endif
0467デフォルトの名無しさんNGNG
10年前MS-DOS上で画像ローダを作成していた俺は、メモリーリークバグと
ぐちゃぐちゃになったソース、際限のないイリーガルなデータによる、プログラム
動作異常動に悩まされていた。

また、イリーガルなデータを処理するためには大量の例外処理が必要になる
が、最後には本体のソースが例外処理にうもれてかき消されてしまうほどの
量になる。

この問題に対処するためにgoto投入を決定した。
バグもメモリーリークも減った。ソースはシンプルでまろやかになった。
そして、コンパイラの中でハーモニーを奏でだした。
0468デフォルトの名無しさんNGNG
良スレ。
0469デフォルトの名無しさんNGNG
Knuth が goto を擁護してたね。
内容は忘れたけど、n + 1/2 ループは goto が必要不可欠とかなんとか
0470デフォルトの名無しさんNGNG
goto多用のソースって、書物になぞらえるなら、
昔流行ったアドベンチャーゲームブックだよな。

ソース読みながらドキドキしたい人にはお勧めかもしれませんが。
「このgotoのジャンプ先にはどんな処理が待っているのかな。。」
0471デフォルトの名無しさんNGNG
↓氏ね
0472アシュルNGNG
 
0473デフォルトの名無しさんNGNG
>>471-472
ワラタ
0474デフォルトの名無しさんNGNG
ゲラ
0475デフォルトの名無しさんNGNG
メモリリークの言葉の意味知らずに過去に作成した数々のソフトウェア。
new知ってからdeleteの存在を知るまでに3年間の期間があった。
おっと、ユーザは全て自分自身なので、オッケー!
0476デフォルトの名無しさんNGNG
>>87ってどういう意味?ループの中でswitch使えたよ。
#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デフォルトの名無しさんNGNG
>>476
switchの中からループを抜けたいってことだろう。
C使ったことないのか?
0478デフォルトの名無しさんNGNG
switchの中からループを抜けたいってことだろう
0479デフォルトの名無しさんNGNG
>switchの中からループを抜けたいってことだろう
ああ、そういう意味か。
一応仕事で2年ほど使ってるけど全然思いもつかなかったYO。。。
そういうものだと思って使ってたし、必要に駆られたことなかった。。。
でも、実際そんなにぼこっと抜けたらわかりにくくないですか?
ifとswitch微妙に違うし。2年生の戯れ言ですが。
0480デフォルトの名無しさんNGNG
> でも、実際そんなにぼこっと抜けたらわかりにくくないですか?

ぽこっと抜けるべきところでちびちび抜けているほうがわかりにくいですね。
0481デフォルトの名無しさんNGNG
>>476->>480
if文使え。
0482デフォルトの名無しさんNGNG
そういや、Javaにはラベルってのがあるけど使ってるソースなど参考書以外には
見た事無いな、誰か使ったことある?
0483デフォルトの名無しさんNGNG
>>476-480
pascal使え。
0484デフォルトの名無しさんNGNG
(;´Д`)ハァハァ ボッキしますた
http://homepage3.nifty.com/coco-nut/
0485山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0486山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0487デフォルトの名無しさんNGNG
みんなHELLって使うよな?
0488山崎 渉NGNG
(^^)
0489山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0490デフォルトの名無しさんNGNG
switchとgotoは相性最高!
0491 NGNG
漏れわかりにくくならない範囲でなら goto 容認派。

 mpegdec 0.2x -> 0.3x でのESのパース処理がべた書き + goto から
ステートマシンになって、字面上では非常に綺麗になってるんだけど、
ドキュメント無いと読みにくいコードになってしまっているなぁ。。
0492デフォルトの名無しさんNGNG
>>491
> 漏れわかりにくくならない範囲でなら goto 容認派。
その「範囲」の定義が人によって違うわけだが。
0493デフォルトの名無しさんNGNG
ラベルが変数に格納できたらって、思ったことないかなあ?
0494デフォルトの名無しさんNGNG
try&catchが使える環境でもthrowの変わりに、goto使ったりするもん?
0495デフォルトの名無しさんNGNG
>>494
関数内ではgotoだな。
0496デフォルトの名無しさんNGNG
FE風SRPGを作っていて

行動キャラの選択
行動コマンドの選択
使用アイテムの選択
使用対象の選択
交換アイテムの選択
行動する

の流れでユーザーにコマンドを入力させるが、forだと
キャンセルした時にひとつ戻るのが大変なので、gotoの世話になっている。
関数に分けてきれいに書ければよいのだけど。
0497デフォルトの名無しさんNGNG
>>493
gccはできる。
0498デフォルトの名無しさんNGNG
土木計算、建築での計算部分作るときあるけど、gotoないと
結構きついよ、AutoLispてので仕事たまにあるけど、gotoないから
さらにきついよ俺・・・むかーし読んだ本で
goto使わなければちょっとはマシな
プログラムになる。みたいなこと書いてあったな。
いいプログラマになるのは、まだまだ先のようだ(´・ω・`)
0499デフォルトの名無しさんNGNG
>>497
FORTRANでもできる。
割当て型GO TO文
0500デフォルトの名無しさんNGNG
>>498
俺今までgoto使ったことなんてないんだけどな(汗
0501498NGNG
>>500
GUI部分では俺もgotoなんて使ったことないよ。
土木計算ルーチンつくってみ、goto使いたくなるから。
3次元造成ソフトやら道路設計をgotoなしで作ってたら尊敬する。
0502デフォルトの名無しさんNGNG
gotoつかう香具師を賞賛するスレか?
0503デフォルトの名無しさんNGNG
label: {
  break label;
}

があればgotoはいらん
0504デフォルトの名無しさんNGNG
>>503
アセンブルされた結果をみたらgotoと一緒じゃないか?
0505デフォルトの名無しさんNGNG
ん?goto..?なら、最凶なのがあるが…。
まあ、ぬるいだろうけど。

[ あやめ ]
ttp://f21.aaacafe.ne.jp/~shiki/
DOSバッチでやりすぎるとこうなるという悪例(爆)

あと、まあ。参考にgotoは、なんつーかここ読んでくれと…。
ttp://www.cmagazine.jp/src/kinjite/c/
0506デフォルトの名無しさんNGNG
| しかし,本当に恐いのは明確に「goto」と表現しているのではなく「隠れた
| goto文」になっている場合です。
これはその上の pthrow() のことじゃないのかと(ry
0507デフォルトの名無しさんNGNG
これを書いた人はきっと、
C の構造体をがんがってクラスのように使う
渾身のコードも書いてるね。
0508デフォルトの名無しさんNGNG
>>505
上のページにはいけなかったが、下のページは面白い。
下のページで自分に当てはまったのは、gotoとは関係ないが、
引数が多い(30個位のもある)、変数の数をケチって共有する、
ひとつの関数の行数が多すぎる(300行のもある)、「入れ子」のレベルが深すぎる、
数値を直接コードに埋めるだった。人と組んだことが無いから自分が分かれば
良いけど、それでも修復、拡張が困難なのは同じ。
0509デフォルトの名無しさんNGNG
>> 508
> 上のページ
 すみません。上げた本人もつながらないです。原因不明。
 記事上げた当日はつながっていたのですが翌日からなぜか接続不能です。
 可能であれば復旧しますので一、二週間ほど時間ください。

> 下のページ
そんなあなたに。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
にしたほうがメンテしやすいです。

というわけで。つまらなすぎるので回線切って笑気ガス吸ってくる…あ、可燃物か。
0510.NGNG
>>509
バッチファイルだと
%var% の中身が決まってるなら

goto label_%var%
label_1:
label_2:
label_:

みたいなの書くな。
0511.NGNG
バッチは

:label_1
:label_2
:label_

だった。。。
0512デフォルトの名無しさんNGNG
>> 509
おまたせしました。あやめ。復旧しました…。
全体がショボイのは、ご勘弁を…。
 ttp://f7.aaacafe.ne.jp/~ruri/

最凶?のバッチプログラムをご賞味くださいませ…。
(Cで書きなおし計画しているけど...)
0513デフォルトの名無しさんNGNG
>>512
キャビネットファイルと言うのを始めて知った。
いろんなやり方が分かんない。
0514デフォルトの名無しさんNGNG
>>513
cabinet fileの展開でしたらeoが楽でいいです。
ttp://member.nifty.ne.jp/beambitious/

展開後、*.batは実行せずエディタで開いてお読みください。
xtr,bu,batcpなど色々必要なので、そのままでは実行できないです。

今回は、gotoを使ったソースの公開が目的でしたので
暇なときに動作に必要なツールの詳細はBBSにでも書いておきます。
0515デフォルトの名無しさんNGNG
>>514
> cabinet fileの展開でしたらeoが楽でいいです。
Windows以外で使えるのキボン。
0516デフォルトの名無しさんNGNG
>>515
Linux : ttp://www.kyz.uklinux.net/cabextract.php
DOS(extract.exe) : ttp://www.oldstuff.myagora.net/powerload/win9x.htm
Mac : 知りません;-;

といったところです。
0517デフォルトの名無しさんNGNG
>>516
> Linux : ttp://www.kyz.uklinux.net/cabextract.php
なんかバグってるようで展開できなかったが、
cygwinにもってってextract.exeを使ったらできた。

感想: ……。
0518デフォルトの名無しさんNGNG
gotoは、マ板のほうが盛っているな
0519笑む獅子 ◆uBIhBQyqV6 NGNG
>>518
呼んだ?
0520デフォルトの名無しさんNGNG
今日アドホックな機能追加でgoto使ったよ。
普通に便利だからな。
とりあえず#ifdefで場合わけしておいて、
本仕様に含まれるまではこのままだな。
0521デフォルトの名無しさんNGNG
DSPプログラミングだとけっこうgoto見るよ。
0522デフォルトの名無しさんNGNG
HSPプログラミングだとけっこうgoto見るよ。
0523デフォルトの名無しさんNGNG
C++プログラミングでもgoto見るよ
0524デフォルトの名無しさんNGNG
goto(大域Break)の無い言語は 糞!
0525ごるごるもあ ◆753Z/RLFiY NGNG
gotoはエラー処理が必要なときに使うと便利。
理由もなく使うとプログラムが汚くなる。
0526デフォルトの名無しさんNGNG
低レベルなライブラリではかなり使った。
表に出てくるようなところではほとんど使わないが。
0527デフォルトの名無しさんNGNG
積極的にgoto使えとは言わないが、どこの本だっけな、
「プログラマが必要だと思った思考を妨げない」とかなんとかいう
格言を持ち出して、
「本当のプロは、gotoが必要だと思ったときは使う。その判断は
ほとんど瞬時に行われ、きわめて自然である」
「gotoに関してははっきりしている。ifとgotoさえあれば何でも出来る。
どんな高度な制御構造もエミュレートできてしまうのである。gotoを
教えない言語教育は極めて粗雑であると言える」

てのを覚えてる。
0528デフォルトの名無しさんNGNG
VBだが・・・
あれはなぜかいつまでたってもContinueも実装されやしない(.netの
新バージョンで使えるらしいが)
しょうがないからNextの手前にラベルを置いてGoToするんだが、副作用と
しては「Continueは上に戻るんじゃなくて下に飛ぶ」というのが強制的に
理解できることだなw
breakはExit Forというのがあるが、あれも工夫して後ろにカウンタ変数名
つけられるようにしてくれれば多重ループ脱出もエレガントにできるし
ほしい機能だ。
あと昔QuickBASICにあったExit Ifとか、TurboBASICにあったExit Select
なんかがVBにはない。むやみな脱出構文は有害だと判断されたんだろうか。
だとしたら多重ループ脱出構文がないのも理解できるが。
0529デフォルトの名無しさんNGNG
setjmpを恐れなく使う兵達のスレはどこですか
0530デフォルトの名無しさんNGNG
多重ループ脱出は欲しいなー。別にgotoでもいいけどラベル付けるのまんどくせ。

> gotoに関してははっきりしている。ifとgotoさえあれば何でも出来る。
> どんな高度な制御構造もエミュレートできてしまうのである。
そりゃそのとーりだな。実際そのエミュレートをコンパイラがやってるわけで。
アセンブラレベルじゃcmpとjmp系列だけだしな。(一応86系ってことでよろ)
おっとcallもあったか…、まあcallがjmpでエミュレートできるのは明らかだ。
だがまあそれじゃいくらなんでも人間様が分かりづらいんで、
ループ構文とかつくってわかりやすくしよーってことだな。
でもまあ、原点たるgoto(というかjmp)を教えないってのは、確かに粗雑っちゃ粗雑だよな。
0531デフォルトの名無しさんNGNG
goto文そのものが有害なんじゃなくて、>>528の言うとおり、
複数の脱出口を持つ構造が、コードをわかりにくくするんだよな。

例えば、関数の途中でreturn、(例外的事象じゃないのに)例外のthrow、
for/whileループの途中でbreakなんてのが考えられるが、
(goto文を使ってないけど)これらのコードはメンテしにくい傾向にある。

goto文有害説を唱えたヒトも、元は構造について述べてたんじゃなかったっけ。

>>530
うん、jmp命令の構文糖という捉え方ができるといいねえ
字面でなく構造を意識することが重要。
0532デフォルトの名無しさんNGNG
>>529

あるC言語系の処理系に

TRY{
}CATCH(EXCEPTION){
}

があったのだが、ヘッダ読んだらsetjmp・longjumpのdefineマクロだった。
ドキュメントには例外キャッチしてもTRY句で確保したメモリは
自動的には開放されないからね(うろおぼえ)というような
ことが書いてあった。それに対するワークアラウンドは
ドキュメントにはなし。finary句があったかは覚えていない。
あのときは新人だったんで意味がわからなかったんだが。
「setjmpを恐れなく使う兵達のコード」を使わされていた
んだなと。

C++ならauto_ptrとやら使うトコロなんでしょうか。C++よー知らんけど。
もうその処理系に触る機会がないので
正直、今でも上記に対する解法がわからん。
恐れなく使う兵達よ、教えてくれよ。
0533デフォルトの名無しさんNGNG
最近になって初めてgoto使ったよ
0534デフォルトの名無しさんNGNG
>>532
そのマクロは

#define BEGIN {
#define END }

と同じぐらい邪悪だと思うが。
0535デフォルトの名無しさんNGNG
gotoと継続についてかたるスレはここですか?
0536デフォルトの名無しさんNGNG
複数の脱出口を持つ構造っていう言葉は、ちゃんと考察すると、
関数Aから関数Bにreturnする出口と関数Cにreturnする出口がある
という変なプログラムを指すことになる。
そんなのCとかでは作ろうと思っても作れない。

関数Aから関数Bにreturnするだけなら、途中でreturnしても
最後にreturnしても構造としては同じ。

途中でreturnって単なるガードによる場合分けがほとんどだろ。
戻っていく先がはっきりしているのに何が分からないんだ?
0537デフォルトの名無しさんNGNG
メンテしにくい、という言葉の意味が分かってないみたいだなー
0538デフォルトの名無しさんNGNG
>>537
だからその「面手し難い」ってのを説明せよ、ってことじゃないの?
0539デフォルトの名無しさんNGNG
経験値足りてねー人に説明するのは難しいッスよ、それ
0540デフォルトの名無しさんNGNG
C メンテシニクイ
   GO TO (101, 321, 234, 400, 555) NANAKO
0541デフォルトの名無しさんNGNG
もともとは
・gotoはどんな風にでも使えるから分かりづらい使用法が氾濫して困る
・順接、反復、分岐で構造化プログラムは書ける。だからそれぞれ専用の
ステートメントを用意すればあとはgotoいらない。
という2説があったわけだろ。
ifとgotoしかない処理系でも、順接、反復、分岐のみの目的でgotoを
使えば、それは構造化プログラミングと言えるだろう。forとか
専用のステートメントを備えるのは構造化の十分条件であって必要
条件ではない。
ただそうは言っても、gotoはそれ以外の使い方もできるのは事実なわけで
経験地足りてない人は知らずにそんな使い方をしてしまうだろう。
そんなgotoは、意図するところが千差万別になるわけだから、まず
書いたやつの意図をコードから読み取らないといけない。
それが面手しがたいという現象だと、今考えた。抽象的だが。
0542デフォルトの名無しさんNGNG
>>541
うむ。少なくとも私は納得した。
「whileもforもcontinueもbreakも全部まとめてgotoで書けるけど、
 全部gotoだとあとから見た人は、それがどの制御構造文を
 意図したものか一見では分からないので考える必要がある」
こんな感じか?

それに生のgotoは現存する構造制御文であらわすことができない
使い方も可能だから、その可能性も含めて意図を探ろうとすると
確かに大変だな。

コードの意図がつかめない->コードの変更ができない->メンテできない
ってことだな。なるほど。
0543デフォルトの名無しさんNGNG
uchar ram_chk(void) {/* RAM チェックルーチン*/
register 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デフォルトの名無しさんNGNG
> 最適化されるとメモリを読まずにレジスタを判定するコードが出る

volatileが使えないの?
0546デフォルトの名無しさんNGNG
>>544
お前、volatile って知っているか?
0547デフォルトの名無しさんNGNG
>>543
「木を見て森を見ず」の典型例って感じだな。
0548デフォルトの名無しさんNGNG
この程度のルーチンなら、(速度を重視するのであれば)アセンブラで書いてしまいます。
0549デフォルトの名無しさんNGNG
オイラなら、
オリジナルのアルゴリズムを書いたCコードと、
ターゲットCPU向けに最適化したアセンブラコードと、
それらをテストするコード
を用意するな。

こうしておけば、ターゲットCPUが変わっても、とりあえず動かすことができる。

あんましgotoとは関係ないと思うヨ。
0550デフォルトの名無しさんNGNG
多重ループをgotoで抜けるのとreturnで抜けるのはどっちが邪悪?
0551デフォルトの名無しさんNGNG
>>550
goto の方。
0552デフォルトの名無しさんNGNG
>550
関数の入口と出口は1つにした方が良いって教わった
途中のreturnってダメぢゃん
0553デフォルトの名無しさんNGNG
>>552
関数の入り口を一つにするってどういうこと?

あと再帰関数とかはどうすんの?
0554544NGNG
そのコンパイラではvolatile書いても最適化された。ASMでも当然書いたよ。ふつうvolatileは
「変数の属性」として書くが上のような文脈では*(volatile*)(--p)=0; とか書くことになる。
μチップ用のクロスコンパイラでは隅々までANSI並にサポートはされてないようだ。
@(R+)のほうが@(R)より遅いからASM程の速度は出せないが命令数でほぼ同等に
納まったのが上の書き方だったということ。スレタイの主旨からしたらgoto文の使用法に関する
議論でしょ。だからこういうケースはどういう書き方をするのがいいと思うか?と投げてみた。
それに対してミクロ的だとかASMで書けとかいうのはスレ違いでしょ。
0555デフォルトの名無しさんNGNG
>>554
volatileは確かにコンパイラのバグが出やすい。
ただpをvolatile int *p;と定義すればたぶん++,--は不要になると思うが……

ところで本題のgotoについてだが、>>543はdo〜while()では駄目なのだろうか。
0556デフォルトの名無しさんNGNG
>>552
>関数の入口と出口は1つにした方が良いって教わった
理由までは教わってないんですか?
0557デフォルトの名無しさんNGNG
関数の入り口を複数にする方法を教えてください。
0558デフォルトの名無しさんNGNG
cではムリ。PL/IやFortran,ASMではENTRY文がある。
0559554NGNG
>>555 >ただpをvolatile int *p;と定義すればたぶん・・・
それでダメだったので553の表現に至ったのです。チビ助チップのクロスコンパイラはそんなもん

>do〜while()では駄目なのだろうか
do whileで書くと「書いたメモリ比較して違ったら」のif文を全部 if( *p++ != xx )の表現で書く
ことになるでしょ。それが翻訳されると CMP Ri,@(Rj+) BEQ 次の実行文 BRA whileの外 という
機械語が出て、BNEwhileの外 という機械語が出なかったのですよ。 それでわざわざ反対に
書いて if( *p++ == xx )で書いてるのです。そうすればコンペアの後BNE whileの外 が出るから。
そのかわりwhileの条件が反対になるから、あ〜いうループ構造になったわけです。
あの書き方が「機械語が最も少ない」出方をするのは「百万回の試行錯誤」で確認済みなのです
0560デフォルトの名無しさんNGNG
100万回も試行錯誤するなら、とっととアセンブラで書いた方が早いでしょう。
どのコンパイラでも>>553のコードが最も早いコードを出力するとは限らないし。
0561デフォルトの名無しさんNGNG
>>543
>こういうのはどう書けばいい?

>>554
>そのコンパイラではvolatile書いても最適化された。

つまり、処理系の動作が全く想定できない状態であるのを
承知していながら、他人にどう書けばいいか尋ねたわけだ。

・・・すげー根性してるな。
0562デフォルトの名無しさんNGNG
>>543
まあ、普通に答えるならdo { } while();にして、!=でbreak;にするのが
妥当な構造じゃないかなと思います。

でも、「そのコードに対して特定のコンパイラが低速なコードを吐き、
なおかつやんごとなき理由で高速化しなければならず、
またおなじくやんごとなき理由でアセンブラの使用も認められなかった」
からgotoを使って実装した、というのであれば、それは正しいgoto文だろうし、
あなたの仕事は認められてしかるべきだし、私は認めるよ。

でも、その処理系・コンパイラの実装や挙動があなた以外にはわからない以上、
こういうのはどう書けばいいか? といわれたところで
我々は「do {} while();にすれば?」とくらいしか答えようがないです。
0563デフォルトの名無しさんNGNG
まあ、熱意は凄いね。
どうしても、適当にお茶濁そうと思ってしまうからなあ。。。
0564デフォルトの名無しさんNGNG
>>553
スタックオーバーフローさせます。
0565デフォルトの名無しさんNGNG
>>559
volatileを使うならこうでは?
(volatile 型)(*p) == ????
0566デフォルトの名無しさんNGNG
キャスト式はlvalueではない。
0567デフォルトの名無しさんNGNG
>>553 >>557
「入り口はひとつ」の意味とは。BASICで書くぞ。

10 GOSUB *SHOWHELLO 'サブルーチンへ
20 END '終了
100 *SHOWHELLO 'サブルーチンの入り口
110 PRINT "Hello"
120 PRINT "World."
130 RETURN 'メインルーチンへ

このとき、 "GOSUB 120" と書けてしまうが、書いてはいけないということ。
CやJavaでは意識せずともなんとなく守られている原則だ。
0568デフォルトの名無しさんNGNG
>>552
「出口は一つ」の意味とは。>>567のリストを改造して、

130 INPUT "もう一度やりますか(Y/N)"; A$ '入力
140 IF A$ = "Y" THEN RETURN 10 ELSE RETURN 20

昔はこんな風に書けてしまったのだ。これはいけないということ。
「途中のReturn」というのは、その飛び先(戻り先)が同じ行になるので
この例とは意味が違うのだ。
この原則は今のCとかでも、do whileから複数箇所にgotoすれば破れるね。
0569デフォルトの名無しさんNGNG
>>567補足。「入り口は一つ」も、「出口は一つ」と同様にdo whileにgotoで
飛び込んだりすれば違反できるか。つまり入り口出口というのは
関数に限った話ではないということれす。
0570デフォルトの名無しさんNGNG
しかしなんで、ラベルつきbreakなんちゅうもんがあるんかのう

while(...) {
 for(..) {
  switch (...) {
  case hoge:
   ...
   break; // switchをbreak

  case foo:
   ...
   break break; // forをbreak

  case bar:
   ...
   break break break; // whileをbreak
  }
 }
}

これじゃだめか?
0571デフォルトの名無しさんNGNG
構文解析面倒だろう
0572デフォルトの名無しさんNGNG
↓日本ブレイク工業
0573デフォルトの名無しさんNGNG
volatile int * p;
void test()
{
p = 0;
while(!p) ;
}
こんなのがwhiel(1)に変形されたからって
volatileを無視されたとか寝言ほざいてるアフォは
適性なさすぎ白痴としか言いようがない
0574デフォルトの名無しさんNGNG
*pならいいのか?
0575デフォルトの名無しさんNGNG

  Λ_Λ  \\
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ >>574
 (_フ彡        /
0576デフォルトの名無しさんNGNG
ヒドイ!
まだ実行してもいないのに!
0577デフォルトの名無しさんNGNG
>>570
break break break;
は
break(3);
でも内容的に同じだよな

これ算術gotoぽくね?
0578デフォルトの名無しさんNGNG
on error resume next
0579デフォルトの名無しさんNGNG
>>577
そんな数字指定の構文認めたくない
break( 1 + (i==j) );
とかいやなプログラムができうるから

多段ブレークはめったに使わないし
超多段ブレークもほぼありえないから
long longみたいな単純な構文がいい
0580デフォルトの名無しさんNGNG
volatile指定変数のload/storeが、正しくsync系の命令や、ordered命令に
ならない処理系は確かにあるよ。
結構有名なUnix系のコンパイラでもね。
0581デフォルトの名無しさんNGNG
素直にラベルgotoでいいじゃんかよ。
0582デフォルトの名無しさんNGNG
>>580
573が指摘してる「アフォ」が
何を勘違いしてるかわかるか?
0583デフォルトの名無しさんNGNG
else ifをだらだらと書き並べる時にはgoto使う時在るな
というかswitch使ってる場合は暗黙にgotoしてるんでしょ?
0584デフォルトの名無しさんNGNG
>>583
意味わからん
else if はgotoと同じだと言いたいのか?
0585デフォルトの名無しさんNGNG
>>584
なんでやねん
以下の様に関数化するまでもない共通のロジックの実行に使う。
実際にはラベル付きのロジックはcatch中に仕込んだりするけどな。

if (hoge){
func();
} else if(bar>0) {
func2();
} else if(bar<=0) {
goto hogecode;
} else {
hogecode:
func3();
//実際はもっと処理が多い
}
0586デフォルトの名無しさんNGNG
>>585
言いたげなことはわかるが
そのことと583→584の流れとの繋がりがわからん
0587デフォルトの名無しさんNGNG
>>586
1行目と2行目は無関係。わかりにくかった点は謝る。
この通りだ、許してくれ。
0588デフォルトの名無しさんNGNG
>>580
よぉーくみてみれ。

volatile int * p;
int * volatile p;

上記ふたつは別物だ。
>>573のプログラムが最適化かかってwhile(1)になるのは当たり前。
だってvolatile指定は「されてない」んだからな。
0589580NGNG
>>582
>>588
別に前の方の書き込みと関連して答えたんじゃない。
volatile指定した変数でも、正しく命令を出してくれない処理系は確かに存在する。
それは、C/C++の規格に完全準拠した処理系が存在しないのと同じ道理。
# 要は処理系のバグというか、ベンダのへたれ具合というか。

ただし、レジスタ上だけで処理するのではなくて、確実にload/storeを吐くと
いうところまではやってくれるようだが。
0590デフォルトの名無しさんNGNG
>>589
おまえ、それ規格票読んでねえじゃん
volatileの効果は何だって書いてあるか見てからにしろよ
ベンダにヘタレとか言うのは
思い込みで怒りまくってるクレーマーと変わらんぞそれじゃ
0591デフォルトの名無しさんNGNG
>590
悪いが、あんたが言う規格上のvolatileの効果を説明してくれ。
0592デフォルトの名無しさんNGNG
>>591
順番の逆転は認めてやらない
0593デフォルトの名無しさんNGNG
>592
すまんが、何と何の順番の逆転かを教えてくれ。
ついでに、どこから見える逆転かも。
0594デフォルトの名無しさんNGNG
規格票もってないならはっきりそういえよ
だからクレーマーだって言うんだよ
0595デフォルトの名無しさんNGNG
ネットで確認したけど、言ってることが理解できていないかもしれないから、
聞いてるんだけど。
そっちこそ、説明できないの?ププ
0596デフォルトの名無しさんNGNG
マルチスレッド間で共有する変数とかで、ちゃんと値が伝わるように
指定するんじゃないの?<volatile
0597デフォルトの名無しさんNGNG
>>595
ネット? 規格票で確認しろつってんだよ
必須アイテム持ってない勇者は先へ進めねえの
ほら、アドレスやるからさっさと買って来い
www.jsa.or.jp
0598デフォルトの名無しさんNGNG
>>597
お前が抜粋してこればいいだけじゃねーの?w
gotoと関係ないから他所でやれ
0599デフォルトの名無しさんNGNG
>>598
乞食が物乞いするときは、それなりの言葉遣いってものを憶えてきなw
0600デフォルトの名無しさんNGNG
日本語読めない人が仕様書読めるとも思えんな
↓じゃあ次の話題行ってみよう
0601デフォルトの名無しさんNGNG
>>596
その理解は間違いの元のようだねえー
0602デフォルトの名無しさんNGNG
>>600
仕様書読んでないのはてめーだ ぼけ
0603デフォルトの名無しさんNGNG
変なのが沸いてきたなw
0604デフォルトの名無しさんNGNG
仕様書読まない香具師以上に変なのとは?
0605デフォルトの名無しさんNGNG
スレ違いのage厨なリア厨のことでは?
そもそも俺はvolatileの議論には参加してない別人だし
0606デフォルトの名無しさんNGNG
はいはい、匿名ってとこに逃げるしかなくなったのね
いいよ逃がしてあげる
0607デフォルトの名無しさんNGNG
必死に返答考えた結果がそれかw
0608デフォルトの名無しさんNGNG
逃がしてやったんだからせめて黙れよ
0609デフォルトの名無しさんNGNG
白痴が黙ればいいだけじゃん
0610デフォルトの名無しさんNGNG
>>609
そうか、おまえか
0611デフォルトの名無しさんNGNG
>>610
何で黙らないの?w
0612大域脱出NGNG
if(ARASHI_EXISTS){
goto 1;
}
0613デフォルトの名無しさんNGNG
>>611
こっちは逃がしてやった側で
そっちが白痴だから
0614デフォルトの名無しさんNGNG
>>612
惜しかったな
そのコードにはバグがあったようだ
0615デフォルトの名無しさんNGNG
(・∀・)ニヤニヤ
0616デフォルトの名無しさんNGNG
引きどころを見失った厨↓
0617デフォルトの名無しさんNGNG
で、結局、volatileの仕様を教えてよー
夜も眠れん
0618デフォルトの名無しさんNGNG
ただ純粋に厨↑
0619デフォルトの名無しさんNGNG
普通に別スレでやれよ
0620デフォルトの名無しさんNGNG
(・∀・) ニヤニヤ        < コジキ カコワルイ
0621デフォルトの名無しさんNGNG
何か、どっちもろくに根拠がないから、示せないんだろーなw
次の話題にいこーぜ
0622デフォルトの名無しさんNGNG
(・∀・) ニヤニヤ        < コジキ カコワルイ ore mo syuunyuu tomattara isagiyoku sinu. nenkin ya seikatuhogo de ikiyou towa omowanai.
0623デフォルトの名無しさんNGNG
課題
gotoを使ったコンソールノベルを製作せよ
0624デフォルトの名無しさんNGNG
>>622
年金払うだけ払って死んでくれるとはなかなかいいお人ですね。
0625デフォルトの名無しさんNGNG
>>624
みんなそうだよ
これからは
0626デフォルトの名無しさんNGNG
#include <stdio.h>

void 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デフォルトの名無しさんNGNG
ム板のループスレはココですか?
0628デフォルトの名無しさんNGNG
>>627
そりゃ、goto使ってるから。
0629デフォルトの名無しさんNGNG
COME FROM >>1
0630デフォルトの名無しさんNGNG
#include <stdio.h>

void 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
>>630
何が言いてえんだよ!
0632デフォルトの名無しさんNGNG
void main()
というところが専門学校DQN臭い
0633デフォルトの名無しさんNGNG
>>632
コンパイル通るし、どうでもいいやん。古い処理系にこだわんなや。
0634デフォルトの名無しさんNGNG
>>632
それがどーかしたんかよ脱税帝国の申し子さん
0635デフォルトの名無しさんNGNG
またvoid mainで揉めるのか。いつまでもループする話題だな。
0636デフォルトの名無しさんNGNG
C++のばやい
http://users.footprints.net/~kaz/cppvoidmain.html
0637デフォルトの名無しさんNGNG
>>633 の 「古い処理系にこだわんなや」 とか
>>634 の 「脱税帝国の申し子さん」 が
どうにも意味不明なんですが。
0638デフォルトの名無しさんNGNG
電波は放置で
0639デフォルトの名無しさんNGNG
>>632
630が使ってる処理系を確認するのが先だろ
0640デフォルトの名無しさんNGNG
>>589
確実にload/storeしてるなら、volatileは正しく処理されてると思うけど。
それ以上に何を期待してるんだ?
0641デフォルトの名無しさんNGNG
>>640
おまえらの議論はvoid mainと同じ
必要情報を調べずにてきとーこいてるだけ
0642デフォルトの名無しさんNGNG
>>641
必要情報って?
0643デフォルトの名無しさんNGNG
処理系定義とは何たるかがまるでわかってない真性DQN
本人は技術者気分に酔ってるところが何とも痛い
0644デフォルトの名無しさんNGNG
>>640
>>589 はきっとバグがある事に怒ってるんだよ!わがままだね。

まあ volatile 書いてもエラーにならずに無視されるコンパイラってのは
なんかありそうだな。
0645デフォルトの名無しさんNGNG
>>644
バグかどうかちゃんと確認もせずに
勝手な先入観でぷんすか怒る痛ーい香具師
0646デフォルトの名無しさんNGNG
gotoを使ったコンソールノベルを作成せよ
0647デフォルトの名無しさんNGNG
goto俺の母ちゃん
0648デフォルトの名無しさんNGNG
;俺の母ちゃん:MyMother.Shikaru(Ore);
0649デフォルトの名無しさんNGNG
onnna.manko(otoko.chinpo());
0650デフォルトの名無しさんNGNG
Couple Hoge(otoko, onnna);
0651デフォルトの名無しさんNGNG
Loveho MeguroEmperor(ore, sefrie);
0652デフォルトの名無しさんNGNG
Seibyo byoki = new Seibyo("AIDS");
omae.utsusareru(kanojo, byoki);
0653デフォルトの名無しさんNGNG
goto俺の母ちゃん
0654デフォルトの名無しさんNGNG
gosub 654
0655デフォルトの名無しさんNGNG
>>654
stack overflow
0656デフォルトの名無しさんNGNG
gotoでスタックは普通積みあがらんだろ。
0657デフォルトの名無しさんNGNG
うがー、よくみたらgosubだったー

首を吊って死ぬ。
0658デフォルトの名無しさんNGNG
ワラタ
0659デフォルトの名無しさんNGNG
perform 659.
0660デフォルトの名無しさんNGNG
700 run 1
0661デフォルトの名無しさんNGNG
1 NEW
0662名無しさん@そうだ選挙に行こうNGNG
どうしてC系の関数って複数の値を返すように宣言できないの?
引数が複数なんだから返り値も複数書けてもいいじゃん

int int char f(void)
{
...
return 5, 0, 'a';
}

みたいな感じで
0663名無しさん@そうだ選挙に行こうNGNG
関数の呼び出し側から2番目以降の返り値にどうやってアクセスするの?
0664名無しさん@そうだ選挙に行こうNGNG
>>662
perlみたいにリストを返せばいいんでない?
0665名無しさん@そうだ選挙に行こうNGNG
>>662
できるよ ぼけ
struct bitch { int clit, puss, ass; };
struct bitch f(void)
{
struct bitch airhead = { 5, 0, 'a' };
return airhead;
}
0666名無しさん@そうだ選挙に行こうNGNG
>>665
ひとつの関数のためだけにいちいち構造体を定義するのが面倒だから、
>>662 みたいな書式で多値が返せるようなsyntax sugerがあると嬉しいってことだろう。
内部の実装は無名structの定義でも別に構わないし。

まぁ、もともとCってのはポインタさえあればなんでもできる! って面があるから
結局のところ所謂参照渡しで多値を返せば十分だろ、ってところなんだろうけどな。
0667名無しさん@そうだ選挙に行こうNGNG
>>666
俺だったら例え1つの関数でしか使わなくても、ちゃんと意味づけが確立している集合は宣言する
0668名無しさん@そうだ選挙に行こうNGNG
>>667
あんたはえらいっ
0669名無しさん@そうだ選挙に行こうNGNG
>>665
関数名の後に空白入れろ ぼけ
0670名無しさん@そうだ選挙に行こうNGNG
>>669
こんな因縁の付け方初めて見た ぼけ
0671名無しさん@そうだ選挙に行こうNGNG
受け取る側も拡張すれば
0672デフォルトの名無しさんNGNG
airheadだって
プゲラの世界の奴だな
0673デフォルトの名無しさんNGNG
完全に一人の人に任せるならgotoありだけど
複数の人が入り混じってやるプロジェクトでgoto使うやつは
かなりいやだ
0674デフォルトの名無しさんNGNG
自分の書いたコードめがけて断りもなくgotoで飛んでくるヤシ
0675デフォルトの名無しさんNGNG
関数使わずに全部gotoにすれば戻り値も引数も必要ないぞ
0676デフォルトの名無しさんNGNG
C言語風basicキター

ってか、格好良く言うと

C言語風アセンブラキター?
0677デフォルトの名無しさんNGNG
gotoなんかやめてcome fromにすれば解決!!
0678デフォルトの名無しさんNGNG
HSP厨は平気でgoto使っているね。
まぁ、簡易言語だからそれでもいいんだろうけど。
0679デフォルトの名無しさんNGNG
>>677
(・∀・)イイネ!!
0680デフォルトの名無しさんNGNG
あっせんぶらーにへんかんされたじてんでことごとくごーとぅーなんだが(w
0681デフォルトの名無しさんNGNG
>>677
もっと積極的に、かまーんでいいじゃん。
プログラムの中で挑発的に何度も。

ComeOn
ComeOn

イベント的には、かみーん。
Coming
Coming
0682デフォルトの名無しさんNGNG
>680
jumpやbranchじゃないの?
0683デフォルトの名無しさんNGNG
>>680
誰もそんな事話題にしてませんが、チエちゃん(チエ遅れ)ですか?
0684デフォルトの名無しさんNGNG
構造化だろうがオブジェクト指向だろが
実行される段階じゃただのスパゲテーマシン語に変わり無いってこったな

いちいちソースの見た目なんぞ考えるだけ無駄
0685デフォルトの名無しさんNGNG
(´-`).。oO(趣旨が解らないんだったら黙ってればいいのに…)
0686デフォルトの名無しさんNGNG
(´-`).。oO(それよりcome from, come on, comingの使い方気になる・・・)
0687デフォルトの名無しさんNGNG
>>686
gotoの部分にラベル、gotoのラベル名の部分にcomefromを書くのだろう、たぶん。
0688デフォルトの名無しさんNGNG
>>686
COME FROMの使い方
ttp://www.fortran.com/fortran/come_from.html
ttp://c2.com/cgi/wiki?ComeFrom
0689デフォルトの名無しさんNGNG
アスペクト指向の元ネタみたいな機能だな>COME FROM
0690デフォルトの名無しさんNGNG
goto文よりif文の連続使用されたプログラムの方が読みづらい
0691デフォルトの名無しさんNGNG
スパゲッティコードにナッチャウヨ〜

トモダチならアタリマエー
0692rNGNG
void foo() {
    // なんか処理
    goto bar::hoge;
    // なんか処理
}

void bar() {
hoge: came goto_source;
    if( goto_source == foo ) {
        //なんか処理
    } else {
        // なんか処理
    }
}

このくらい出来てもいい。
0693デフォルトの名無しさんNGNG
barがreturnしたらどこへ行くんだろう。
0694デフォルトの名無しさんNGNG
大丈夫だよ、そんなの今時のコンパイラならどれ使っても最適化してくれるよ
むしろそーゆーことは意識しちゃいけないんだよ (とくいとくい
0695デフォルトの名無しさんNGNG
goto bar::hogeの後の処理は
実行されることはないと思うが・・・
0696rNGNG
>>695
どっか他所から、gotoで到達するんだよ
0697デフォルトの名無しさんNGNG
if( goto_source == foo ) {
の中から goto で帰るんだよ、きっと
0698rNGNG
>>697
いいね。
backto goto_source;
とか書けるといいね。
0699デフォルトの名無しさんNGNG
結局、このスレってジーオーティーオーに反応するくせに
そっからまともに議論できないアフォばっかりの釣堀だなw
0700デフォルトの名無しさんNGNG
途中からどうしようもないネタスレ化
0701デフォルトの名無しさんNGNG
だってWindows2000がgotoの使い方となる完璧な規範を示しちゃったから
アンチも逃げ出してもう話すことなんて何もないからね。
0702デフォルトの名無しさんNGNG
スレタイに惹かれて見た
>>662
に対して
そんな構築するヤツはダメだ
というレスがないのを見て
このスレはダメだと思った

さようなら
0703デフォルトの名無しさんNGNG
>>702
こちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1090324689/

結構まともな議論だと俺は考える
0704デフォルトの名無しさんNGNG
Multiple Valueを知らない>>702は負け組
0705デフォルトの名無しさんNGNG
multiったって結局はひとつのarray返してるだけだろ
いまさらCになくて他言語にある機能をクレクレいっても意味ないし。
0706デフォルトの名無しさんNGNG
>>705
> multiったって結局はひとつのarray返してるだけだろ

ちがう
0707デフォルトの名無しさんNGNG
コンパイルすりゃJMPの雨霰
くだらねー事にこだわるほうがアフォ
0708デフォルトの名無しさんNGNG
動けばいいって考えに支配され goto が邪魔になるようなコードを書いちゃいねえボンクラほどナーバスなんだよな
お化けは見えないから怖い, ボンクラは goto の弊害が見えていないからこそ疑心暗鬼に怯えまくる
0709デフォルトの名無しさんNGNG
後に飛ぶgotoなら、なーんも問題なし。
40行以内ならなおよし。
0710デフォルトの名無しさんNGNG
>>708
分岐のない直線的な文章をよくそこまで読みにくく書けるもんだ
0711デフォルトの名無しさんNGNG
馬鹿ばっか。
たしかにこういう馬鹿どもにはgoto禁止しとくに限る。foolproofの意味で。

gotoを忌避する理由がわからないのは構造化の意味がわかってないから。
構造化ってのは、「人間はパターン認識の動物だから、ぱっと見て
パターン認識ができるような書き方をしましょう」ってこと。

スパゲティーってのはもともとそういうパターン認識不可能な様を表現する
言葉だったのに。

gotoを乱用するとパターン認識不能なコードになりやすいのは確かだが、
これは十分条件ってわけじゃない。
パターンの認識性を破壊しないような使い方なら別に使ったって何の問題もない。

意味のある処理ブロックの先頭にgotoで飛んだって、
コードの可読性は失われないよ。
0712デフォルトの名無しさんNGNG
>>711
だったら goto を使うパターンは昔からあるな
それでパターン認識できないケースが問題視されたわけだが
なぜ順次・選択・反復をパターンの基本に選ぶのかの説明が見あたらない
これでは結局、いつもの堂々巡りの典型でしかない
0713デフォルトの名無しさんNGNG
>701
詳細希望
0714デフォルトの名無しさんNGNG
例外処理で何とでもなります。
0715デフォルトの名無しさんNGNG
SQLにgotoがあればいいのに…
0716デフォルトの名無しさんNGNG
SQLに例外処理があればいいのに…
0717デフォルトの名無しさんNGNG
SQL に生ゴミ処理機能があればいいのに…
0718デフォルトの名無しさんNGNG
SQLでもエロ動画が見たい・・・
0719デフォルトの名無しさんNGNG
>>701
http://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
>>701 ×
>>713 ○
0721デフォルトの名無しさんNGNG
オブジェクト指向技術の洗練にしたがって
GOTOはおろかIFやCASE文さえも排除の対象になるのでしょうかね?
0722デフォルトの名無しさんNGNG
object.goto(どっか) 的な使い方ができるのなら
それはそれで面白いと思う。
0723デフォルトの名無しさんNGNG
そういえば、Lisp の「全部関数(というわけじゃないけど)」とか
Prolog の「全部述語(というわけじゃないけど)」なパラダイムなら、
そもそも IF が分岐の意味を持っていない罠

アセンブリレベルならもちろんあるが、それは問題外
0724デフォルトの名無しさんNGNG
>>723
なぜ問題外?
0725デフォルトの名無しさんNGNG
ヒューマンインターフェイス上にgotoが見えなきゃということだろう。
構造化理論もその話だろうし。

ヒューマンインターフェイスという表現は変か…
0726デフォルトの名無しさんNGNG
条件分岐をしないマシン語。
アドレスジャンプのないマシン語。
プログラムカウンタを工夫すればいいのか?
0727デフォルトの名無しさんNGNG
>>725
は? もしかして break のことか?? おいおい・・・
0728デフォルトの名無しさんNGNG
>>727
0729デフォルトの名無しさんNGNG
>>718

WinFS
0730デフォルトの名無しさんNGNG
0731デフォルトの名無しさんNGNG
>>727
forとかifブロックとかたぶんその辺。
0732デフォルトの名無しさんNGNG
>>731
あれ、マジ「おいおい」だったか?
なんで goto レスが前提に出てくるんだよ
結果論にすぎないよ、それは

goto と同じ理由で否定されるべきものを挙げられるか?
break や longjmp みたいに単にスペルをジーオーティーオーでなくしただけってのを除いてな
上のほうで言ってる奴いたけど C の break なら必要悪ではなく構造化の基本として使うのもあるよな

コンパイル結果ではなく直接書いてるアセンブリの分岐命令だって
構造化の方針に反するものと基本として使うのとある

そのへん、どんな基準で見てるのかなあ・・・
0733デフォルトの名無しさんNGNG
JMP >>1
0734デフォルトの名無しさんNGNG
goto使えよ
0735デフォルトの名無しさんNGNG
longjumpをつかえば
他のマシンの他のプログラムの中に
gotoすることができるんですか!?
0736デフォルトの名無しさんNGNG
RPC使えよ
0737goto賛歌NGNG
別にスパゲッティになったってかまわない
保守できなくなってもかまわない
明日があるさ
0738デフォルトの名無しさんNGNG
灰色の明日が来そうだな
0739デフォルトの名無しさんNGNG
>>235

二番煎じで面白みがないが、
こうすれば(一応)ネストできる。

#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デフォルトの名無しさんNGNG
それじゃ関数内だけの話だね。デストラクタも呼ばれないし。
0742デフォルトの名無しさんNGNG
ネタにマジレスせんでも
0743デフォルトの名無しさんNGNG
ケンシロウはつかっている...
usr/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
goto使わない場合、
代わりに用意されてる制御構造が貧弱なのばかりだと、
「時々」苦しいと思う。

というわけで末尾再帰マンセー
まだ勉強中でよくわからんが、継続とやらも何やら素晴らしげ。
0745デフォルトの名無しさんNGNG
>>744
再帰は、よっぽどわざとらしいことをしない限り
基本的には goto とは異質なもので、
SPの原則には反しない
0746デフォルトの名無しさん05/02/08 14:15:52
後藤
0747デフォルトの名無しさん05/02/08 14:45:39
#define letsgoto goto

letsgoto を使いましょう
0748デフォルトの名無しさん05/02/08 23:32:16
使うと全CPUのPCが変わります
0749デフォルトの名無しさん05/02/08 23:41:32
IP
0750デフォルトの名無しさん05/02/09 02:17:04
goto文より、C/C++のポインタの乱用がつらい。
納期直前のデスマーチで、ポインタ崇拝プログラマが、「何でこんな動作をするのか分かりません」といったのが、印象に残っている。
(結局そのプログラマが、ただのヘタレだったわけで、上手に使えば便利なポインタに罪を擦り付けるわけじゃないが。)
0751デフォルトの名無しさん05/02/09 03:24:39
ものすごい昔のコメントへのレスだが、

>>38
> goto文を使うと便利なのは、
> 関数の頭でクリティカルセクションに入るやつかな。
>
> 関数を2段で組むより、
>
> end:
> leaveCriticalSection();
> return;
> }
>
> とやっておくと便利。
> 今更そんなプログラムをC++で組む程暇な奴がいるとは思わないけど。

ごめん、俺、この手法 C++ で愛用してるんだけど、
C++ の手法としてはどんなのが普通なの?
try〜catch とか?(←ちなみにこれ使ったことない)
0752デフォルトの名無しさん05/02/09 08:25:10
catchじゃなくてfinallyだろ。
try節のなかでreturnしてもいいから気楽だぞ。
0753デフォルトの名無しさん05/02/09 08:31:07
C++にそんな便利なものはない。
コンストラクタでクリティカルセクションに入り、
デストラクタでクリティカルセクションから出るクラスをつくり
そいつを自動変数として確保するのが普通。
075475105/02/09 15:17:14
あー、なるほど。
でもたった1つの関数のためにクラスを作るのはなんだかイヤンです。
汎用性のあるクラスなら進んで作るけど。
goto残ってくれていてありがとう。

Java は finally 使えるけど goto が使えない…
0755デフォルトの名無しさん05/02/09 15:46:08
そういう時はテンプレートにすれば
再利用できそうな雰囲気を醸し出せる
0756デフォルトの名無しさん05/02/09 20:06:55
<setjmp.h>が使えない坊やはおねむの時間だよ
0757デフォルトの名無しさん05/02/09 22:19:33
>>754
>>753の方法はC++ではとても一般的&安全&便利な方法だよ
ぶっちゃけ君C++やめたほうが良いと思うよ
0758デフォルトの名無しさん05/02/09 23:06:23
>>757
ムカー

それぞれの良いとこ取りでいいですやん。
そういう極論に持っていくならこのスレの意義もなくなるだろ。
0759デフォルトの名無しさん05/02/10 00:28:16
極論に走るのが2chの特徴…しょうがないよ。
0760デフォルトの名無しさん05/02/10 00:57:56
>>754
たとえば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
>>760
そしてReleaseMutexをテンプレート引数にするとますます再利用できそうな雰囲気にはなるw
0762デフォルトの名無しさん05/03/16 17:04:40
今日C/C++室でgoto論で華が咲き、goto使いが2,3名増加したもより。
たずねてきたら育ててあげてね。
0763デフォルトの名無しさん05/03/16 18:41:23
俺はアンチgoto馬鹿がぶちきれるのが楽しいから
使えるところではgoto必ず使うよ。
0764デフォルトの名無しさん05/03/16 18:48:58
gotoのない言語はカス
0765デフォルトの名無しさん05/03/16 18:51:38
>>764
性格にはラベルジャンプだろ。
Javaはgotoないよ。コンパイルエラー専用の予約語。
0766デフォルトの名無しさん05/03/16 18:53:37
いだからJavaはカス
0767デフォルトの名無しさん05/03/16 18:53:46
Javaはカス
0768デフォルトの名無しさん05/03/16 18:55:28
break、continue、switchでラベルジャンプ使えりゃコーディングに困ることはない。
Java最高
0769デフォルトの名無しさん05/03/16 19:07:33
>>757
一般的とはいえないだろ。切り出せるのはMutexなんかの汎用的なコードだけだろ。
lambdaを渡せるわけでもないし。
歪んだC++の苦し紛れの解決策を一般的&安全&便利なんて言い張るのは滑稽だな。
0770デフォルトの名無しさん05/03/16 19:43:35
>>769
意図を完全に表現できない意味でもC++のautoデストラクタはあんま
良い仕様ではないね。小手先テクがそのまま言語仕様化したって感じ。

WindowsのSEHでいう__finallyがデストラクタの巻き戻しと同じなんだけど、
(というかVCのC++例外機構はSEH使ってる)
こいつはC++でタブーとされているlongjmpに対しても巻きもどし保障が
あるという優れもの。
やっぱC++にもfinally欲しいねえ。
0771デフォルトの名無しさん05/03/16 20:50:54
>C++でタブーとされているlongjmp

プ
0772デフォルトの名無しさん05/03/16 20:52:46
おおっ、こんなスレがあったのねん
それも2002年かよ。
0773デフォルトの名無しさん05/03/17 02:09:15
goto >>1001
0774デフォルトの名無しさん05/03/18 08:13:21
本物のプログラマはプログラムで食べていこうとしない
本物のプログラマは2chやってる時に腹痛を起こす
0775デフォルトの名無しさん05/03/18 20:28:53
ニホンゴワカリマスカ? >>774
077677405/03/18 22:29:37
>>775
わかりません。
0777デフォルトの名無しさん05/03/20 16:58:20
template<typename T> struct AutoCloser {

};
0778デフォルトの名無しさん05/03/20 17:08:18
↑ごめんTabキー押してEnter押して書き込んじゃった
template<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:04
そういうのはC++はウンコじゃないんだと言い張るスレでやってくれ
0780デフォルトの名無しさん2005/05/07(土) 01:48:53
>>770
C# には finally があるぞ。つ〜か、finallyって使いますか?

0781デフォルトの名無しさん2005/05/11(水) 17:11:50
>>780
下手すると catch よりも使います
メソッド抜ける前にストリーム閉じるとかの終了処理に finally つかいますし

っていうかファイナライザ自体が finally 等価コード使用しているし
0782デフォルトの名無しさん2005/05/11(水) 18:47:12
>>781
メソッド抜ける前の必ず通る位置に終了処理を持ってくるだけでよくねぇ???
Cから進歩してない頭なので、わざわざfinallyにする利点がわかってないんすよ。
って、スレタイから外れてしまう話ですよね。
0783デフォルトの名無しさん2005/05/11(水) 19:38:08
その必ず呼ばれるステートメントがfinallyなんだよ
0784デフォルトの名無しさん2005/05/11(水) 20:19:33
>>783
それはわかるのだが、try〜catchがあればcatchの下(外?)に終了処理を置けばいい
わけで、finallyを使う時はtry〜finallyだから・・・と考えると是が非でもfinallyの意義が
わからないでいるのです。
0785デフォルトの名無しさん2005/05/11(水) 20:59:47
>>784
途中でreturnしたいときはどうだ。
0786デフォルトの名無しさん2005/05/12(木) 01:03:46
catch節からさらに例外を投げることがよくある。
07877842005/05/12(木) 07:22:01
>>785
途中でreturnとやっても、finallyがあれば必ず処理をして・・・ということに
なりますか?
だとしたら、かなり便利ですね。
0788デフォルトの名無しさん2005/05/12(木) 11:57:26
>>787
>>783
07897842005/05/12(木) 12:01:33
>>788
了解!!
勉強になりました。ありがとう。
0790デフォルトの名無しさん2005/05/14(土) 03:10:48
>>781
using は使わんのか
07917812005/05/14(土) 15:52:29
>>790
using は 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:02
for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
0794デフォルトの名無しさん2005/05/15(日) 12:21:06
Stream stream = new Stream(hoge)
using(stream){}
だとusing内でstream.Close()しなくてもいいの?
0795デフォルトの名無しさん2005/05/15(日) 18:43:44
>>794
うん。Stream.Dispose は Close を呼び出す事になっていたはずだから
0796デフォルトの名無しさん2005/05/15(日) 22:21:12
スコープ的に
using(Stream stream = new Stream(hoge)){}
のほうがよさげ
0797デフォルトの名無しさん2005/05/19(木) 00:19:15
gotoでスパゲッティなコードが見たいぞ見たいぞ
0798デフォルトの名無しさん2005/05/19(木) 02:27:48
>>797
おちつけ、>>799が大作を発表してくれるから。
0799デフォルトの名無しさん2005/05/19(木) 08:52:43
100 print "あ";
110 goto 100
0800デフォルトの名無しさん2005/05/19(木) 08:54:30
>>799
そうか。
0801デフォルトの名無しさん2005/05/19(木) 11:53:52
スパゲッティなら
特定の条件下での分岐が欲しいな。可能なら多分岐でね。
#おそらく俺はもう書けないorz
0802デフォルトの名無しさん2005/05/19(木) 14:22:19
((call/cc
  (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
>>799
スパゲッティっていうかマカロニだな
0804デフォルトの名無しさん2005/05/19(木) 21:46:09
>>802
全然分からない!
0805デフォルトの名無しさん2005/05/19(木) 21:49:15
>>802
「call-with-current-continuationを恐れなく使う兵達のスレ」にカエレ。
0806デフォルトの名無しさん2005/05/20(金) 13:42:28
>>797
こんなんとかどうだ?かなり凄いぞw
http://www.geocities.jp/amazonium011001/cuirpgfordq3.lzh
0807デフォルトの名無しさん2005/05/20(金) 16:19:37
>>806

私もへたれなプログラムしか書けないけど、
けどコピペ何回もするようなソース書きません。

と言う云々以前に、ソース見難いっす。orz
0808デフォルトの名無しさん2005/05/20(金) 16:43:32
>>807
それがスパゲッティなコードじゃないのか???
オレは見てないのだが、キレイで凄いソースってことで晒してる
のではないと思うが。
0809デフォルトの名無しさん2005/05/20(金) 21:21:32
>>806
見たいぞ見たいぞ
0810デフォルトの名無しさん2005/05/20(金) 23:19:59
「goto文は、使うな!」
って最初に言い出したヤツって、
見た目頭良さそうだけど、本質的な部分で頭悪そうだよな。

最初に言い出したヤツに続いてバカの一つ覚えに
「goto文は、使うな!」
って言ってるヤツは、基本的な部分で頭悪そうだよな。
0811デフォルトの名無しさん2005/05/21(土) 00:08:32
>「goto文は、使うな!」 って最初に言い出したヤツ
ダイクストラという人物だ。その主旨の題の論文を書いた。
(内容は構造化プログラミングの提唱なんだけど)

>最初に言い出したヤツに続いてバカの一つ覚えに「goto文は、使うな!」って言ってるヤツ
連綿と続いているgoto論争の一翼。沢山いる
0812デフォルトの名無しさん2005/05/21(土) 07:29:45
逆にgotoを使い始めた後藤とかいうやつをとっちめてやりたい
0813デフォルトの名無しさん2005/05/21(土) 11:00:26
http://www.watch.impress.co.jp/internet/www/article/2002/0809/dijkstra.htm

この人がアホだというのなら、誰が賢いのやら
0814デフォルトの名無しさん2005/05/21(土) 13:47:09
たぶんダイクストラの言った「goto文は、使うな!」の真意を誰も理解できずに、
間違ったカタチで上辺だけが普及してしまったのだろう
0815デフォルトの名無しさん2005/05/22(日) 10:14:59
>>814
ダイクストラって古代のギリシアあたりで地下に大迷宮を作った人だと思ってました。ごめん。
0816デフォルトの名無しさん2005/05/22(日) 10:29:47
c++でのgotoの扱いってどうなってんだろ?
スコープ抜けたり入ったりする場合に、
なにかものすごいことになってそうだし。
デストラクタの副作用ですごいテク駆使できるかもしれんぞ。
0817デフォルトの名無しさん2005/05/22(日) 10:47:43
myfunc {
goto label; // コンストラクタすっとばして、デストラクタへ

MyClass my; // ここでコンストラクタ

label:
return; // ここでデストラクタ
}

こういう感じのは、コンパイラにはじかれた記憶があるが
0818デフォルトの名無しさん2005/05/22(日) 11:05:22
   
0819デフォルトの名無しさん2005/05/22(日) 11:37:17
>>815
数論書いたひとじゃないの?・・・・アレ?もしかして同一人物?ネタになってない?
0820デフォルトの名無しさん2005/05/22(日) 12:44:21
ダイクストラ死んでたのかよ・・・知らなかった。

goto使用ライセンスみたいなのがあればいいんだけどな。
そうでないと使いこなせもしないやつが悲惨なコード書くんだよ。
だから安全のために一律禁止。
拳銃と一緒かな。
0821デフォルトの名無しさん2005/05/22(日) 15:38:29
>>820
あれか。ロリ犯罪起こしたヤツの部屋に大量なエロゲーがあったから、
エロゲーを条例だぁなんだで全面禁止するようなものか?
0822デフォルトの名無しさん2005/05/22(日) 15:44:53
>821
おまい国語の成績悪かっただろ。
0823デフォルトの名無しさん2005/05/22(日) 15:47:12
gotoもエロゲーも許可制でいいと思うけどなあ。
0824デフォルトの名無しさん2005/05/22(日) 16:28:39
成人までにライセンスとらないと去勢手術
0825デフォルトの名無しさん2005/05/23(月) 20:32:44
>815
もしかしてダイダロス?
0826デフォルトの名無しさん2005/05/26(木) 17:51:27
>>820
で、goto をまともに使えない奴のコードは
何とかフラグがテンコ盛りになる、と。
0827デフォルトの名無しさん2005/05/26(木) 21:34:33
大楠 寅
0828デフォルトの名無しさん2005/05/26(木) 23:49:25
>>99
んなツール10年以上前からあるぞ

世界で一番goto文を恐れなく使う兵のコード
http://pc2.2ch.net/test/read.cgi/tech/1042802490
0829デフォルトの名無しさん2005/05/26(木) 23:51:58
なぜか99にレスつけてる俺に乾杯
0830デフォルトの名無しさん2005/05/27(金) 05:25:39
完廃
0831デフォルトの名無しさん2005/05/28(土) 11:22:27
俺はアンチへの嫌がらせの為に積極的にgoto使ってるよ。
0832デフォルトの名無しさん2005/05/29(日) 18:33:33
goto HELL;
0833デフォルトの名無しさん2005/05/29(日) 18:34:50
he'll be there.
0834デフォルトの名無しさん2005/06/06(月) 20:35:25
gotoって有効範囲は関数内だけでしょ?
グローバル変数よりはよっぽどましだと思うんだけど。
0835デフォルトの名無しさん2005/06/06(月) 21:08:01
>>834
gotoに大騒ぎして反対してるのはBASIC上がりのオサーンだけ
0836デフォルトの名無しさん2005/06/06(月) 21:14:57
>>834
充分に短い関数ならそれは正しい
0837デフォルトの名無しさん2005/06/06(月) 21:16:47
gotoは論理の構造化を破壊する
グローバル変数はデータの構造化を破壊する
0838デフォルトの名無しさん2005/06/06(月) 21:33:34
>>837
釣れますか?
0839デフォルトの名無しさん2005/06/07(火) 03:28:42
>>834
Pascalはそうでもない
0840デフォルトの名無しさん2005/06/10(金) 13:23:06
goto使うとフローチャートが書きにくくなるんじゃね?
使い方によるけど
0841デフォルトの名無しさん2005/06/10(金) 19:00:17
フローチャートはとてもgoto向きな気がするが
0842デフォルトの名無しさん2005/06/10(金) 21:04:45
gotoはイヤだけどフローチャートはいいというのがよく分からない
0843デフォルトの名無しさん2005/06/11(土) 18:05:38
いや、goto使うとフローチャートがゲームブックみたいになってしまわないかなと思って
0844デフォルトの名無しさん2005/06/11(土) 18:40:23
PAD図でどうだ?
0845デフォルトの名無しさん2005/06/11(土) 19:08:39
>フローチャートはとてもgoto向きな気がするが
何故?
0846デフォルトの名無しさん2005/06/11(土) 23:47:33
>>845
勝手にどこにでもいけるだろ、線さえ引けば。
0847デフォルトの名無しさん2005/07/05(火) 07:01:19
goto と if だけで総てのフロー書けるわけだが。
0848デフォルトの名無しさん2005/07/08(金) 17:23:13
制御構文はifとgotoの構文糖でしかないしな。
だから既にある構文の代わりにgotoを使う奴はアフォだし
用意されていない構文の機能をgotoで実現しない奴もアフォ。
0849SOURCE2005/07/09(土) 01:02:32
>>816
基本的にBASIC系以外の言語ではGOTOは無い。

いまさらだがw
0850デフォルトの名無しさん2005/07/09(土) 01:08:44
C も ASM も BASIC 系っと...
0851デフォルトの名無しさん2005/07/09(土) 02:08:12
アセンブラだと構造化部分も無条件ジャンプと分岐命令、
コール/リターン命令だからね。
gotoの乱用は構造化を壊す可能性が高いから極力使うなと言われる。
でも本当にgotoの無い言語は少ない。

>1のリンク先の「本物のプログラマー」はまさにコードの戦士といって
良いような存在。プログラミングに生涯をささげたような人達。
当然こんなプログラマーばかりではPCも含めたコンピューターの一般普及は
もっと遅れていたことだろう。
0852デフォルトの名無しさん2005/07/09(土) 10:20:38
>>851
>当然こんなプログラマーばかりではPCも含めたコンピューターの一般普及は
>もっと遅れていたことだろう。
常人では「本物のプログラマ」になるのは難しいという意味なら同意する。
#PCも含めたコンピューターの一般普及 なんざ望んでいなかったが
0853デフォルトの名無しさん2005/07/09(土) 14:05:40
gotoがないのはjavaとc#だけだと思っていたが
0854デフォルトの名無しさん2005/07/09(土) 15:35:14
C# には goto あるぞ
0855デフォルトの名無しさん2005/07/09(土) 15:37:05
関数の途中でreturnするのはgotoと同じやん
0856デフォルトの名無しさん2005/07/09(土) 15:47:10
>>854
実装無しの、単なる予約語じゃなくて?
0857デフォルトの名無しさん2005/07/09(土) 15:47:45
ちなみに java のバイトコードレベルでは goto も gosub も有る

ふと思ったんだけど java のソースレベルで制限無しの goto が無いのは、
スタックの状態をブロックの前後で統一しなくてはならない仕様があることに関係するのかも
0858デフォルトの名無しさん2005/07/09(土) 15:48:08
>>856
予約語じゃなくて、ちゃんと飛べる
0859デフォルトの名無しさん2005/07/09(土) 15:49:08
あ、ごめん。「実装無しじゃなくて、ちゃんと飛べる」
0860デフォルトの名無しさん2005/07/09(土) 15:51:11
>>858-859
サンクス
goto 無いのは Java だけか
0861デフォルトの名無しさん2005/07/09(土) 17:47:33
君の知ってる言語の中ではね
0862デフォルトの名無しさん2005/07/09(土) 17:50:10
あ、sh も無いか
0863デフォルトの名無しさん2005/07/09(土) 22:23:00
>>855
アホか
分岐後の処理の一方が短いだけじゃん
図を描いてよく考えろ
0864デフォルトの名無しさん2005/07/09(土) 23:03:02
>>855
つ 構造化定理
0865デフォルトの名無しさん2005/07/10(日) 20:00:44
func () {
    // 処理1
    return;
    // 処理2
}

は、事実上

func () {
    // 処理1
    if (FALSE) {
        // 処理2
    }
}

と等価だけど、

func () {
    // 処理1
    goto EXIT;
    // 処理2
EXIT:;
}

の方が近い希ガス。俺は return = 制限付き goto 派
0866デフォルトの名無しさん2005/07/10(日) 20:04:13
finallyのない言語でreturnしまくる奴はアフォ
0867デフォルトの名無しさん2005/07/10(日) 20:05:11
俺は各種の制御構文の中だとcontinue;が1番gotoっぽさを感じる。
0868デフォルトの名無しさん2005/07/10(日) 20:15:25
continueとbreakは制限付きgotoだからね
0869デフォルトの名無しさん2005/07/10(日) 20:17:05
全ての制御構文は制限つきgotoだろ
0870デフォルトの名無しさん2005/07/10(日) 20:19:48
とりあえず、先日ふと考えてたんだけど、


順次・分岐・反復 …… 構造化構文
それらで表現できない構文 …… 全部 goto 等価

goto の中で、「〜にジャンプする」 の意味を持つもの …… 制限付き goto (目的あり goto)
ただ 「ジャンプする」 しか意味を持たないもの …… 普通の goto
0871デフォルトの名無しさん2005/07/11(月) 11:12:28
gotoに貴賎は無い。全てのgotoは平等である。
ただ飛び先の前後の文脈が異なるだけで
0872デフォルトの名無しさん2005/07/15(金) 02:37:26
schemeの継続は状態付きgoto
0873デフォルトの名無しさん2005/07/28(木) 19:20:00
ところで最近、関数本体の長さが十分に短ければ(〜20行程度)、いくらgotoを使ってもたかが知れると悟った。
がんがん使っても全然問題ないと思うようになった。

いや、もちろん使う機会は限られているよ。
break, continueとかで済むならそっちを使うよ。
0874デフォルトの名無しさん2005/07/28(木) 20:46:46
>>873
同意。私は構造化構文が無かった時代からPGをやっていて同様の見解を持っている。
だが、そのような見解を構造化言語以降のPGが持つ例は非常に少ないのだ。
gotoが有害なのは有害になる文脈で使用されるからだ。
使う機会が限られているというのも正しいね。
0875デフォルトの名無しさん2005/07/28(木) 20:54:54
ついさっき2416STEPなFunctionでGoto乱れ打ちを見ました。
今日はもう帰ります。
0876デフォルトの名無しさん2005/07/28(木) 21:24:08
もう
0877デフォルトの名無しさん2005/07/29(金) 00:57:14
。・゚・(ノД`)・゚・。
0878デフォルトの名無しさん2005/07/29(金) 01:12:41
CPSで組めばgotoいらない
そんな気がして
0879デフォルトの名無しさん2005/07/29(金) 05:38:24
つかアンチは実際にgoto悪用するソースを見たことあるのか?
俺は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;
}
08838822005/07/29(金) 20:52:06
戻り値の型は result_t* じゃなくて item_t* でした。
0884デフォルトの名無しさん2005/07/29(金) 22:09:37
そんなのは
#define FOUND { p->data = data; return p; }
でも充分な気が
0885デフォルトの名無しさん2005/07/29(金) 22:17:38
>>884
そういうマクロの使い方はgotoよりよっぽど危ういだろ
0886デフォルトの名無しさん2005/07/29(金) 22:18:05
↑これが噂の盲目的安置か
0887デフォルトの名無しさん2005/07/30(土) 19:41:40
>>884
それならgotoの方がいい。
0888デフォルトの名無しさん2005/07/30(土) 20:54:26
>>882
無茶苦茶な例題だなぁ。
0889デフォルトの名無しさん2005/07/30(土) 20:55:39
全然
0890デフォルトの名無しさん2005/07/30(土) 21:24:16
>>888
882は、こういうときこそ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:58
っか>>891じゃうごかねーぢゃん。スマソorz
0894デフォルトの名無しさん2005/07/31(日) 16:54:14
ring_bufferがグローバルだとか
startの値域外確認機能欠落とか
突っ込みたいところはあるけど
面白かったよ
0895デフォルトの名無しさん2005/07/31(日) 23:33:18
> ring_bufferがグローバルだとか
> startの値域外確認機能欠落とか
関数名がhogeだとかな。
例にそういうツッコミ無粋な希ガス。
08968802005/08/01(月) 12:42:09
item_t* set_data_in_range(int id, int data, int offset, int length)
{
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);
}

08978802005/08/01(月) 12:44:10
こんなことすると goto 派は「無理に分k(ry」と怒るかもしれないが、
[offset, offset + length) の間を処理する関数を作って、それを応用する
方が再利用性が高いと思うけど、どうだろう。今回のは goto を使うケースでは
ないと思う。

毎回 data をセットする度に for (p = ...) {...} なんて書くのはアホらしいし。

命名に迷った時に付けた set_data_in_range と set_data_n 混ざってる…_| ̄|○
同じ関数です、ハイ。
0898デフォルトの名無しさん2005/08/01(月) 13:01:43
俺だったら検索だけの関数を作って、こう書く。
item_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:02
どっちにしても

    for(p = p_start; p != p_end; ++p)
        if(p->id == id )return p;

の部分は関数なりマクロになりにした方がいいんじゃないのか?
同じアルゴリズムが、同じ関数の二箇所で使われてるのはどうかと思う。
0900デフォルトの名無しさん2005/08/01(月) 15:39:57
>>899
重複部分をひたすらマクロに置き換えていくと
必ずわけのわからんソースになる。
メンテする人間が発狂するからやめとけ。
0901デフォルトの名無しさん2005/08/01(月) 18:15:30
速度が要求されるなら、データ受け渡しはインライン関数にする。//pure な Cでは無理か?
速度が要求されないなら
for(i=0;i<LENGTH;i++) if(ary[(i+start)%LENGTH)] == data) ...
みたくループを一つにする。
LENGTH が 1024 とかなら、(i+start) & 0x3FF と書けるから後者でも多少高速かと。
0902デフォルトの名無しさん2005/08/01(月) 19:56:27
>>901
for文の終了条件が少し違いますね。

自分だったら反復部分だけを下位関数にして二回参照を書きます。
0903デフォルトの名無しさん2005/08/01(月) 20:56:03
>>900
ちゃんと分離すれば、訳分からんことにはならんだろう。
同じオペレーションをマクロにするのは別に構わないと思う。

マクロだと分かるようにしておけば(全部大文字が慣例だな)、
副作用を招くような式を入れることもないし。

同じオペレーションがアチコチに散見するほうがずっと問題。
0904デフォルトの名無しさん2005/08/01(月) 22:30:10
for文込みのマクロをアチコチばら撒く奴は経験的にいって間違いなく低脳
goto避けるためにやってるとしたらさらに低脳
0905デフォルトの名無しさん2005/08/01(月) 22:47:18
単独で完結しないマクロというのは相当慎重に使わないといけない。
returnしたりgotoしたりするなんて論外だと漏れは思う。
0906デフォルトの名無しさん2005/08/01(月) 23:16:18
マクロで、俺言語を作るのは止めていただきたい。
0907デフォルトの名無しさん2005/08/02(火) 01:46:32
マクロで済ますか。。。
と思うレベルのものはインラインに記述したままの方が読みやすいことがしばしば。
関数にすっか。。。
と思うレベルのものはそのうち同じロジックが別の箇所で現れて
やっぱ関数にしときゃ良かったと思うことがしばしば。

必ずしもそのとおりにいかないこともしばしば。
0908デフォルトの名無しさん2005/08/02(火) 04:16:53
>>907
おまえのレスは何の役にも立たないな
0909デフォルトの名無しさん2005/08/02(火) 10:15:16
まあCだとマクロが貧弱だからしょうがないわな。
lisp系ならマクロで俺言語が当たり前なのだが。
0910デフォルトの名無しさん2005/08/02(火) 18:46:32
そうかい、じゃまたね。
0911デフォルトの名無しさん2005/08/02(火) 19:26:15
マクロが嫌なら、inline にすればいいのに。
                     マリー・アントワネット
0912デフォルトの名無しさん2005/08/03(水) 18:14:46
C++で書けば、殆どのgotoは駆逐可能。
多分可能だと思う。
可能じゃないかな。
まぁちょっと覚悟はしておけ。
0913デフォルトの名無しさん2005/08/03(水) 18:25:55
>>912
C++に限らず多重gotoと多重continueがないとつらい。
0914デフォルトの名無しさん2005/08/03(水) 18:29:53
>>913の代わりに、「多重breakの間違いでした」と言っておく。
09159132005/08/03(水) 18:31:14
○| ̄|_
0916デフォルトの名無しさん2005/08/03(水) 18:58:38
java だと for や while にラベルをつけて break や continue のときに指定できるんだっけ?
0917デフォルトの名無しさん2005/08/03(水) 19:00:21
そういえば、そんな文法もあったな。使ったことねーや。
0918デフォルトの名無しさん2005/08/03(水) 23:57:26
多段breakはほしいが、多段continueはどうなんかねえ?
必要だと思ったことないや
0919デフォルトの名無しさん2005/08/04(木) 00:15:15
>>912
年齢がある程度わかってしまうな。 ̄m ̄ ふふ
0920デフォルトの名無しさん2005/08/04(木) 01:19:12
>>912
全ての構造化言語においてgoto使用が不可避な場合は存在しない。
それにも関わらず、ここはgotoを使う兵のスレなのだw

#そしてgotoが使えないjavaについて話すのはスレ違いだw
0921デフォルトの名無しさん2005/08/04(木) 01:38:27
C++ は finally がないから goto 使いたくなる時がある。
0922デフォルトの名無しさん2005/08/04(木) 01:41:51
>>919
言ってくれるな
09239192005/08/04(木) 01:49:07
>>922
(^∇^)
オレもたぶん同じくらいの年齢だと思うよ。
09249222005/08/04(木) 01:50:37
俺912じゃないんだけどねw
俺の親父と同じ世代だよ
09259192005/08/04(木) 02:17:12
>>924
すごい状況だ。親子ほど歳の離れた見知らぬ2人が2chしてる。
学生???たぶん、オレの方が親父さんより下だとは思うが、
目くそ鼻くそだと思うわ。
0926デフォルトの名無しさん2005/08/04(木) 02:47:14
goto hell
0927デフォルトの名無しさん2005/08/04(木) 07:40:33
>>921
同意。auto_ptr<>がある!とか言う香具師もいるが、何もメモリ解放だけがfinallyの役割じゃないし。
それに、newがあるのにdeleteの無いスマポはキモス...
0928デフォルトの名無しさん2005/08/04(木) 08:47:09
>>921
VCとBCCにはあるんだなこれが。
0929デフォルトの名無しさん2005/08/04(木) 12:30:42
>>928
gccにもあればとりあえず仕事で実用できるんだが。

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
> 何もメモリ解放だけがfinallyの役割じゃないし。
詳しく。
0932デフォルトの名無しさん2005/08/06(土) 18:30:34
FILE *fp = fopen();
try{


}
finally{
fclose(fp);
}
0933デフォルトの名無しさん2005/08/06(土) 18:34:11
まぁ↑の例はfstream使えよ!となりそうだが・・・
メモリ解放に限らず、「確実にやりたい後始末的処理」を書くのにfinallyは便利。
後始末をfinallyにしとけば、try内部では心おきなくbreakもreturnもthrowもできるので、精神衛生上非常によろしい。
0934デフォルトの名無しさん2005/08/06(土) 18:42:07
fclose(NULL);
ってどういう動作するか決まってたかな?
0935デフォルトの名無しさん2005/08/06(土) 18:46:32
はいはい。
FILE *fp;
if(fp = fopen()){
try{


}
finally{
fclose(fp);
}
}
0936デフォルトの名無しさん2005/08/06(土) 22:31:37
>>933
VC/BCCなど一部の独自拡張を使うということの方が俺にとってはよっぽど精神衛生上良くない。
09379332005/08/06(土) 23:41:57
>>936
いや、finallyがある言語なら、精神衛生上望ましい記述ができる、というだけで、
CやC++でfinallyを使うのは、俺も精神衛生上よろしくないです。
だから、標準でfinallyを導入して欲しいぞ、と。
あとプロパティも欲しい。デリゲも欲しい。RTTIも欲しい。ガベコレは要らん。
09389332005/08/06(土) 23:46:37
あいやぁ、RTTIは標準化されてたのね。
0939デフォルトの名無しさん2005/08/07(日) 05:54:07
longjmpを使ったtry&catchのマクロって駄目か?便利なんだが。
gotoも駄目だったら例外の処理は一体どうすればいいんだ?

そういやVCだとCでも例外処理機構が付いてるんだよな。使ってる人いる?
0940デフォルトの名無しさん2005/08/07(日) 12:31:20
>>937
(´-`)。oO(…C#…)

>>939
> そういやVCだとCでも例外処理機構が付いてるんだよな。使ってる人いる?
ちょっと上のレスぐらい読めよ。
0941デフォルトの名無しさん2005/08/07(日) 17:40:38
なんでC++はfinally実装しなかったんだ?
この件についてハゲ氏はなんか言ってる?
0942デフォルトの名無しさん2005/08/07(日) 19:31:35
java には goto がない代わりに、for とか while とかにラベルをつけて break, continue で飛ばすことができる

なぜか if にも付けられた
もしかしたらブロック単体にも付けられるかも知れない
0943デフォルトの名無しさん2005/08/07(日) 20:11:04
このスレ的にはジェームズ・ゴスリング達(javaを開発した連中)はgotoから逃げ出したチキン。
0944デフォルトの名無しさん2005/08/07(日) 20:58:34
Java3の目玉機能はgotoの実装
0945デフォルトの名無しさん2005/08/07(日) 21:20:14
java2 と java5 はあるけど、java3 ってあったっけ?
0946デフォルトの名無しさん2005/08/07(日) 21:21:52
Java5じゃなくてJ2SE5.0だろ。
0947デフォルトの名無しさん2005/08/07(日) 21:24:56
おう。もうしわけない。
0948デフォルトの名無しさん2005/08/08(月) 01:04:04
>>941
言語使用を変えなくてもライブラリで対応できる機能はライブラリで、って方針なんだろ。

あのな、finallyがあれば2〜3行で書ける処理を、わざわざクラス実装して、スマートポインタに食わせて・・・
なんてやっているほど、俺たちは暇じゃないのよ>ハゲ氏
0949デフォルトの名無しさん2005/08/08(月) 02:59:33
スマートポインタに食わせる必要は無いからお前の方がハゲ
0950デフォルトの名無しさん2005/08/08(月) 03:47:10
finally は速やかに言語仕様に加えて欲しいよ。
複数の言語に存在してるのは、
それだけ汎用性のある構文だからだし。

goto を使うのを恐れるヘタレと罵られてもいいから
今すぐに finally を追加して欲しい。
生け贄が必要なら、for か while のどちらかを殺してもいい。
0951デフォルトの名無しさん2005/08/08(月) 04:35:57
>>950
勝手に殺すな!
for も while もとってもいいやつなんだぞ。
生贄なら、お前がなれ!
0952デフォルトの名無しさん2005/08/08(月) 06:20:07
#define while(_) for(;_;)
0953デフォルトの名無しさん2005/08/08(月) 19:47:28
>>952
先生!do〜while が変なんです!
コンパイルエラーにはならないのに!
09549532005/08/08(月) 19:48:32
あ…
0955デフォルトの名無しさん2005/08/08(月) 19:56:04
神様、生贄にwhileを差し出します、finallyを私達にお与えください。
神様、生贄にforを差し出します、多重breakを私達にお与えください。





























・・・・・・・・・ break使えないじゃん。
0956デフォルトの名無しさん2005/08/08(月) 20:01:06
whileが消え去り、forが消え去り、break, continueが使えなくなり・・・

結局 goto だけが残りましたとさ。
0957デフォルトの名無しさん2005/08/08(月) 20:03:28
if/gotoだけで事足りる品。
目先の便利さを追求して重複機能をどんどん取り入れていくと
C++やRubyのような汚い言語になってしまう。
0958デフォルトの名無しさん2005/08/08(月) 20:06:32
>>957
なんだとー、貴様!
ハゲに誤れ!
0959ハゲ2005/08/08(月) 20:13:11
灼熱の鉄板に頭を押し付けて謝れ
0960デフォルトの名無しさん2005/08/08(月) 20:51:37
チューリングマシンだけで事足りるしな。
目先の便利さを追求して重複機能をどんどん取り入れていくと
ノイマン型マシンような汚いコンピュータになってしまう。
0961デフォルトの名無しさん2005/08/09(火) 07:21:47
>>941
いちいち毎回finally書くのアホらしいから
コンストラクタで確保して、デストラクタが開放って考えだろ
ヒープだろうが、ファイルハンドルだろうがな

こっちの方が手間要らないし
後始末忘れるうっかりさんも発生しない
0962デフォルトの名無しさん2005/08/09(火) 07:23:43
ヒント:new,delete
0963デフォルトの名無しさん2005/08/09(火) 07:33:42
open();
try{
 ...
}finally{
 close();
}
をいちいちクラスに切り出すアホらしさときたら!
0964デフォルトの名無しさん2005/08/09(火) 07:49:08
一回クラスに実装すれば、二度目いらんやん
finally節を毎回コピペするようなあほらしさこそ無用
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
>>965
あんまりスタックに物を置きたくないし
0967デフォルトの名無しさん2005/08/09(火) 09:59:00
そこじゃなくてbのnewに失敗したときにaがメモリリークするのが、
このコードの問題じゃないの?
0968デフォルトの名無しさん2005/08/09(火) 12:00:07
finallyいらんて奴素でいるのか・・・
C++使うと脳が歪むという噂は本当のようだ。
0969デフォルトの名無しさん2005/08/09(火) 13:25:46
ちょっとしたものを簡単に作りたいときならfinalyはあってもいい。
本格的なものを作るときならクラスに切り出してデストラクタに任せる。クラスにするのは面倒だけど、使うときには楽できる。

finalyはあれば便利だけどなくても困らないよ。
0970デフォルトの名無しさん2005/08/09(火) 13:32:34
>なくても困らないよ。
出た、話をうやむやにできる魔法の言葉ww
無いなりに何とかやりくりしてるなんてのはどうでもいい話だ。。
0971デフォルトの名無しさん2005/08/09(火) 13:43:20
>>970
うん。
俺は何とかやりくりしていて、それで問題ないと思うから要らない。
0972デフォルトの名無しさん2005/08/09(火) 13:51:43
直接コード入力が可能ならプログラム言語は要らないよね
0973デフォルトの名無しさん2005/08/09(火) 13:56:52
finalyはスルーするべきなのか?2箇所だぞ?
0974デフォルトの名無しさん2005/08/09(火) 14:35:44
がいしゅつ
>>751-
0975デフォルトの名無しさん2005/08/09(火) 16:27:02
>>971
じゃあお前はアセンブラだけあれば十分だな。何とかやりくりすればそれで問題ないだろ?
0976デフォルトの名無しさん2005/08/09(火) 17:15:50
969はアセンブラでやり繰りできるとは書いてないし

それよりgotoの話をしやがりませんか
0977デフォルトの名無しさん2005/08/09(火) 21:34:51
gotoの使いどころなんて山ほど提示されていてしかもそれが
それほど可読性を低下させない範囲でgotoを使わないように書き換え可能。
gotoに抵抗がないなら使えばいいしgotoが悪だと洗脳されてる奴は使う必要はまったくない。
gotoに関する議論で他にすべきことが何かあるのか?
0978デフォルトの名無しさん2005/08/09(火) 21:37:01
宗教なんだよ
0979デフォルトの名無しさん2005/08/10(水) 03:12:17
古い教科書に未だに縛られている、柔軟性に乏しい方々ですよ^^
0980デフォルトの名無しさん2005/08/10(水) 09:10:44
>>977
「gotoが悪だと洗脳されている奴」の発言に対して、
まともに対応する振りをして、心中憐れむ
という楽しみが
0981デフォルトの名無しさん2005/08/10(水) 09:21:11
>>969
>ちょっとしたものを簡単に作りたいときならfinalyはあってもいい。

それは良く分かるけど
C++は本格的なものを作る方の道具だからねえ
0982デフォルトの名無しさん2005/08/10(水) 11:33:03
既存のN88-BASICのプログラムををCで書き直すなら、gotoをそのまま使えばそのまま書き換え可能だな。
0983デフォルトの名無しさん2005/08/10(水) 12:44:57
>>982
N88-BASICが現役の頃、そういうソースを見たことがある
Cで見事なスパゲッティが
0984デフォルトの名無しさん2005/08/10(水) 13:37:12
>>982,983
こんなカンジ?

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:17
>>984
N88-BASICにはラベルが使えたような
0986デフォルトの名無しさん2005/08/10(水) 18:56:31
>>981
>C++は本格的なものを作る方の道具だからねえ

よく恥ずかしげも無くこんな台詞が吐けるな。
finallyなんて出る幕が無い、お前さんが書いた本格的プログラムとやらを見せてくれよ。

それに、本格的なプログラムの中には「ちょっとした処理」は一切含まれないの?

まぁお前はfinallyが無いがために、一回しか使われないクラスを頑張って書いて、ソースの可読性を落としてくれや。

俺はクラス名を考えるのすら面倒だ。
0987デフォルトの名無しさん2005/08/10(水) 19:01:55
てか、finallyなんて知らないんじゃねーの?

同じ処理を実現するにあたって、
それが読みやすく&簡単になることが悪い訳ない。
0988デフォルトの名無しさん2005/08/10(水) 20:07:26
986 を弁護するわけじゃないけど、読みやすいかどうかは人によって違うのでは?
0989デフォルトの名無しさん2005/08/10(水) 20:08:00
悪い。986 じゃなくて 981 だな。
0990デフォルトの名無しさん2005/08/10(水) 20:18:30
finallyといえば、Delphiの、

with THogeClass.Create do try
 //いろんな処理
finally
 Free;
end;

インスタンスのポインタ変数すら定義しない技法が好き。
まぁ関数の頭に戻って定義するのも面倒だからな>Pascal
0991デフォルトの名無しさん2005/08/10(水) 20:31:40
goto文にラベル使うなんて真のgoto文じゃないだろ。
男なら行番号
0992デフォルトの名無しさん2005/08/10(水) 21:48:39
>>991
Fortranの行番号は「数字しか使えないラベル」なんだが
BASICしか知らないクチ?
0993デフォルトの名無しさん2005/08/10(水) 21:53:07
>>992
だから何?Fortranの知識をひけらかしたい低脳のクチ?
0994デフォルトの名無しさん2005/08/10(水) 22:00:37
大半がCのgotoの話してるのに、
行番号云々を持ち出してくるお前は空気嫁。
0995デフォルトの名無しさん2005/08/10(水) 22:07:12
>>986
ちょっとした処理だと思って、誰かがfinallyを使う
 ↓
誰かがヘボいメンテして、finally内の処理が増える
(多分、数倍ぐらいには平気で増えるね)
 ↓
似た機能が必要になって、そのソースがコピペされる
 ↓
コピペしたソースを改変する際に
finally内に書くべき処理が抜けて、資源がリークする

まあ、実用プログラムなら
少なくない確率でこうなるわな

書き忘れが無くてもリークする例もあることは、前に記した通り

資源を管理するクラスを作ったほうが、健全
0996デフォルトの名無しさん2005/08/10(水) 22:59:23
new を直接書くなってことでは
0997デフォルトの名無しさん2005/08/11(木) 01:29:08
>>997
> まあ、実用プログラムなら
> 少なくない確率でこうなるわな
なりません。
0998デフォルトの名無しさん2005/08/11(木) 01:30:02
>>997
> >>997
>>995 だった。
0999デフォルトの名無しさん2005/08/11(木) 01:58:39
俺も俺も!! 偶然見掛けて記念マキコ
1000デフォルトの名無しさん2005/08/11(木) 01:59:45
// goto L_1000;
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。