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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
goto文を恐れなく使う兵達のスレです。

ちなみに、スレの題名は、
http://www.genpaku.org/realprogrammerj.html

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

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

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

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

関数を2段で組むより、

end:
leaveCriticalSection();
return;
}

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


loop:
if(i < 0)
goto end;

func();

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

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

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

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

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

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

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

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

http://www3.toshiba.co.jp/sic/seigyo/scf/sys01_07.htm
>>99
そのキャプチャの中の上の図、
単純な構造をわざと複雑に書いてねぇか?(w
101デフォルトの名無しさん:02/05/15 09:34
gotoにスコープってあるの?
Cなんかで、ひとつの関数の中から他の関数の特定の行へ飛んだりとかってできない?
そういうことはインラインアセンブラで
gotoは命令?文?
>>101
それこそ普通やっちゃまずいことじゃないか?

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

煽ろうと考えたのは以下の通り:
>goto文を恐れなく使う兵達のスレ
なるほど、gotoを使うのは、下っ端の兵隊さんだけなんですな。
「兵」は「つわもの」と読ませたいのだと思われ。
>>109
優秀な兵がいないと将は無力。
112age:02/05/15 19:05
109を晒しage!!!
恐れすだが
>>47

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

func();

i--;
goto loop;
end:

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

一番よく使うiアプリは16進電卓らしい…
115デフォルトの名無しさん:02/05/16 06:29
>>103
人名です。
エディットコンティニューをしらんのか、そいつわ
117haruka:02/05/16 07:46
>>116
多分知ってると思いますが。
>>114
組み込み出身の方ですか??
ロード時間が勿体無いほどかかるって事は、組込かゲームだろう
120haruka:02/05/16 10:13
組み込みです。



小金井市中町4-14-3西村コーポラス205
神奈川???・阿倍野区橋本町6-30
オー・ムムム・ゴーサン・クニムイ
鵜沼 安希雄と風本純男(年収1000マン!)
122デフォルトの名無しさん:02/05/16 13:03
>>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/

      a = -b
      -a =  b

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

>>123
はじめ->minus->plus->minus->plus->...
無限ループしない?
      a =  1
      b = -1   とか

      a = -b
      -a =  b

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

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

hoge:{
  for(int i=0; i<k; i++){
    while(a!=b){
      …
      break hoge;
    }
  }
}
一番外の中括弧は省略できるかも
gccはgotoのラベルを変数に代入できるらしい。
>>130 それいいね 実行中断と継続が書けそう
おとなしくそこだけインラインアセンブラで書いとけ
gotoなんて使わん!
133デフォルトの名無しさん:02/05/18 14:16
>>130
それ標準仕様になればすげー便利なんだけど。
134デフォルトの名無しさん:02/05/18 14:38
#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;}

おえ…
後藤マンセー
137棄教者 ◆witdLTi2 :02/05/18 16:39
要らないところでgoto使いすぎ。
解読メモより

gott->gtto->gtot->exit();
gtgo->tggo->tgog->togg
otgg->ogtg->ogoo->gooo->oogo->togg
ggto->ggot
このあたりは条件分岐なしで素直につながっていた。
間違っていたら恥ずかしいので名無しさんで。
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();
}
exit じゃなくて return にしてほスィ
tuka "exit()" ってしてもいいの?
最近gotoつかった。
func(){
  char *a;
  if((a = malloc(100)) == NULL)
    return;

  if(エラー)
    goto Exit;

Exit:
  free(a);
}
みたいなかんじで。
142デフォルトの名無しさん:02/05/18 20:28
多重継承を恐れなく使う兵達のスレを作っても良いですか?
>>142
許可します。
Java も C# も
なんでラベルなんていう概念引きずってるんだろうね。
switch は書きづらい読みづらいし。

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

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

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


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

 後藤 文
>>http://www.genpaku.org/realprogrammerj.html を書いた人へ

本物のプログラマはぐだぐだ言うな。
175棄教者 ◆witdLTi2 :02/07/15 08:41
関数の再帰呼び出しと同じことを後藤さんにやらせる方法を教えてください。
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;
}
本物のプログラマはOSなんて使わない。
本物のプログラマは画面描画からメモリ管理、ファイルシステムまで全て一つのアプリケーションの中に実装します。
本物のプログラマは画面描画からメモリ管理、ファイルシステムを、
それぞれのモジュールに分割します
180厨房:02/07/17 22:38
C使いなんですけど

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

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

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

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

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

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

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

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

>>199
忠告サンクス。気ィつけるわ。
jmp >>1;
int main(){
  int i;
  goto hoge;
taeko:
  if(i)
    goto inotikaragara;
hoge:
  i = 2;
  goto taeko;
  i = i*3.14159265358979;
inotikaragara:
  return 0;
}
ま  だ  こ  の  ス  レ  あ  っ  た  ん  で  す  ね
207棄教者 ◆witdLTi2 :02/08/06 15:51
ご報告いたします。
たった今生まれて初めてCで後藤さんのお世話になりました。
思い切って使うと結構いいですね。
__asm {
5nbsp;jz >>1
}
209デフォルトの名無しさん:02/08/08 04:21
hhhhhhhhhhhhhっひいいいいいいいいいいいいいいいいいいいいいいいい
210デフォルトの名無しさん:02/08/08 04:26
      バンっ
カチャ      
;y=ー( ´ー`)・∵.  ‐
\/|>>1|)  ・∵.
211デフォルトの名無しさん:02/08/08 18:10
こんなスレッドがあった。
http://news2.2ch.net/test/read.cgi/newsplus/1028795049/
213デフォルトの名無しさん:02/08/09 00:08
後藤
後藤 文(19)を恐れなく使う兵達の…
215デフォルトの名無しさん:02/08/09 01:01
フミたんハァハァ(;´Д`)
もしかしたら、「あや」たんかもしれない
217棄教者 ◆witdLTi2 :02/08/09 10:47
フミたん(19歳:臨時講師)。
219 :02/08/09 14:43
アニメーションさせるときは goto , timer のどっち
ティメール後藤
>>219
当然大麻
>>217
2こめは、雪が深かったりして良いかも。
ブリジッド先生さようなら。
223デフォルトの名無しさん:02/08/10 00:24
誰も >>211 を理解できないのか?
>>223
えづかさんが亡くなられたことだけは理解できますた。
何のスレだ?
とりあえず和田マキコ
マッコにおまかせ。
おまえら、ダイクストラだぞ、ダイクストラ。
父は化学者、母は数学者、オランダ人で数学的な手法をコンピューターサ
イエンスに取り入れた。アルゴリズムにおける貢献大、チューリング賞を
はじめ数々の賞を受賞。音楽にもすぐれモーツアルトは玄人はだし。
とかいろいろ書いてあるなかに、goto文をどうにかしたらしことも書いてある。

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

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

で、真紀子がどうしたって?
goto文を恐れなく使うといえば、
和田秀男「コンピュータと素因数分解」でしょう。
Cのプログラムが、ほんとにgotoだらけ。
>>230
辞任
233デフォルトの名無しさん:02/08/17 02:28
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
234デフォルトの名無しさん:02/08/17 02:29
UWAAAA SUPE-SU GA t$
235デフォルトの名無しさん:02/08/24 12:28
こんなの思いついたんで、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);
    }
}

>>235
惚れた…。
237デフォルトの名無しさん:02/08/24 13:04
>>235
重大な欠点が・・・・・
238236:02/08/24 13:09
ん?何かあるの?
239デフォルトの名無しさん:02/08/24 13:19
他の関数からthrowできないだろう?
240デフォルトの名無しさん:02/08/24 13:23
期待しすぎ...
gotoの隠蔽と例外処理の定式化のみが目的です。
241デフォルトの名無しさん:02/08/24 13:24
君には失望させられたよ
242デフォルトの名無しさん:02/08/24 13:51
後藤? ゴマキのこと? 石川の方が好きだな、俺は。
243236:02/08/24 13:57
…あ、ホントだね。
やっぱりコンコンでしょ
死守sage
246デフォルトの名無しさん:02/08/24 18:33
goto神
>>240
ネストもできん。
248棄教者 ◆witdLTi2 :02/08/26 10:06
後藤さんは使いませんが近藤さんは恐れなく使ってます。
おかげで生まれて二七年、
一度も性病にかかったことも彼女を妊娠させたこともありません。
彼氏に打ち明けられない苦痛。。。か。
>>74
Knuthを糞呼ばわりするのは、岩谷あたりの受け売りだろ。
74は間違いなくKnuth以下の役立たず。
 失礼ながら、まだココあったんですね。
 2〜3ヶ月にちゃんねるに来ていなかったから、正直驚いた(^^;

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

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

start:
なにかの処理




if(処理続行?)
  goto start;

268 ◆oZFvlbPXjs :02/11/02 19:47
>>266
すげぇ、どうやったの??
エディットコンティニューをしらんのか、そいつわ
↑のE-mail欄 yqqssggg
271デフォルトの名無しさん:02/11/22 18:08
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);
}
10 GOTO 20
20 END
273デフォルトの名無しさん:02/11/22 21:09
Javaでは gotoという文字列はキーワードとして予約されているため名前には使えないが、このスレッドで語られるようなgoto文としては使えない(使用禁止にしている)。

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

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

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

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

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

>>276
笑った
たしかに引きずってるのはJavaのほうだな

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

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

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

それくらいの用法ならJavaにはラベル付きのbreak文がありますけど。
なんだ、Javaにもgotoあるのか・・・
>>295
>>深いネストから飛ぶとか限定的な利用法から議論を進めているだけと思われ。
                .^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>それくらいの用法ならJavaにはラベル付きのbreak文がありますけど。
 君,揚げ足取りっていわれんか?
298デフォルトの名無しさん:02/11/25 02:00
>>284
283 != 287 、はずれです。
273 == 283 == この記事の投稿者 です。
このスレッドでここまでの私の投稿はこれだけです。

>>291
コードコンプリートの意味がわからず検索してみたら本、その本知らず。

つまり、goto主義者は速度重視主義?
何というか職人的?

>>296
だから使えないって。gotoという変数を宣言することはできないけどgotoを使うことはできません。Sunが使うかどうかためらって使用禁止にしたんでしょう。

バグ検出だけなら、Javaにはgotoの代わりになるものとして、try - catch節 で代用できるものですよ。try -catch使うことでgoto使っている気分になっています。
J2SE1.4にはassert機能もついて、goto文に頼らずにlogに使えるね。

goto使える利点といえば、一人でプログラミングするとき、万が一他人にソースコードを盗まれても解読しづらくなり技術者生命が経たれにくいという利点がありますね。
なんでこんなに興奮してるのか分からん...
頭冷やさないといいgoto文を書けませんよ?
で、実際おまえらgoto使ってるんでしょうか?
たまに使いますよ。
gotoは確かに危険だが、
その危険なところと以下に折り合いを付けて進んでいけるかが
プログラマーの腕の見せ所だからね。
>プログラマーの腕の見せ所だからね。
・・・
アセンブラにすればみんな一緒
Cでgoto文を使わない奴は厨房
C++でgoto文を使う奴は厨房
Javaでgoto文を使う奴は神
使うなら,使いどころを限定して使えばええやん.
適度な使用は別に問題なかろ.
なにをそこまでムキになる.
goto == ダメ
と言ってる人達.
普段はあんまり使わないけど、
解釈実行のときとかswitchと組み合わせて使うかな。
>>305
>>276の言う「ひきずってる人たち」なのでは?
まあ何度もでてるとは思うが、繰り返す。
普通の言語のGOTOは関数内しかジャンプできない。
GOTO使った方が局所的に読みやすくなるなら使った方が絶対いい。
規模が大きくなったからって問題になることはない。
そういう意味では例外のほうが把握しにくくなるな。
最近使ってないなー。
例外とかなら使うけど。
でも、
・continue, break
・関数の途中でreturn
とかは恐れなく使っちゃうな。
これらもgotoの特殊形だよね。

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

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

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

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

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

347brake:02/12/09 15:47
(´-`).。oO(わざと?)
brakeってわざとだよね?
>>346
goto ⊃ javaのbreak だろ。gotoの方が無駄に出来ること多いんだから。
Mandrakeの人?
>>348

> brakeってわざとだよね?

「ブラケ」と読みます。ブラから腋毛がはみ出ることです。 w
後藤タンのブラ毛はぁはぁ
>>351-352

(脱力藁)
javaなら例外をthrowして抜けるのが一番スマート
というネタ
http://www.att.or.jp/perl/man/perlfunc.1.html
goto &NAME

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

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

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

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

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

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

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

うまかった。

俺にはgotoを使うのは無理だと思った。
378IP記録実験:03/01/08 22:33
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を提出することがある。
IP取られたら自作自演できなくなるよ〜〜
>>280
んなことない。むしろ串とかに一番興味あるのは厨房だよ。
>>376
うちのDQN社長は「イープ」
ちなみに「www」は「わわわ」
けんすうって誰?
ネタスレを立てるにしても9割の悪意と1割の良心を心がけます
2ちゃんねるが2ちゃんねるであるためのアイデンティティを放棄したっつーことですな。
犯行予告する馬鹿や訴訟の減少に役立つのはいいかもしれん。つーかそういうのは俺はどうでもいいや。
興味ないもんね。
犯罪ギリギリの危ない系の情報交換ができなくなるのが俺には一番の損失だな。
全板にトマトを実施してみたらいかがでしょうか?
おれはIPだけじゃなく、君達の深層心理を抜く
======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
────────────────────────────
>>773-774
迂闊にもワラタ
yahooのtopにキタ━━━━━━(゚∀゚)━━━━━━!!

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

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

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

ログインができない?
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/
ひろゆきタン、カコイイ!
2ch運営スタッフはどういうつもりなのかは知らないが、
IP抜き取りって、不正アクセスにならないのか?
( ´db`)ノ< 実況にないと思ったら地味にスレタイに納得なのれす。
九品蓮台に至らんと思ふ欲心なければ、八萬地獄に落つべき罪もなし。
飽きるまで書きたらば、死ぬるでもあらうかとおもふ。

=浜田省吾

======2==C==H======================================================

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

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

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

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

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

んじゃ!

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

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

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

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

いっそ今までの金のかからない運営でその分浮いた金を貯金しておいた方がいいと思った。
おれのイズピン記録すんなや
すまん!2連かきになっちまった!俺はマンコとしかかけない小心者なんでメロンパンとは別だからな!!
托イタ刊タ休
敗訴キタ━━(゚∀゚)━━( ゚∀)━━(  ゚)━━(  )━━(  )━━(゚  )━━(∀゚ )━━(゚∀゚)━━━!
おれも
#cMlzzMPq
倉庫番 ★=BG ★=夜勤 ★なのね。。
421山崎渉:03/01/13 18:38
(^^)
423山崎渉:03/01/15 17:59
(^^)
即答で簡潔明瞭な説明のできない教条主義者どもgoto hell;
10秒で初段

つーかそれ以上かかるバカは破門
426147:03/01/20 23:51
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
goto文を使うやつ=改行しないでそのままひたすら1行でくむやつ
安易にgoto使うとスタックオーバーフローするから素人にはお勧めできない
10 gosub 20
20 goto 10

こういうレベルは却下
gotoとmallocのfree抜きとvoid main(void)は厨房の三種の神器ですな。
>gotoとmallocのfree抜きと
ここまで同意

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

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

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

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

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

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

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

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

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
486山崎 渉:03/07/15 14:21

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
みんなHELLって使うよな?
488山崎 渉:03/08/02 02:42
(^^)
489山崎 渉:03/08/15 17:27
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
490デフォルトの名無しさん:03/08/20 20:51
switchとgotoは相性最高!
491 :03/08/21 01:33
漏れわかりにくくならない範囲でなら goto 容認派。

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

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

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

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

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

あと、まあ。参考にgotoは、なんつーかここ読んでくれと…。
ttp://www.cmagazine.jp/src/kinjite/c/
| しかし,本当に恐いのは明確に「goto」と表現しているのではなく「隠れた
| goto文」になっている場合です。
これはその上の pthrow() のことじゃないのかと(ry
これを書いた人はきっと、
C の構造体をがんがってクラスのように使う
渾身のコードも書いてるね。
>>505
上のページにはいけなかったが、下のページは面白い。
下のページで自分に当てはまったのは、gotoとは関係ないが、
引数が多い(30個位のもある)、変数の数をケチって共有する、
ひとつの関数の行数が多すぎる(300行のもある)、「入れ子」のレベルが深すぎる、
数値を直接コードに埋めるだった。人と組んだことが無いから自分が分かれば
良いけど、それでも修復、拡張が困難なのは同じ。
509デフォルトの名無しさん:03/08/30 01:23
>> 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
にしたほうがメンテしやすいです。

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

goto label_%var%
label_1:
label_2:
label_:

みたいなの書くな。
511.:03/08/30 02:27
バッチは

:label_1
:label_2
:label_

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

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

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

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

といったところです。
>>516
> Linux : ttp://www.kyz.uklinux.net/cabextract.php
なんかバグってるようで展開できなかったが、
cygwinにもってってextract.exeを使ったらできた。

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

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

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

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

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

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

あるC言語系の処理系に

TRY{
}CATCH(EXCEPTION){


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

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

#define BEGIN {
#define END }

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

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

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

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

コードの意図がつかめない->コードの変更ができない->メンテできない
ってことだな。なるほど。
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 );
}
ありゃ、せっかくインデントしたのに詰まっちゃうのね。
高速にRAMチェックするルーチン:実働品。普通書くように「比較して不一致なら後ろへ抜ける」
ように書くと余計なジャンプ命令が出て遅くなる。この形がASMで素直に書いたのに一番近い。

「メモリに書いて読む」所は、最適化されるとメモリを読まずにレジスタを判定するコードが出る。
ライトとリードの間にダミーコールをするとメモリを読むようになるが、ループ回数が多いので性能上
好ましくない。百万回の試行錯誤の末、ポインタを後++、先--する手法に落ち着いた。

後ろへ抜けるにしろ前へ抜けるにしろgoto文無しだったらこういうのはどう書けばいい?
> 最適化されるとメモリを読まずにレジスタを判定するコードが出る

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

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

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

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

ところで本題のgotoについてだが、>>543はdo〜while()では駄目なのだろうか。
>>552
>関数の入口と出口は1つにした方が良いって教わった
理由までは教わってないんですか?
関数の入り口を複数にする方法を教えてください。
cではムリ。PL/IやFortran,ASMではENTRY文がある。
559554:04/04/26 17:57
>>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の条件が反対になるから、あ〜いうループ構造になったわけです。
あの書き方が「機械語が最も少ない」出方をするのは「百万回の試行錯誤」で確認済みなのです
100万回も試行錯誤するなら、とっととアセンブラで書いた方が早いでしょう。
どのコンパイラでも>>553のコードが最も早いコードを出力するとは限らないし。
>>543
>こういうのはどう書けばいい?

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

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

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

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

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

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

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

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

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

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

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

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

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

  Λ_Λ  \\
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ >>574
 (_フ彡        /
ヒドイ!
まだ実行してもいないのに!
577デフォルトの名無しさん:04/06/19 17:20
>>570
break break break;

break(3);
でも内容的に同じだよな

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

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

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

volatile int * p;
int * volatile p;

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

ただし、レジスタ上だけで処理するのではなくて、確実にload/storeを吐くと
いうところまではやってくれるようだが。
590デフォルトの名無しさん:04/06/20 19:49
>>589
おまえ、それ規格票読んでねえじゃん
volatileの効果は何だって書いてあるか見てからにしろよ
ベンダにヘタレとか言うのは
思い込みで怒りまくってるクレーマーと変わらんぞそれじゃ
>590
悪いが、あんたが言う規格上のvolatileの効果を説明してくれ。
592デフォルトの名無しさん:04/06/20 20:05
>>591
順番の逆転は認めてやらない
>592
すまんが、何と何の順番の逆転かを教えてくれ。
ついでに、どこから見える逆転かも。
594デフォルトの名無しさん:04/06/20 20:14
規格票もってないならはっきりそういえよ
だからクレーマーだって言うんだよ
ネットで確認したけど、言ってることが理解できていないかもしれないから、
聞いてるんだけど。
そっちこそ、説明できないの?ププ
596デフォルトの名無しさん:04/06/20 20:21
マルチスレッド間で共有する変数とかで、ちゃんと値が伝わるように
指定するんじゃないの?<volatile
597デフォルトの名無しさん:04/06/20 20:22
>>595
ネット? 規格票で確認しろつってんだよ
必須アイテム持ってない勇者は先へ進めねえの
ほら、アドレスやるからさっさと買って来い
www.jsa.or.jp
>>597
お前が抜粋してこればいいだけじゃねーの?w
gotoと関係ないから他所でやれ
599デフォルトの名無しさん:04/06/20 20:35
>>598
乞食が物乞いするときは、それなりの言葉遣いってものを憶えてきなw
日本語読めない人が仕様書読めるとも思えんな
↓じゃあ次の話題行ってみよう
>>596
その理解は間違いの元のようだねえー
602デフォルトの名無しさん:04/06/20 20:39
>>600
仕様書読んでないのはてめーだ ぼけ
変なのが沸いてきたなw
604デフォルトの名無しさん:04/06/20 20:43
仕様書読まない香具師以上に変なのとは?
スレ違いのage厨なリア厨のことでは?
そもそも俺はvolatileの議論には参加してない別人だし
606デフォルトの名無しさん:04/06/20 21:10
はいはい、匿名ってとこに逃げるしかなくなったのね
いいよ逃がしてあげる
必死に返答考えた結果がそれかw
608デフォルトの名無しさん:04/06/20 21:28
逃がしてやったんだからせめて黙れよ
白痴が黙ればいいだけじゃん
610デフォルトの名無しさん:04/06/20 21:32
>>609
そうか、おまえか
>>610
何で黙らないの?w
612大域脱出:04/06/20 21:38
if(ARASHI_EXISTS){
goto 1;
}
613デフォルトの名無しさん:04/06/20 21:38
>>611
こっちは逃がしてやった側で
そっちが白痴だから
>>612
惜しかったな
そのコードにはバグがあったようだ
615デフォルトの名無しさん:04/06/20 21:40
(・∀・)ニヤニヤ
引きどころを見失った厨↓
で、結局、volatileの仕様を教えてよー
夜も眠れん
ただ純粋に厨↑
普通に別スレでやれよ
620デフォルトの名無しさん:04/06/20 21:51
(・∀・) ニヤニヤ        < コジキ カコワルイ
何か、どっちもろくに根拠がないから、示せないんだろーなw
次の話題にいこーぜ
622デフォルトの名無しさん:04/06/20 21:54
(・∀・) ニヤニヤ        < コジキ カコワルイ ore mo syuunyuu tomattara isagiyoku sinu. nenkin ya seikatuhogo de ikiyou towa omowanai.
課題
gotoを使ったコンソールノベルを製作せよ
>>622
年金払うだけ払って死んでくれるとはなかなかいいお人ですね。
625デフォルトの名無しさん:04/06/21 19:35
>>624
みんなそうだよ
これからは
626デフォルトの名無しさん:04/06/22 01:23
#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" );
}
}
}
ム板のループスレはココですか?
>>627
そりゃ、goto使ってるから。
COME FROM >>1
#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" );
  }
 }
}
631デフォルトの名無しさん:04/06/23 23:24
>>630
何が言いてえんだよ!
632デフォルトの名無しさん:04/06/23 23:57
void main()
というところが専門学校DQN臭い
633デフォルトの名無しさん:04/06/24 00:01
>>632
コンパイル通るし、どうでもいいやん。古い処理系にこだわんなや。
634デフォルトの名無しさん:04/06/24 00:04
>>632
それがどーかしたんかよ脱税帝国の申し子さん
またvoid mainで揉めるのか。いつまでもループする話題だな。
>>633 の 「古い処理系にこだわんなや」 とか
>>634 の 「脱税帝国の申し子さん」 が
どうにも意味不明なんですが。
電波は放置で
639デフォルトの名無しさん:04/06/24 18:45
>>632
630が使ってる処理系を確認するのが先だろ
>>589
確実にload/storeしてるなら、volatileは正しく処理されてると思うけど。
それ以上に何を期待してるんだ?
641デフォルトの名無しさん:04/06/25 20:20
>>640
おまえらの議論はvoid mainと同じ
必要情報を調べずにてきとーこいてるだけ
>>641
必要情報って?
643デフォルトの名無しさん:04/06/26 10:29
処理系定義とは何たるかがまるでわかってない真性DQN
本人は技術者気分に酔ってるところが何とも痛い
>>640
>>589 はきっとバグがある事に怒ってるんだよ!わがままだね。

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

首を吊って死ぬ。
ワラタ
659デフォルトの名無しさん:04/07/10 21:51
perform 659.
700 run 1
661デフォルトの名無しさん:04/07/11 00:20
1 NEW
どうしてC系の関数って複数の値を返すように宣言できないの?
引数が複数なんだから返り値も複数書けてもいいじゃん

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

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

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

ってか、格好良く言うと

C言語風アセンブラキター?
677デフォルトの名無しさん:04/10/01 00:02:13
gotoなんかやめてcome fromにすれば解決!!
678デフォルトの名無しさん:04/10/03 16:19:30
HSP厨は平気でgoto使っているね。
まぁ、簡易言語だからそれでもいいんだろうけど。
679デフォルトの名無しさん:04/10/11 20:50:21
>>677
(・∀・)イイネ!!
680デフォルトの名無しさん:04/10/19 09:13:43
あっせんぶらーにへんかんされたじてんでことごとくごーとぅーなんだが(w
681デフォルトの名無しさん:04/10/19 09:26:31
>>677
もっと積極的に、かまーんでいいじゃん。
プログラムの中で挑発的に何度も。

ComeOn
ComeOn

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

いちいちソースの見た目なんぞ考えるだけ無駄
685デフォルトの名無しさん:04/10/26 13:16:46
(´-`).。oO(趣旨が解らないんだったら黙ってればいいのに…)
686デフォルトの名無しさん:04/10/26 16:22:41
(´-`).。oO(それよりcome from, come on, comingの使い方気になる・・・)
687デフォルトの名無しさん:04/10/26 22:25:13
>>686
gotoの部分にラベル、gotoのラベル名の部分にcomefromを書くのだろう、たぶん。
688デフォルトの名無しさん:04/10/26 23:51:53
689デフォルトの名無しさん:04/10/27 09:03:43
アスペクト指向の元ネタみたいな機能だな>COME FROM
690デフォルトの名無しさん:04/10/28 01:22:01
goto文よりif文の連続使用されたプログラムの方が読みづらい
691デフォルトの名無しさん:04/10/28 01:36:17
スパゲッティコードにナッチャウヨ〜

トモダチならアタリマエー
692r:04/10/28 01:41:15
void foo() {
    // なんか処理
    goto bar::hoge;
    // なんか処理
}

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

このくらい出来てもいい。
693デフォルトの名無しさん:04/10/28 11:44:13
barがreturnしたらどこへ行くんだろう。
694デフォルトの名無しさん:04/10/28 20:33:03
大丈夫だよ、そんなの今時のコンパイラならどれ使っても最適化してくれるよ
むしろそーゆーことは意識しちゃいけないんだよ (とくいとくい
695デフォルトの名無しさん:04/10/29 00:12:14
goto bar::hogeの後の処理は
実行されることはないと思うが・・・
696r:04/10/30 00:24:29
>>695
どっか他所から、gotoで到達するんだよ
697デフォルトの名無しさん:04/10/31 12:29:36
if( goto_source == foo ) {
の中から goto で帰るんだよ、きっと
698r:04/11/07 12:27:36
>>697
いいね。
backto goto_source;
とか書けるといいね。
699デフォルトの名無しさん:04/11/07 18:07:17
結局、このスレってジーオーティーオーに反応するくせに
そっからまともに議論できないアフォばっかりの釣堀だなw
700デフォルトの名無しさん:04/11/07 19:30:20
途中からどうしようもないネタスレ化
701デフォルトの名無しさん:04/11/07 20:30:35
だってWindows2000がgotoの使い方となる完璧な規範を示しちゃったから
アンチも逃げ出してもう話すことなんて何もないからね。
702デフォルトの名無しさん:04/11/08 00:26:58
スレタイに惹かれて見た
>>662
に対して
そんな構築するヤツはダメだ
というレスがないのを見て
このスレはダメだと思った

さようなら
703デフォルトの名無しさん:04/11/08 00:29:47
>>702
こちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1090324689/

結構まともな議論だと俺は考える
704デフォルトの名無しさん:04/11/10 11:10:35
Multiple Valueを知らない>>702は負け組
705デフォルトの名無しさん:04/11/10 11:23:13
multiったって結局はひとつのarray返してるだけだろ
いまさらCになくて他言語にある機能をクレクレいっても意味ないし。
706デフォルトの名無しさん:04/11/11 22:36:13
>>705
> multiったって結局はひとつのarray返してるだけだろ

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

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

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

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

意味のある処理ブロックの先頭にgotoで飛んだって、
コードの可読性は失われないよ。
712デフォルトの名無しさん:04/11/13 13:22:50
>>711
だったら goto を使うパターンは昔からあるな
それでパターン認識できないケースが問題視されたわけだが
なぜ順次・選択・反復をパターンの基本に選ぶのかの説明が見あたらない
これでは結局、いつもの堂々巡りの典型でしかない
713デフォルトの名無しさん:04/11/13 15:12:23
>701
詳細希望
714デフォルトの名無しさん:04/11/13 16:00:06
例外処理で何とでもなります。
715デフォルトの名無しさん:04/11/13 16:14:22
SQLにgotoがあればいいのに…
716デフォルトの名無しさん:04/11/13 16:16:54
SQLに例外処理があればいいのに…
717デフォルトの名無しさん:04/11/13 16:28:32
SQL に生ゴミ処理機能があればいいのに…
718デフォルトの名無しさん:04/11/13 16:29:40
SQLでもエロ動画が見たい・・・
719デフォルトの名無しさん:04/11/13 17:34:29
720デフォルトの名無しさん:04/11/13 17:36:36
>>701 ×
>>713
721デフォルトの名無しさん:04/11/13 18:59:26
オブジェクト指向技術の洗練にしたがって
GOTOはおろかIFやCASE文さえも排除の対象になるのでしょうかね?
722デフォルトの名無しさん:04/11/13 19:01:04
object.goto(どっか) 的な使い方ができるのなら
それはそれで面白いと思う。
723デフォルトの名無しさん:04/11/13 20:02:28
そういえば、Lisp の「全部関数(というわけじゃないけど)」とか
Prolog の「全部述語(というわけじゃないけど)」なパラダイムなら、
そもそも IF が分岐の意味を持っていない罠

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

ヒューマンインターフェイスという表現は変か…
726デフォルトの名無しさん:04/11/13 21:50:49
条件分岐をしないマシン語。
アドレスジャンプのないマシン語。
プログラムカウンタを工夫すればいいのか?
727デフォルトの名無しさん:04/11/13 23:25:12
>>725
は? もしかして break のことか?? おいおい・・・
728デフォルトの名無しさん:04/11/14 06:26:14
729デフォルトの名無しさん:04/11/17 22:06:13
>>718

WinFS
730デフォルトの名無しさん:04/11/22 15:59:33
731デフォルトの名無しさん:04/11/22 18:01:49
>>727
forとかifブロックとかたぶんその辺。
732デフォルトの名無しさん:04/11/22 20:22:46
>>731
あれ、マジ「おいおい」だったか?
なんで goto レスが前提に出てくるんだよ
結果論にすぎないよ、それは

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

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

そのへん、どんな基準で見てるのかなあ・・・
733デフォルトの名無しさん:04/11/22 21:28:50
JMP >>1
734デフォルトの名無しさん:04/11/22 22:11:40
goto使えよ
735デフォルトの名無しさん:04/11/23 00:30:40
longjumpをつかえば
他のマシンの他のプログラムの中に
gotoすることができるんですか!?
736デフォルトの名無しさん:04/11/23 00:31:36
RPC使えよ
737goto賛歌:04/11/23 00:57:54
別にスパゲッティになったってかまわない
保守できなくなってもかまわない
明日があるさ
738デフォルトの名無しさん:04/11/23 19:16:09
灰色の明日が来そうだな
739デフォルトの名無しさん:04/11/26 22:37:08
>>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;
}
740デフォルトの名無しさん:04/11/27 04:18:45
その昔マキちゃんが得意げにさらしてたネタだな。
正直アホみたいだ。
741デフォルトの名無しさん:04/11/27 04:39:49
それじゃ関数内だけの話だね。デストラクタも呼ばれないし。
742デフォルトの名無しさん:04/11/29 23:15:07
ネタにマジレスせんでも
743デフォルトの名無しさん:04/12/01 12:56:24
ケンシロウはつかっている...
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();
744デフォルトの名無しさん:04/12/03 06:24:43
goto使わない場合、
代わりに用意されてる制御構造が貧弱なのばかりだと、
「時々」苦しいと思う。

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

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

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

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

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

それぞれの良いとこ取りでいいですやん。
そういう極論に持っていくならこのスレの意義もなくなるだろ。
759デフォルトの名無しさん:05/02/10 00:28:16
極論に走るのが2chの特徴…しょうがないよ。
760デフォルトの名無しさん: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 );

// なんか処理

}

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

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

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

};
778デフォルトの名無しさん: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 だね
779デフォルトの名無しさん:05/03/20 18:43:04
そういうのはC++はウンコじゃないんだと言い張るスレでやってくれ
780デフォルトの名無しさん:2005/05/07(土) 01:48:53
>>770
C# には finally があるぞ。つ〜か、finallyって使いますか?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

は、事実上

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

と等価だけど、

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

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


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

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

いや、もちろん使う機会は限られているよ。
break, continueとかで済むならそっちを使うよ。
874デフォルトの名無しさん:2005/07/28(木) 20:46:46
>>873
同意。私は構造化構文が無かった時代からPGをやっていて同様の見解を持っている。
だが、そのような見解を構造化言語以降のPGが持つ例は非常に少ないのだ。
gotoが有害なのは有害になる文脈で使用されるからだ。
使う機会が限られているというのも正しいね。
875デフォルトの名無しさん:2005/07/28(木) 20:54:54
ついさっき2416STEPなFunctionでGoto乱れ打ちを見ました。
今日はもう帰ります。
876デフォルトの名無しさん:2005/07/28(木) 21:24:08
もう
877デフォルトの名無しさん:2005/07/29(金) 00:57:14
。・゚・(ノД`)・゚・。
878デフォルトの名無しさん:2005/07/29(金) 01:12:41
CPSで組めばgotoいらない
そんな気がして
879デフォルトの名無しさん:2005/07/29(金) 05:38:24
つかアンチは実際にgoto悪用するソースを見たことあるのか?
俺はN88BASIC以降は見たことないぞ。
880デフォルトの名無しさん:2005/07/29(金) 12:16:11
アンチってわけでもないけど、見たことあるね。
見なかったことにしたかったw

俺は未だに goto 使ったことないなぁ。必要がないから使わない。
必要になったら使うけど。
881デフォルトの名無しさん:2005/07/29(金) 12:29:54
最適化後のアセンブラのようなのを見たことがあるぞ。
'95 くらいだったかな。

業務用基盤のゲームなんだけど、PC 上でロジック確認をするのに書いたらしいんだが、
アセンブラで書いた方がいいんじゃねーの? って思った。
デバッグ表示に printf() が楽だから C で書くんだとさ。

俺はアンチじゃないけどね。
882デフォルトの名無しさん: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;
}
883882:2005/07/29(金) 20:52:06
戻り値の型は result_t* じゃなくて item_t* でした。
884デフォルトの名無しさん:2005/07/29(金) 22:09:37
そんなのは
#define FOUND { p->data = data; return p; }
でも充分な気が
885デフォルトの名無しさん:2005/07/29(金) 22:17:38
>>884
そういうマクロの使い方はgotoよりよっぽど危ういだろ
886デフォルトの名無しさん:2005/07/29(金) 22:18:05
↑これが噂の盲目的安置か
887デフォルトの名無しさん:2005/07/30(土) 19:41:40
>>884
それならgotoの方がいい。
888デフォルトの名無しさん:2005/07/30(土) 20:54:26
>>882
無茶苦茶な例題だなぁ。
889デフォルトの名無しさん:2005/07/30(土) 20:55:39
全然
890デフォルトの名無しさん:2005/07/30(土) 21:24:16
>>888
882は、こういうときこそgotoの使いどころだっていう意図だろうけど、
それには同意できない、無茶苦茶だって言うわけだね?
じゃあ888氏ならどうする?
891デフォルトの名無しさん: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;
}
892デフォルトの名無しさん: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を取り除いてもいいこと無いよ」って例としては悪くないんじゃない?
893デフォルトの名無しさん:2005/07/31(日) 13:44:58
っか>>891じゃうごかねーぢゃん。スマソorz
894デフォルトの名無しさん:2005/07/31(日) 16:54:14
ring_bufferがグローバルだとか
startの値域外確認機能欠落とか
突っ込みたいところはあるけど
面白かったよ
895デフォルトの名無しさん:2005/07/31(日) 23:33:18
> ring_bufferがグローバルだとか
> startの値域外確認機能欠落とか
関数名がhogeだとかな。
例にそういうツッコミ無粋な希ガス。
896880:2005/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);
}

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

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

命名に迷った時に付けた set_data_in_range と set_data_n 混ざってる…_| ̄|○
同じ関数です、ハイ。
898デフォルトの名無しさん: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;
}
899デフォルトの名無しさん:2005/08/01(月) 13:18:02
どっちにしても

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

の部分は関数なりマクロになりにした方がいいんじゃないのか?
同じアルゴリズムが、同じ関数の二箇所で使われてるのはどうかと思う。
900デフォルトの名無しさん:2005/08/01(月) 15:39:57
>>899
重複部分をひたすらマクロに置き換えていくと
必ずわけのわからんソースになる。
メンテする人間が発狂するからやめとけ。
901デフォルトの名無しさん: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 と書けるから後者でも多少高速かと。
902デフォルトの名無しさん:2005/08/01(月) 19:56:27
>>901
for文の終了条件が少し違いますね。

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

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

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

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

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

finallyブロックをコールバックで表現するのはどうか

try_finally(try_proc, finally_proc) {
Cfinally fin(finally_proc); // デストラクトでfinally_proc実行
return try_proc();
}
930デフォルトの名無しさん:2005/08/04(木) 12:33:12
あ、ごめ。
レキシカルなクロージャないと厳しいな。
931デフォルトの名無しさん:2005/08/06(土) 15:10:34
> 何もメモリ解放だけがfinallyの役割じゃないし。
詳しく。
932デフォルトの名無しさん:2005/08/06(土) 18:30:34
FILE *fp = fopen();
try{


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


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

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

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

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

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

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





























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

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

こっちの方が手間要らないし
後始末忘れるうっかりさんも発生しない
962デフォルトの名無しさん:2005/08/09(火) 07:23:43
ヒント:new,delete
963デフォルトの名無しさん:2005/08/09(火) 07:33:42
open();
try{
 ...
}finally{
 close();
}
をいちいちクラスに切り出すアホらしさときたら!
964デフォルトの名無しさん:2005/08/09(火) 07:49:08
一回クラスに実装すれば、二度目いらんやん
finally節を毎回コピペするようなあほらしさこそ無用
965デフォルトの名無しさん: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;
}

こんな感じの駄々漏れコード書くんだろ?
966デフォルトの名無しさん:2005/08/09(火) 09:54:09
>>965
あんまりスタックに物を置きたくないし
967デフォルトの名無しさん:2005/08/09(火) 09:59:00
そこじゃなくてbのnewに失敗したときにaがメモリリークするのが、
このコードの問題じゃないの?
968デフォルトの名無しさん:2005/08/09(火) 12:00:07
finallyいらんて奴素でいるのか・・・
C++使うと脳が歪むという噂は本当のようだ。
969デフォルトの名無しさん:2005/08/09(火) 13:25:46
ちょっとしたものを簡単に作りたいときならfinalyはあってもいい。
本格的なものを作るときならクラスに切り出してデストラクタに任せる。クラスにするのは面倒だけど、使うときには楽できる。

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

それよりgotoの話をしやがりませんか