Cでgotoを使わない理由を考察するスレ goto loop3;

このエントリーをはてなブックマークに追加
1仕様書無しさん
why?

過去スレ
Cでgotoを使わない理由を考察するスレ goto loop2;
http://pc.2ch.net/test/read.cgi/prog/1070196585/
Cでgotoを使わない理由を考察するスレ
http://pc.2ch.net/test/read.cgi/prog/1053627318/

loop3:
2仕様書無しさん:03/12/21 23:56
2ゲット
3仕様書無しさん:03/12/22 00:01
1000鳥に必死で、こつちは虫か?
4仕様書無しさん:03/12/22 00:02
警告:スレタイ頭にloop3:のラベルがありません。
5仕様書無しさん:03/12/22 00:05
>>1の最後にラベルがついてるって事は、過去の議論は無視しろって事でしょ。
6仕様書無しさん:03/12/22 00:05
gotoはどうでもいいが、バカを禁止したい。
7sage:03/12/22 00:07
1000 :仕様書無しさん :03/12/22 00:04
goto http://pc.2ch.net/test/read.cgi/prog/1053627318/


このアフォのせいでとれなかった
死ね
8仕様書無しさん:03/12/22 00:10
んじゃ、このあたりから続きをどうぞ。
詳しい経緯は前スレを呼んでね♪

--------------------------------
988 名前:高卒アニオタ中年[sage] 投稿日:03/12/21 23:56
>>980
251が、gotoが正しく使われているかは「人がチェックする」といってるんだが・・・
読みやすさとは別の議論だろ。

993 名前:仕様書無しさん[sage] 投稿日:03/12/22 00:01
>>988
んじゃ、
・バカが意味不明な識別子名をつけてないかチェックする時間がもったいない
・バカが不用意にポインタを乱用してないかチェックする時間がもったいない
・バカがマクロを乱用してないかチェックする時間がもったいない
・バカがforやwhileの条件に何でもかけることを乱用してないかチェックする時間がもったいない
・バカが不用意に3項演算子を乱用してないかチェックする時間がもったいない
・バカがフラグ変数を乱用(多様)してないかチェックする時間がもったいない
・バカが保守性も解析性も悪いC言語コードを乱発してないかチェックする時間がもったいない
・バカがグローバル変数を乱用してないかチェックする時間がもったいない
・バカが環境変数を乱用してないかチェックする時間がもったいない
・バカが保守性も解析性も悪いC言語コードを乱発してないかチェックする時間がもったいない
ので、それらの使用を禁止する、といういういつもの議論に収束しそうだな。
9仕様書無しさん:03/12/22 00:11
小泉総理大臣は12月22日、記者団の前でgotoを禁止する法案を年内に国会に提出する
談話を発表しました。可決すれば、違反した者は、5万円以下の罰金または死刑に処せられます。
10仕様書無しさん:03/12/22 00:13
>>9
ソース公開しないのでばれないからダイジョーブ!!
11仕様書無しさん:03/12/22 00:14
年内とはまた急だな。あと10日もないぞ。
12仕様書無しさん:03/12/22 00:14
規約だとか言わないでgotoをはじくプリプロセサを通すようにすればいい。

・・・C++使えっつのと同じか。
13仕様書無しさん:03/12/22 00:14
grep goto *.c の結果を提出する義務があるそうです。
14仕様書無しさん:03/12/22 00:16
config.h:
-----
#define goto ike
-----
とするのでダイジョーブです!!
15仕様書無しさん:03/12/22 00:16
逆だ
#define ike goto
16仕様書無しさん:03/12/22 00:18
だから、コボラーは黙ってろって。
17高卒アニオタ中年:03/12/22 00:19
>>8
そこからかい(w

仕方が無いのでそこからマジレスするか・・・

列挙されている問題点らしきものの中に、
構造化に関するものが見受けられないのだが?

言語仕様としての話と、
(言語に関係の少ない)可読性の話は分けて考えるべきだと思われる。
18仕様書無しさん:03/12/22 00:20
昔のBASICしか使えないやつもな。
19仕様書無しさん:03/12/22 00:21
>>17
「構造化」が焦点だと思ってるのは>>17だけ。
20高卒アニオタ中年:03/12/22 00:24
>>19
前スレ嫁。
988に関しては
 「正しく構造化できているか」をチェック
が論点だ。
21仕様書無しさん:03/12/22 00:25
スレに関係ない話はしないようにしましょう。
22仕様書無しさん:03/12/22 00:25
>>10>>15
やっぱりgoto使える人って頭がいい人なんですね。
23仕様書無しさん:03/12/22 00:25
>>20
だれもそんな話していないし…>>17以外。
24仕様書無しさん:03/12/22 00:26
先生!この際251を置いてきぼりにしていいもんなんでしょうか!
25仕様書無しさん:03/12/22 00:30
goto が廃止になったら、既存のプログラムはしかたないとして、新規案件で
なにか不可能な処理とか出てきますかねえ。
てか、goto つかったことないのでわからんのですけど。
26仕様書無しさん:03/12/22 00:30
>>22
テレルナー(・∀・)
27仕様書無しさん:03/12/22 00:31
ユンソナー(・∀・)
28仕様書無しさん:03/12/22 00:32
>>25
構造化理論で、すべての処理は連接・選択・反復のみでかけることが証明されているので
不可能なことはないでしょう。例えチューリングマシンでも「不可能ではない」よ。
(lambda式のみでもOK!)
29仕様書無しさん:03/12/22 00:33
この間初めて goto 使ったんですよ。goto。
そしたらなんか人がたくさんいて……
で、ラベルは文につけなくちゃいけないんですね。

end:
}

とかはだめなんですね。

end:
  ;
}

なら OK だったんですよ。
30高卒アニオタ中年:03/12/22 00:36
>>21
スマソ。 まあ、>>8にのせられた漏れが悪いんだが・・・(w

とりあえず、251が出てこないと話にならないわけで、
すこしおとなしくしときまつ・・・

ちなみに、現時点で漏れが251の意見に疑問に思っていることは

・gotoを使わないとフラグ変数の乱用が起こる
・正しいgotoの利用は、レビューにて徹底できる

の二点。
漏れの意見は、上記の二点に関して「んなわきゃねーだろ」だ。
31仕様書無しさん:03/12/22 00:38
switch(i) {
 case 1:
  ....;
  break;
 case 2:
  ...;
  if(...)
   goto 1;
  break;
 default:
  ...;
}

も使いましょうw。こういうの見るとCサイコー!とか思うんだよね。
32前スレ993:03/12/22 00:47
>・gotoを使わないとフラグ変数の乱用が起こる
バカは何をやらせてもバカ。
ただし、gotoを使わせないだけで有意にマシになる?
(というか、バカはgotoあんまり使わないけどな。)

>・正しいgotoの利用は、レビューにて徹底できる
バカ同士でレビューしてもどうにもならないというのは同意だ。
33仕様書無しさん:03/12/22 00:49
>>30
251ではないが。
> ・正しいgotoの利用は、レビューにて徹底できる
これができないようだと、gotoの濫用以外の問題も指摘できないように思えるのだが。
何のためにレビューしてるのだろう?
34仕様書無しさん:03/12/22 00:52
『ロジック』を検証するためだろ?
フォーマルメソッド(形式的仕様記述)でも使ってるのかねぇ?www
35仕様書無しさん:03/12/22 01:05
gotoをよく使ってて、なおかつフラグ変数の乱用が多いソースはよく見るよな(w
36仕様書無しさん:03/12/22 01:09
この間、告白したら、
「私、gotoを使いこなせる人としか付き合わないの」
って振られたんですけど。

37251:03/12/22 01:18
>>高卒アニオタ中年さん
前スレ251です。

>漏れの前提は、「機械に任せるべきものは、機械に任せろ」なんだが・・・。
ソースコードの品質の全属性はあくまで人間が作りこむものです。
「機械に任せるべきもの」にはコンパイラ言語の存在、構造化構文の存在、
ローダ(リンカ)の存在等がありますが、
わかりやすさという品質は機械には全面的には任せられません。

>コードレビューは、ロジックだけのチェックにしないと、
>時間かかってしぁあないだろ。
>漏れは、その「チェックにかかる時間がもったいない」といってるんだが?
ロジックチェックはしませんよ。それは担当者自身がすることです。
プログラム設計書を書くか書かないかで状況は違いますが、
データ構造、アルゴリズム、プログラム構造、表記がレビュー対象です。
時間はかかります。しかしながらコードの品質水準を上げるための方法として
レビュー以上のものはありません。

>もちろん、どんな言語でも(たとえばマシン語でも)構造化プログラムは書ける。
>しかし、「正しく構造化できているか」なんてチェックを人がするのは馬鹿らしくないか?
コードの話ですね。確かにgotoが無ければ構造化コードです。
私には「構造化コードでなければならない」という前提がありません。
そして>>8に書いてある項目もチェックしますよ。

>何のために構造化言語があるのか考えてみ?
構造化言語によって実現できる事は構造化コードだけです。
構造化コードでありさえすれば「わかりやすさという品質」を充分満足できる
とは思っていません。
非構造化コードのほうが構造化コードよりも「わかりやすさという品質」をより満足する
場合があると思っています。
38仕様書無しさん:03/12/22 01:22
>>37
そうは言ってもね、やろうとしたんだよ。
でも、main ひとつで構造化なしで全部 goto で書いたら、8 万行ぐらいのところで
ソースがでかくなりすぎてコンパイラが受け付けないのよ。
構造化しちゃいけないから、ファイルを分けて分割コンパイルというわけにも行かないし、
共同開発のときもひとつのソースをみんなでいじるから大変だし。まあ CVS 使えば
少しは何とかなるけど。
みなさんどうされていますか?
39仕様書無しさん:03/12/22 01:27
そのまえに自分の文章をわかりやすくしろ。構造化はそっちが先だ。
40仕様書無しさん:03/12/22 01:31
>>39
え、だって構造化しちゃいけないんでしょ。かわりに goto を使えと。
4137:03/12/22 01:38
>>30
どうも誤解をされています。両方ともそんなことは言っていません。

>gotoを使わないとフラグ変数の乱用が起こる
繰り返しますが、
「gotoを禁止するとフラグ変数の乱用が起きる危険性がある」と言っています。
同じ事に見えますか?
これは「goto禁止」が「他の部分に悪影響が出ることを示す」ために書いたものです。
「禁止論議は本論ではないからしたくない」ことはもうお伝えしましたよね。

>正しいgotoの利用は、レビューにて徹底できる
「誤ったgotoの利用(goto誤用)は、レビューにて完全に防止できる」
と言っているのですが
42仕様書無しさん:03/12/22 01:44
できねえんだよ。両方とも。
43仕様書無しさん:03/12/22 01:45
>>38
>でも、main ひとつで構造化なしで全部 goto で書いたら、8 万行ぐらいのところで
>ソースがでかくなりすぎてコンパイラが受け付けないのよ。

その、まるで実際に経験があるかの様な物言い、感動しますた。
4437:03/12/22 01:55
>>40
笑いました。ちょっとレスさせてね。
構造化プログラム設計と構造化コードを同一視しないで下さい。
gotoは構造化コードにのみ属する問題だということもね
45仕様書無しさん:03/12/22 02:03
結局、Cでgoto使ってる場合を研究して
・例外処理(try〜catch)
・continueのラベル付き
・breakのラベル付き
とかって形にしてgotoレスだって誤魔化してんだよ
って事はCでgotoを使わざるを得ない場合がある、って事
4637:03/12/22 02:17
>>45
全面的に支持します
47仕様書無しさん:03/12/22 02:24
終了。規約うんぬんは別の話。
48仕様書無しさん:03/12/22 02:30
あれ?「使わない理由」は?
49仕様書無しさん:03/12/22 02:44
>48
そんなもん存在しねーよ。
自信のねーバカが受け売りで得意になってるだけだ。
50仕様書無しさん:03/12/22 03:00
なんかもー必死な奴が何人かいるみたいだが、こんなしょうもないことに
いったいどれだけ時間を使えば気が済むんだろうね
51仕様書無しさん:03/12/22 03:23
まあお前ら底辺PGは一生やってろ(w
52仕様書無しさん:03/12/22 03:24
よくいるでしょ語りがるやつって。
仕事はろくすっぽできないのに講釈だけは得意な人。
53仕様書無しさん:03/12/22 13:21
いるいる。gotoを使うとコードはもっと面白くなる!とか言ってる人。
54仕様書無しさん:03/12/22 21:55
おまえらわかってねー!

子ループの条件で勝手に抜けられた時の親ループの気持ちがわかってねえ!

...ぜぇんぜぇんわかってねぇ。クゥゥ...。
55仕様書無しさん:03/12/22 22:06
つーか後藤に貸した5千5百円返ってこねー。
56仕様書無しさん:03/12/23 01:16
日本break goto
ダイアモンドカッター Da Da Da ! Hey!(あげ)
57仕様書無しさん:03/12/23 02:55
>>56
死ねいらすま
58仕様書無しさん:03/12/23 08:06
goto使わなきゃならない状況に落ち入った時点でクソグラマ
goto使いたがる奴はアホグラマ
今時スパゲティコード書いてる奴がいたら即処刑
59仕様書無しさん:03/12/23 09:42
一番言いたいことだが、大部分の奴はアセンブラ書ける奴の努力のおかげでアプリ開発できてるって事は
頭の隅に置いとけ。誰かがやらなきゃなんねーんだよ。

名前かわっただけで例外処理はgotoそのもの。
見易さで言うとtrycatch使ったほうがいいが、それはただ言語のコード解析が
trycatchに対応しただけにすぎない。
自分で見やすいわかりやすいコンパイルを自作して既存のコンパイルと結合させること自体
30過ぎのプログラマーには余裕のよっちゃん。

コンピュータが動く仕組みを理解してる人にはgotoなんて問題でもなんでもない
スパゲティコードみっけたらperl使って新しいソース作るだけ。
どんな他人のソースでも自分が見やすいコードに直して開発すると修正作業も楽々。

#つーか最近コード生成じゃなくてコードをばっさばさ削除していくだけの作業なんで
糞おもしろくもねーよ。
60仕様書無しさん:03/12/23 09:56
例外処理なんか関数超えちゃうからもっとクソだな!
61仕様書無しさん:03/12/23 10:36
>>59
今日び、アセンブラじゃなくてcじゃないか。
アセンブラでなければならないプログラムって本数ベースで1%ある?
#俺もアセンブラは少し書けるけど。
62仕様書無しさん:03/12/23 10:38
>>60
なんのための「例外」ですか?
想定しないことがおこったので、そのまま次の処理に以降するほうが問題。
63仕様書無しさん:03/12/23 10:42
>>59
老兵は死なず、ただ消え去るのみというが、
死んで腐ったのにまだ戦ってる人もいるんですね。

あなたの腐った脳味噌で考えた事が現代でも通用すると思わないで下さいね♪
64仕様書無しさん:03/12/23 10:48
ブードゥー教の奴隷は、死亡診断の風習が無い地域で、
墓に埋まった後息を吹き返した人間にフグ毒をはじめとする
多種多量の神経毒を用い、精神を破壊することで作成されます。

虚構書店「ネクロマンサー即席養成教本」
65仕様書無しさん:03/12/23 10:54
>>63
残業残業うるさい若造が何を力不足にほざいてる?
コンピュータに老兵も糞もねーだろ
66仕様書無しさん:03/12/23 10:56

やたら入力にやたらエラーが多くて複雑な状態遷移図になってしまうときにはやっぱりgotoは便利だね。
リカバリー後に何事もなく進めるポイントが飛び先ラベルになる。
エラーが出たら即止まるプログラムを書く人には全然いらないとおもう。
67仕様書無しさん:03/12/23 10:57
sageでえさを撒いてきた効果が現れ始めたな。
68仕様書無しさん:03/12/23 11:54
よくもまあ、3スレも自作自演でがんばったな。
すげーよ
あんた
69仕様書無しさん:03/12/23 12:18
なんでgoto完全否定派は「使わない理由」も示せないくせに、
自分と違う意見すべてを自作自演扱いにしたいの?

なぁ?自作自演はお前のことなんだろ?
70仕様書無しさん:03/12/23 12:33
>>69
しぃーっ!!
71仕様書無しさん:03/12/23 13:02
>>69
完全否定派なんていないだろ
72仕様書無しさん:03/12/23 13:17
「アンチ推進派」はいるみたいだけどね。
ちなみに推進派なんてのはいない。
73251:03/12/23 14:50
>>71-72
はい。否定派からの明示として
×goto
×途中return
○break(case label対応以外のbreak)
○continue
という表明があります。
推進派はいません。
7437:03/12/23 14:52
失礼。このスレでの名前は251ではなく37でした
75仕様書無しさん:03/12/23 18:41
漏れはgoto否定派だが「途中return」は別に構わないと思うがなぁ
76仕様書無しさん:03/12/23 20:29
いまだに必死な奴がいて笑える
77仕様書無しさん:03/12/23 20:49
>>75
絶対否定派?
78仕様書無しさん:03/12/23 23:26
前スレ251こと37
哀れなほど必死だな
7975:03/12/23 23:28
>77
“絶対”ではないYO!
一人で組んで面倒見る分には何やってもいいと思うし
でも、複数人でやるときはヤメレと思う
80仕様書無しさん:03/12/24 00:45
>79
一人なら何でもありかよ。
多分もまえはクビになるだろ。
その後を引き継いでメンテするやしはどうなる?
コード書かずに退職願を書いてくれ。
8175:03/12/24 00:47
>80
う〜ん...こういう「文章よく読まない奴」は放置した方がいいのかな?(w
82仕様書無しさん:03/12/24 00:56
>>81
俺は>>80じゃないけどさ
>一人で組んで面倒見る分
面倒見るって表現はもろ仕事としてと受け取れるが。
仕事なら普通 面倒見る 期間というのは有限だよな?
退職なり契約切れなり解雇(笑…だがgoto許容派には現実的な話か?)で
その有限の範囲が終わった後はどうなるんだ?
答えてみろよ。
83仕様書無しさん:03/12/24 02:51
走る走る
日本break goto(あげ)
84仕様書無しさん:03/12/24 02:58
まぁ、goto否定派に自己厨が多いのは仕方ない。
85仕様書無しさん:03/12/24 03:46
>>82 == >>80 だな(w

一人で面倒見るってのは、
個人で(趣味で)作るとか、そういうことだろ。

>>81
つーより、「文章を読めない香具師」な。
86仕様書無しさん:03/12/24 04:01
>85
必死だな(´,_ゝ`)プッ
87仕様書無しさん:03/12/24 04:09
79=81=85でつね?
88仕様書無しさん:03/12/24 05:04
>>69
理由? バカだからに決まってンだろ
goto使いは頭いいよな(w
89仕様書無しさん:03/12/24 07:34
goto = イスラム教
90仕様書無しさん:03/12/24 07:58
goto否定派=自分の意志を持つことが許されない創価学(ry
91仕様書無しさん:03/12/24 12:13
>>82
一人で、といっても引き継ぐ人のことを考えろ。

結局、(仕事で)影響範囲が1人なのはありえない

goto使うとメンテしづらいソースが作成される可能性がある

なのでgoto禁止

goto以外にもメンテしづらくする要因はたくさんある(>>8参照)

これらももちろん禁止(だよね?)

C言語使用禁止!

プログラミングも禁止!!

という何時ものながれでつね!
92仕様書無しさん:03/12/24 17:46
一人で開発した保守不能プログラムの件。
開発した人間が退職したなら、コードのほとんど(全部?)の権利は
退職した会社が持っているわけだ。つまりコードは会社の持ち物だ。
だからそのコードが「保守可能であるかどうか」は、退職した人間が責任を持つ筋合いのものではない。
問題なのは保守不能プログラムを保守しなければならなくなるという状況だ。
不可能事を業務に命じるのは公序良俗に反する。
それが不可能事であるかそうでないか、つまりプログラムが保守可能か保守不能か
の正しい判断が出来る人間は、当の保守担当者以外にはいない。
また会社としても「何時まで経っても終わらない仕事」をさせるのは不本意であろう。
結局、会社が自らの資産の品質管理をしていない事が、元凶だ。ではどうすれば良いか。
「保守担当部門を新設し、保守担当部門には保守対象のプログラムの保守を
拒否する権限を附与」する事が正しい。
政治的な理由でこれが実施出来ない場合が多々存在することは知っているが、
組織論を述べるつもりはないのでここまで。
93仕様書無しさん:03/12/24 17:57
>ではどうすれば良いか。
一人では開発させない。
第3者部門がレビューする。
保守しない(ようにあらかじめ計画/契約する)。
9475:03/12/24 18:23
なんか盛り上がってまつね(w

>>82
>仕事なら普通 面倒見る 期間というのは有限だよな?
いや、それは「一人で組んで面倒見る分」にはならないでしょ
自分の手を離れてしまった時点で面倒を見る事ができなくなるのだから
そういう可能性が全くない一人での開発&保守の場合のみ「ご自由に」という意味
...ここまで書かないとダメかなぁ(汗

>>85
全くその通りでつ(w
いやぁ、分かってくれる人が居るだけで心強いでつ

>>87
漏れは名前に「75」と入れまつよ
ちなみに今のところはニセモノ出てないっす
95仕様書無しさん:03/12/25 00:14
>そういう可能性が全くない一人での開発&保守の場合のみ

趣味でやってるのか?
妄想か?

仕事なら自分の手を離れる可能性がないケースは存在しえない。
96仕様書無しさん:03/12/25 00:31
プログラマ一人が作ったコードを誰もチェックせずに納品するプロジェクトなんて存在するのか?
9775:03/12/25 00:50
>>95
>仕事なら自分の手を離れる可能性がないケースは存在しえない。
可能性が全く無いとも言い切れないが、まぁその通りだよな
だから...分かったかな?

これで分からないのなら、もう放置
98仕様書無しさん:03/12/25 00:52
>>96
存在する。業務アプリ等のプログラム数が多いものだと必然的に担当メンバー数は増えて
「どんなコード書かれるかわからない」という当然の不安感も後押しして、コードレビューを行うところは多い。
だがリリースインターバルの短縮が殆どビジネス面での利得にならない場合、予算の無さもあいまって
システムを一人で作る場合もあるんだ。俺がその担当だったから間違い無い。
四年間ほどやって三回リリースしたが、そのあいだ、そのシステムのコードを目にしていたのは俺だけだ。
99仕様書無しさん:03/12/25 01:03
まぁ、仕事でプログラムを作ったことのない>>75にはわからない世界もあるんだよ。
100仕様書無しさん:03/12/25 01:15
100Gets!
101仕様書無しさん:03/12/25 03:06
わんちゃん
102仕様書無しさん:03/12/25 04:54
>99
お粗末な文章からいってそんな感じだね。
まともな文章書けなきゃ仕事にならんもんね。
休みになると学生はりきるからw
103仕様書無しさん:03/12/25 05:00
>96
適正なコードが書かれている全ソース、全ステップをチェックするの???
そんなことは現実的に可能なわけ?
104仕様書無しさん:03/12/25 08:18
元の担当者のいないシステムの改修のときは
ほとんど全部読むこともある。
たかだか数万行だが
105仕様書無しさん:03/12/25 08:34
>>103
全ソースのチェックは現実的でないからやらんが、
利用回数が多いコードはしっかりチェックしないと、
後で例えようも無く悲惨なことになるぞ。

1.コードを利用している側がいつのまにかバグだらけになる。
2.直したくても、現在の糞仕様に依存しているコードが多すぎて、
  直す気がなくなる。
3.誰かが直そうと決意して上の許可を取っても、影響が大きすぎて
  現実には修正不可能。
4.腐敗したコードが更なる腐敗を呼び、プロジェクト崩壊。
  理由は、「腐りすぎて理解不能ッ!理解不能ッッッ!!!」
106仕様書無しさん:03/12/25 09:46
>>103
プロジェクトの予算にもよるけど、全コードのチェックを行うところも珍しくないよ。
107仕様書無しさん:03/12/25 09:46
>>103
やる所もあるよ。コードかいてる時間なんて全工程の10%もない。
108仕様書無しさん:03/12/25 10:51
新規なら数百万、数千万ステップ越えるぞ!
テスト以外によくそんな時間とれるな。
正気の沙汰とは思えん。
109仕様書無しさん:03/12/25 11:04
>数百万、数千万ステップ
どうやったらそんな糞コードが書けるのですか?
またどんな糞システムだとそんなにステップ数かかるんですか?
110仕様書無しさん:03/12/25 11:07
はじめからそういうつもりで工程(予算も)組むんだよ。
別に時間が余ってるからやってるわけではない。
111仕様書無しさん:03/12/25 11:10
>>108
そんなに大量のコードをチェックもせずに素通ししてしまうほうが狂気の沙汰だぞ。
もしバックドア仕込まれてたらどうするんだ?
112仕様書無しさん:03/12/25 11:55
>109
おまえパチョコンのクソみてーな仕事しかしたことないのか?
113仕様書無しさん:03/12/25 12:02
>>112
で? あなたはどれだけ糞な仕事してるの?w
114仕様書無しさん:03/12/25 12:32
某火力発電所のシステムで
監視系 WS だけで 60万ステップくらいだったな。
(入出力装置、通信関係除く)
制御系・計画系・帳票系含めると300万超えるくらいじゃないか?
115仕様書無しさん:03/12/25 12:38

出た

ドラマを作ってるアシスタントディレクター君

116仕様書無しさん:03/12/25 22:48
>>108
正気の沙汰だよ。
コードレビューはブラックボックス試験では発見される可能性の低いバグも発見することもあるからね。
費やした工数/時間に見合う効果は充分にある。
コードレビュー以上に効果の高いレビューって、何がレビュー対象なのかと逆に聞きたいくらいだよ
117108:03/12/25 23:38
へー正直おでれーた。
確かに悪意のあるコード埋め込まれる可能性はあるな。
ちなみにコードレビューにどれくらいの割合で工数あててんだ?
118仕様書無しさん:03/12/26 01:53


...えっと、gotoの話はもうしないのでつか?
119仕様書無しさん:03/12/26 02:10
>>118
まだしたいのでつか?。燃料が切れているかも。
120仕様書無しさん:03/12/26 02:55
>>117
コードを書くのと同じくらいの時間
121仕様書無しさん:03/12/26 03:03
ペアプロしる!
122仕様書無しさん:03/12/26 04:55
>>120
全ソース、全ステップのレビューをコード書くのと同じ時間で本当にできる?
レビューの相手はチームリーダあたりだよね。
レビュー相手<PG で圧倒的にレビューの相手は少ないはず。
時間的に無理だよね?
123仕様書無しさん:03/12/26 05:01
ウニットてすとしる!
124仕様書無しさん:03/12/26 08:46
>>123
それ、ユニットって読むんだよ。
125仕様書無しさん:03/12/26 08:48
>>122
グループ全員でやるんだよ。
126仕様書無しさん:03/12/26 09:00
作業中のコードをメンバー全員が見れるところに上げるようにしておいて、
リーダー・サブリーダーあたりが毎日きちんとチェックしてれば、レビュー
やるときもそんなに大変じゃないけどなぁ。問題になりそうなところも早期発見できるし。
127仕様書無しさん:03/12/26 10:55
>>122
お前ができないからといって、他人もできないなどとは考えないこと。
128仕様書無しさん:03/12/26 11:47
はー…随分無駄な事してるんでつね<コードレビュー
作業者のレヴェルが低いのか、よっぽど人が余ってるのか尻ませんけど。
いや、素で感心して (というか呆れて?) るんですけどね。
129仕様書無しさん:03/12/26 12:13
>>128
組織には、その組織のやり方があるんだから、君が口出しする必要は無いよ。
130仕様書無しさん:03/12/26 12:15
>>128
コードレビューやらないということは、やらなくていいほどの詳細な設計をしてると
いうことか?
もしそうだとしたら、そっちの方がよっぽど無駄だと思うが。
それとも、単にテストフェーズまで誰も何の確認もしないということか?
131仕様書無しさん:03/12/26 12:17
>>128
「俺は他人にコードを見られるのがいやなだけだ」
では無いという根拠をレスしてみてくれ
132仕様書無しさん:03/12/26 12:24
>>128
どのくらいの品質を要求されるシステムかにもよるけどね。
オープンソフトウェアじゃないけど、目が多いほど問題点見つけやすいのは確かだし。
133仕様書無しさん:03/12/26 12:35
コードレビューで見つかる問題点ってどんなこと?
仕様の実装ミス?
アルゴリズムの正当性?
134128:03/12/26 13:55
>>129
いや、単なる感想だから。

>>130
コーダーなんか飼ってませんよ。(為念)
各サブシステムの I/F は全員でやるけど
その後〜単体テストまでは各担当者の責任範囲。
途中で I/F 変更の必要があれば、また全員で検討。

>>131
ん?何の為?
稼動後暫く経ってからの機能追加・仕様変更があった時には
コード書いた本人の手が空いてる事の方が少ないから
別の誰かが弄ることになるけど、別に嫌じゃないし。
つか、変な設計してるとそこで恥かいたり勉強できたり。

>>132
まぁ今んとこ人の命に関るようなクリティカルなシステムは
やってないんだけど、>>114 のは二年に一度の定期検査時
以外は24時間稼動してるよ。
担当範囲を限定すれば、その中での個別の品質保証は
意外と出来るもんだよ。
135仕様書無しさん:03/12/26 16:20
爺さんたちがんばってるな!
来年は定年か?
136仕様書無しさん:03/12/26 16:37
コードレビュー!?
意味ねーだろ。
みんなで仲良く机上デバッグしてどーすんだ。
どうせレビューしたあとのテストでもバグでるんだろ?
だったらまともなテストにパワーかけろや。
137仕様書無しさん:03/12/26 17:04
>>133
まぁ、そこらへんも見つかるけど。
セキュリティ上の問題とか、処理の競合とか内部エラーへの対応とか、
実運用に入ってからでるとなかなかめんどくさい不具合(必ずしもその
リリースで顕在化するとは限らんけどね)を潰すにはちょうどいいよ。
138仕様書無しさん:03/12/26 17:35
>137
なんだそういうことか。
おまいらは設計しないでコーディングはじめちゃうのか。
随分お粗末な開発方法なだ。
139仕様書無しさん:03/12/26 18:04
>>138
関数の内部動作まで設計してコーダーがコードを起こすというのにも当たったことあるけど、
あまり生産性がいいとは言えなかったな。
どうせ関数の内部設計とコードが一致しているかの検証は必要なんだし。
140仕様書無しさん:03/12/26 19:46
>>139
そのとーりだ。プログラム単位や関数単位の内部設計書なぞ書かんのが正しい
納品物件になっていれば単体試験終了後に書くのが正しい。可能なら最終納品時だ。
大体、エラー対応のコードが半分以上を占めるプログラムが過半数であるのに引き換え、
機能仕様書のエラーに対する記述が同様の割合を占めることはほとんどない。
つまり機能仕様書にはエラーに対する仕様の記述が不充分であるのが常態だ。
この不充分な「エラーの対処機能」は関数単位の内部設計では発見しきれない。
コードにしないと発見出来ないのだ。
また、何段階も試験を行うのだから当然修正が入る。内部設計書なぞ工数をかけて書いていたら
どのみち後でリリースされるコードとシンクロしなければならない羽目になる。
だから内部設計書が納品物件である場合は、後回しにするのが正しいんだ。
141仕様書無しさん:03/12/26 19:57
なんか使えないコーダの吹き溜まりになってきぞ
142仕様書無しさん:03/12/26 19:59
>140
ということにしたいんですね?(w
143140:03/12/26 20:35
>>142 うんにゃnot.俺はそれが可能なときはいつもそうしている。
144140:03/12/26 21:26
>>141
失礼な香具師だな。
スーパーなPGといわれている人達が、図式表記やPDLを書いてから
コーディングを始めていると思っているのか。
145仕様書無しさん:03/12/26 21:26
で、このスレはなんのスレ?
146仕様書無しさん:03/12/26 21:32
コードレビューしないからgoto使うとコード品質下がっちゃうとかいう
環境に居る人が、隣の芝生を嫉妬したり馬鹿にしたりして強がって
みたりするスレです。
147仕様書無しさん:03/12/26 21:37
>>134
君のところのレベルがそれなりに高いってだけで、君の発言には
何の意味も無いのだが。
14837:03/12/26 21:37
>>145
燃料切れで「gotoの使用/不使用」がテーマであるにも関わらず、cプログラミング全般の雑談スレとなっているスレ
ですかね。
149仕様書無しさん:03/12/26 23:53
結局、此処等でgoto使うの擁護してるのって
COBOLerやBASIC上がりの香具師なんだろ?

必死だな(プ
150仕様書無しさん:03/12/27 00:10
不完全燃焼です。。。
15137:03/12/27 00:19
>>149
「goto使うの擁護している人」などいませんよ
「自分がどの様にgotoを使うかをレスしている人」はいますけれど
152仕様書無しさん:03/12/27 04:24
>>136
うちもコードレビューしまし。
が、おっしゃるとおりです。
個人的にはさほど効果があるとは思えませんねぇ。
153仕様書無しさん:03/12/27 06:58
>>149
いや、その時代に生きてた人が必死にgotoを排除してるだけ。
154仕様書無しさん:03/12/27 09:54
コードレビューもgotoと同じだなぁ。
チーム内の人員レベルを居慮して実施するかしないか(gotoを禁止するか
しないか)を決定しなければならない、と。

重要なのは、全員バカコーダーだと、レビューしても意味が無いということだ。
155仕様書無しさん:03/12/27 12:49
>>153
逆だ
「その時代に生きてた人が必死にgotoを擁護してるだけ」
だろ

バレそうになって必死か?(プ
156仕様書無しさん:03/12/27 12:58
>>155
いや、gotoでひどい目にあってる(ひどい目にあわせてる)のは相当昔の人だろ。
157仕様書無しさん:03/12/27 13:23
>>156
いや、goto使わないとロジック組めない思考で凝り固まっちゃってるんだろ。
158仕様書無しさん:03/12/27 13:31
冬休みだねぇ。
159仕様書無しさん:03/12/27 13:44
がぜん張り切るよな〜
休み長くていいな〜
160仕様書無しさん:03/12/27 13:48
>>158=159
冬厨Uzeee!
161仕様書無しさん:03/12/27 13:59
年中休みの奴もいるようだけど。
162仕様書無しさん:03/12/27 14:03
こいつら一日中てぃんぽいじってるだろうな
163仕様書無しさん:03/12/27 16:24
>>162
それは独身女性に対して失礼だな
164仕様書無しさん:03/12/27 17:33
独身女性が一日中てぃむぽを…。(;´Д`)ハァハァ
165仕様書無しさん:03/12/28 10:32
いやさすがに一日中いぢられたらもちませんて・・・勘弁してください。
16637:03/12/28 12:55
「gotoを擁護する」ってどういう意味なのでしょうか。
「何からgotoを擁護するのか」が、わかりません。規約ですか。
私はgoto禁止規約が存在すればそれを守りますよ。
goto禁止規約を前提に話をしないで欲しいのです。また禁止の是非もです。
これらは「スレ違い」だと思うのですが。

スレタイの「使わない理由」についての表明は、今まで「法則だから」と「規約だから」だけです。
これらは理由ではありません。単なる「きまりごと」です。
とりあえず、「誰も論理的な理由を示せないままここに至っている」という事実の指摘だけをしておきます。
#「論理的な理由なぞ存在しない」という判断が出来ない人がいるのでしょうか

使う人は使うし、使わない人は使わない。それだけのことです。
「使う人が自分の使い方を披露し、それをつっつきたい人がつっつく」というスレだと思っていました。
違うのでしょうか。
167仕様書無しさん:03/12/28 13:36
「goto擁護」
 =複数の要員で開発している案件にも関わらず、
  自分だけはgoto使用許可が与えられてると勘違いし
  頑なに使い続けようとする自己中野郎が行う行為
16837:03/12/28 14:20
>>167
そーだったんですか。
擁護擁護と何人かの人が書いているのでそのようなことをする人間は少なくないのでしょう。
それに「goto禁止規約を前提とした話はスレ違いだからおかしい」といっているのに止まないのは、
みなさんかなり御立腹なわけですか。
でもそれは「単に規約違反の一例」ですよね。「確信犯である」という厄介なおまけがついていますが。
プロジェクト管理方法論の話になってしまいますよ。

その話を始めるとさらにスレタイから乖離するので「goto擁護派を叩くスレ」でも作成して移行して欲しい
と思うものですが。
169仕様書無しさん:03/12/28 15:42
>37
カスはすっこんでろ。
わかったか?
170仕様書無しさん:03/12/28 16:02
>>166
お前が今までのスレを読んでいないことが良くわかった。
議論するつもりが無いならもう来るな。
171仕様書無しさん:03/12/28 16:52
>168
規約の有無に関わらず、保守の妨げとなる可能性のあるgoto使用は
仕事でやってる以上禁忌すべき行為だろ
172仕様書無しさん:03/12/28 17:11
まずは、保守の妨げとなるかどうかから議論しないといけないな。
17337:03/12/28 17:57
>>170
読んでいますよ。先頭スレからいますから。このスレはgoto擁護について議論するスレだったんですか?
どのレスがそれを示しているのかを回答下さい

>>171
それはもう議論されています。前スレの235あたりから参照してください

>>172
正論だとは思いますが、「同様の議論を繰り返すのはもうウンザリ」なので「どうぞ御自由に」です。
「よそいってやれ」といってもそうしないのは火を見るより明らかですしね

なるほどね。こうやって「前スレの234で述べた自分の意見を自分で実感する羽目になる」わけか。
174仕様書無しさん:03/12/28 18:21
>>37
>「gotoを擁護する」ってどういう意味なのでしょうか。
>「何からgotoを擁護するのか」が、わかりません。規約ですか。

この程度の読解力しかないくせに、自説は何度も何度も繰り返し垂れ流す。

人の話を聞かない。聞いても理解できない。
なんでこのスレにくるんだ?
175仕様書無しさん:03/12/28 18:23
>>37
つーか、お前がいったい何を主張したいのか一度簡潔にまとめてみる。
箇条書きで3つ以内。それぞれ40字以内でまとめてみろ。
17637:03/12/28 18:45
>>174
私の個人的能力はさておき、どのあたりが「自説は何度も何度も繰り返し垂れ流す」
というのかを回答下さい。

>>175
goto禁止関連はスレ違いだ
gotoを使わない理由など存在しない
議論が終了した話題を蒸してほしくない
17737:03/12/28 18:47
×議論が終了した話題を蒸してほしくない
○議論が終了した話題を蒸し返しててほしくない
178仕様書無しさん:03/12/28 19:05
何十年も前に議論が終了した話題を蒸し返しているのは誰なんだ?
17937:03/12/28 19:24
>>178
私は何がいつ終了したのかを知りません。goto論争が終結したとは聞いていません。
あえていえば「蒸し返しているのは参加者全員」ですね。
ただこのスレ内だけでも「終わった話題を蒸し返す」という動きがあるので苦言を呈しただけです。
先頭スレから読めば「何が終わって何が終わっていないか」がわかるはずです。
納得いかないのならば、「蒸し返す様ですが」と一言、沿えていただきたいですし。

もしかして「蒸し返しているのは37だ」との見解ですか?自覚が全くありません。具体的に御指摘下さい。
180仕様書無しさん:03/12/28 19:46
>もしかして「蒸し返しているのは37だ」との見解ですか?自覚が全くありません。具体的に御指摘下さい。

うむむぅぅ、10年にいちど拝めるかどうかのすばらしい釣りですなぁ(^^;
181仕様書無しさん:03/12/28 19:57
しかし、goto議論って面白いか?
どこでも同じような話ししかしてないんだけど。
182仕様書無しさん:03/12/28 19:58
>>176
> goto禁止関連はスレ違いだ
その通り。

> gotoを使わない理由など存在しない
その通り。

> 議論が終了した話題を蒸してほしくない
その通り。

あ、議論が終わっちゃった。
183仕様書無しさん:03/12/28 20:02
しょうがないなぁ。
君って鳥頭だからちょっとだけ指摘してあげるよ。

>>151
>「goto使うの擁護している人」などいませんよ

>>166
>「gotoを擁護する」ってどういう意味なのでしょうか。
>「何からgotoを擁護するのか」が、わかりません。規約ですか。

ほらね(何が?
18437:03/12/28 20:19
>>183
151を書いた段階では「goto使用を誤用も含めて全く自由にしろ」と主張している人のことを
意味していると思っていたのです。再度レスを読み返してどうもそのような人のことを
意味しているわけではなさそうなので166で尋ねました。
それが「繰り返し」とか「蒸し返し」になるのでしょうか
185仕様書無しさん:03/12/28 20:30
うむむぅぅ、今日はすばらしい釣り日和ですなぁ(^^;
18637:03/12/28 20:35
>>182
ええ。議論が終わっているのだから、>>166の末尾に記述したレス内容で良いのだと思いますけどね。
ですが、多数の人が「goto禁止関連に使う」というのならイヤだけど止めさせる方法もありませんし。
187仕様書無しさん:03/12/28 23:18
>>37
キミこのスレに何時間費やしたかしらないけど、何か得るものあった?
18837:03/12/29 00:01
>>187
すばらしい質問です。
私が個人的に期待することは「蒙を啓いてもらう」ことなのですが、残念ながらこのスレにおいてはあまりありませんでした。
しかしながら「とても楽しい時間を過ごせた」ので充分、満足しています。
口語的表現をすると「こんなにオモシレーことほかにないよ」ですね。
189仕様書無しさん:03/12/29 00:23
あー、そうなんだ。そりゃよかったな(皮肉でなく)。
190仕様書無しさん:03/12/29 00:25
で、みなさんは、そんなに>>37氏を煽って得るものはあったんでしょうか?www
191仕様書無しさん:03/12/29 00:48
>190
ヒマツブシにはなたYO!
192仕様書無しさん:03/12/29 02:07
Cでgotoを使わない理由

日常生活では微積分を使わない、って事かな...
193仕様書無しさん:03/12/29 02:24
せいぜい「日常生活では分数を使わない」って程度だな(w
194仕様書無しさん:03/12/29 03:25
>>136 >>152
舌嫁!そして目からウロコ出せ!
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vsent7/html/vxconcodingstandardscodereviews.asp
君らんとこはテストの段階でバグぞろぞろ出てくんのが当たり前?こわっ!
195仕様書無しさん:03/12/29 03:59
Cでgotoを使わない理由はこれだ。

1.死んだ爺ちゃんが言ってた。
2.昨年のおみくじに書いてあった。
3.幼児期からトラウマを持っている。
4.何か得体の知れない力が働いている。
5.何となく。
6.生まれつき。
7.俺を振った女に似てる。
196仕様書無しさん:03/12/29 04:00
>>194
UTでバグでることが問題あるのか?
バカかおまえは。
197仕様書無しさん:03/12/29 04:02
gotoは某国が生産性低下を狙ってC言語の仕様に忍び込ませた罠なんだよ!
198仕様書無しさん:03/12/29 04:28
UTってなんだ?ユーザーテストのことか?それローカルだよ。
コーディングの段階でバグ出んのと、テストの段階でバグ出んのと
どっちがデグレ率高いと思ってんの?
基本情報処理から勉強し直せよ、新米君。
199仕様書無しさん:03/12/29 04:36
あーもしかして、UNIT TESTか?単体って言えや、横文字かぶれが。
200仕様書無しさん:03/12/29 05:01
>199
おまえ今日英語禁止!!
201仕様書無しさん:03/12/29 05:08
194=198=199か。
このスレ一番のバカ出現だな。
202仕様書無しさん:03/12/29 05:20
理由も言えんとバカ呼ばわりとは、面白いのう。
>194=198=199 わざわざ書かなくても大概の奴はわかるって(笑
203仕様書無しさん:03/12/29 05:26
懲りずにまた書き込んでるよ。
このバカかなりスペシャルかもw
みんなで育てまつかw
204仕様書無しさん:03/12/29 05:30
はぁ?コードレビューしてる奴は皆このスレ一番のバカなん?
じゃ、ISO取得してる会社は皆このスレ一番のバカってことかいな?
でっかいトコはほとんどこのスレ一番のバカってことか?
おー、強気やねー。単体とデバッグの区別もつかんくせに(爆
205仕様書無しさん:03/12/29 05:42
>>203の開発手法
CD→UT→CD→UT→CD→UT→CD→UT→CD→UT→CD→UT→CD→UT→CD→UT→
CD→UT→CD→UT→CD→UT→CD→UT→CD→UT→CD→UT→CD→UT→CD→UT→
CD→UT→TO (CD:コーディング、UT:単体、TO:時間切れ)
206仕様書無しさん:03/12/29 09:59
>>202
> 理由も言えんとバカ呼ばわりとは、面白いのう。

最近こういうこという馬鹿が増えたね(ヤレヤレ
207仕様書無しさん:03/12/29 10:01
>>205
それってTDDだね。最後はTOじゃなくて"Finish"だがな。
208仕様書無しさん:03/12/29 10:54
ただいま、「ボキャブラリの貧困さ故に
煽りが園児の喧嘩レベルな方々」による
熱い議論をお送りしております。
209仕様書無しさん:03/12/29 11:20

  マ       ナ
    エ  モ    \
210仕様書無しさん:03/12/29 11:54
>>207
TDDなら最初は失敗するテストで始めないと
211仕様書無しさん:03/12/29 11:57
>>210
「そんな関数ありません」コンパイルエラーから、だろ?
212仕様書無しさん:03/12/29 12:44
まずはNUnitとJUnitを手に入れるところからだな。
それからCでコーディングっと。
213仕様書無しさん:03/12/29 12:49
どうせならxUnitコンプしる(w
214仕様書無しさん:03/12/29 13:15
テストコードを書くのもコーディングなわけだが。
215仕様書無しさん:03/12/29 13:18
>>214
テストコードはテストの一環だと思うが
216仕様書無しさん:03/12/29 13:23
TDDならどっちもどっち
217仕様書無しさん:03/12/29 18:38
テストコードにもデバッグが必要だったりして(w
218仕様書無しさん:03/12/29 20:22
>>217
必要に決まってるジャン。
219仕様書無しさん:03/12/29 23:16
またいつものように必死なやしがいるな。
220仕様書無しさん:03/12/30 00:48
またいつものように相手が一人だと妄想する馬鹿がいるな
221仕様書無しさん:03/12/30 09:33

gotoを使うと>>37のようになってしまうのでgotoは使用禁止です。

どうです?今までで一番ナットクできる理由じゃありませんか?

222仕様書無しさん:03/12/30 10:34
>>221
そう言われると、おまえさんみたいになるよりはマシだと思う俺が居る。
が、俺も、また、だれかに俺のようになりたくないと突っ込まれるのだろうな。
223仕様書無しさん:03/12/30 10:50
分かってるなら書き込まなければいいのに
22437:03/12/30 11:42
>>221
「ナットクできる理由」かも知れませんが「禁止関連はスレ違い」ですよ。
それに37が37であるのは、当然ながら、gotoを使ったからではありません。
225仕様書無しさん:03/12/30 12:03
>>221
224を見たら、221に対してさらに強く共感を覚えてしまった俺って。。。
226仕様書無しさん:03/12/30 12:40
よーし、じゃおじさん 今日から goto も if も 3項演算子も使わないぞ〜
22737:03/12/30 12:41
>>225
いいえ。大変ノーマルだと思いますよ。
37はどこまでいっても37なんだし、単に共感を得るための発言もしませんからね、嫌う人が沢山出てきても全然不思議ではありません。
37も、好かれるためにいるのではなく、楽しむためにいるに過ぎませんから。
228仕様書無しさん:03/12/30 12:47
まずは、こんな置換から、

if ( a ) func1() ; else func2();

  ↓
{
void (*func[2])() = (func1, func2);
func[a &1]();
}


これを引数付きで上手く表現できるマクロ書けないかな
229仕様書無しさん:03/12/30 12:56
処理はひとかたまり毎に手続化して変数は構造体メンバーにして

void proc1(Treg * reg ) { reg->hoge = reg->hage*2;};
  ...

これら関数ポインタ配列で表現、

構造体メンバーには pc というのがあって
メイン関数は
while(reg.pc>=0) do proc[reg.pc](® );


ていうのはよく書くけどな。
230仕様書無しさん:03/12/30 12:57
ありゃ? &reg は ® に化けるのか。 
231仕様書無しさん:03/12/30 13:00
それから 後の reg.pc は reg.pc++だ 。
232仕様書無しさん:03/12/30 15:51
>>228
そんな糞コード書く奴は馘首
233記念真紀子:03/12/30 22:43
®
©right
&cr
&right
©
234仕様書無しさん:03/12/31 00:35
なぜ、gotoを使わないのか?

どんと来い!
−−どんと来い!
235仕様書無しさん:03/12/31 00:36
お行きなさい
236仕様書無しさん:03/12/31 15:01
田宮®©カーグランプリ
237仕様書無しさん:04/01/01 05:59
昨年はgoto肯定派の圧勝に終わったわけだが今年はどうかな?
安置ももっとがんばらないとgoto無限ループが終わってしまうぞww
238仕様書無しさん:04/01/01 11:32
>>237
目が悪いのか、頭が悪いのか。
どうやったらgoto肯定派が勝利したように読めるのですか?
神よ!どうか>>237をお救いください。
239仕様書無しさん:04/01/01 13:46
>>238
おめーは気持ち悪いよ
すっこんでろ
240仕様書無しさん:04/01/01 15:09
&って書くと&出る。
241仕様書無しさん:04/01/01 19:24
ここって
 極少数のgoto肯定派が大多数のgoto否定派に弄られて悦んでるスレ
と理解しているが、なにか?
242仕様書無しさん:04/01/01 19:40
>>241
まぁ、このスレでは考察するだけで、結論はスレタイに書いてあるからね。

「Cでgotoを使わない」理由を考察するスレ
24337:04/01/02 01:05
>>241
初めて見る「理解」です。参考のために「どこからどこを読んでそのような理解に至ったか」を御教授願えますか。
244仕様書無しさん:04/01/02 21:08
自覚の無い>>37萌えage
245仕様書無しさん:04/01/03 12:00
>>242
で、なんで使わないの?(あげ)
246仕様書無しさん:04/01/03 12:41
goto は無くても書けるから使わないんでしょ。

でもさ、for do 〜 while while の3つだって1つあればいいんだよね。
というか、 これら繰返文とgotoも無くたって再帰とcaseで書けと言われたら書けるし、

自分が良いと思ったら使ったらいいさ。
でも、チームでの仕事なら人を説得する手間が増えるかもな。
まあそんなゴチャゴチャ会議してる間に、どんどんコード書いてさっさと一人で仕上げてしまえ。
そしたら、そんな手間も不要さ。
247仕様書無しさん:04/01/03 12:49
gotoがあればうまくいく
248仕様書無しさん:04/01/03 13:19
>>245=>247
いじめられにいらしたのですね?
ごくろうさまです...
249248:04/01/03 13:20
きごうまちがえちゃいました。

>>245-247
いじめられにいらしたのですね?
ごくろうさまです...
250246:04/01/03 13:36
なんだよオィ! だったら何か喋ってみろよ、ゴラァ!

肯定もクソもあるなら使うし、無いなら工夫するだけの事。
そんなクソの役にもたたん議論するより、
さっさとコード書いて小さな単位から書いては試験して仕上げてしまえってんだ。
251仕様書無しさん:04/01/03 15:51
いや
252仕様書無しさん:04/01/03 21:22
>あるなら使うし

へぇ。近代兵器で武装した相手と戦う場合に、
自分にも近代兵器が与えられてるのに
わざわざ「打製石器の斧があるから」という理由で
イシオノ持って戦いに行くんだー。

漢だねぇ。
253仕様書無しさん:04/01/03 22:30
>>252は知ったかぶりして恥をかくタイプ。
254仕様書無しさん:04/01/03 22:34
>>252
鉛筆を削るのにパトリオットが役に立つのか?
255仕様書無しさん:04/01/03 22:47
>>252
天然バカ発見
256仕様書無しさん:04/01/03 22:57
>>253-255
嬲られにきたのか?原始人どもよ。
257仕様書無しさん:04/01/03 23:05
>>252
近代兵器が抽象的で何を指すかわからない
gotoを石斧に例える理由がわからない
戦況が不明で最適な武器がわからない
258252:04/01/03 23:10

============ ここからお得意の自作自演がはじまります ============

259仕様書無しさん:04/01/03 23:18
つまんねー煽り合いなんかやめてオナニーでもしろよ、餓鬼ども
260仕様書無しさん:04/01/03 23:25
そういえばこの前第一エンジン停止で結局自爆した
H2ロケットの姿勢制御のプログラムにはgotoが使われていたらしいね。
261仕様書無しさん:04/01/04 00:44
へ〜 へ〜 へ〜
262仕様書無しさん:04/01/04 02:02
すぐに高へ〜出すびびるウザ過ぎ
263仕様書無しさん:04/01/04 02:59
>>260 微妙にその話はおかいいな
"第一エンジン停止" ← 停止してない
"自爆" ← 自爆ではない
264仕様書無しさん:04/01/04 03:36
265仕様書無しさん:04/01/04 09:38
さすがに日本のロケット開発なんて超保守的な原始猿プログラムの話まで含めちゃ
GOTO厨がかわいそうだ。
あんなの思考停止した一流気取りの奴らの溜まり場だろう?
266仕様書無しさん:04/01/04 13:35
267仕様書無しさん:04/01/04 18:17
なんかこのスレもレベル低くなったな…
まぁ、新しい議題も出てこないし、もうネタも無いんだろうけどね。

目の悪い人or日本語が理解できない人がいっぱい居るのには笑えたけどwww
これが冬厨ってやつなの?
268仕様書無しさん:04/01/04 18:40
37のレベルが低すぎるだけだろ。
下手な言葉遊びに終始しているし、
ちょっと手に負えなくなると「禁止はスレ違い」とか
すげー逃げをほざくし。
みんな気が付いてると思うが、>>37は他人の意見の
アゲアシとって暇つぶしをしているだけ。

 相 手 す る だ け 時 間 の 無 駄 。

>>37よ、一度でもいいから 自分の意見を書いてみろ(プ
269仕様書無しさん:04/01/04 18:40
というかこのスレでレベルの低くないレスって具体的にどれ?
270仕様書無しさん:04/01/04 22:10
>>269←もちろんこれだろ。
>>237 レベルが低い人
>>238 目が悪い人
272仕様書無しさん:04/01/05 00:22
Cでgotoを使わなかった。なぜか?
坊やだからさ
273仕様書無しさん:04/01/05 00:37
俺はどっちかって言うとgotoよりも2chからガンダムネタを永久追放したい。
274仕様書無しさん:04/01/05 01:08
「お前さんなかなかのgoto使いだが、日本じゃあ2番目だな。」
「何ぃ!じゃあ一番は誰だって言うんだ!」
男は、軽く口笛を鳴らすと、人指し指を3度振る。「ちっ、ちっ、ちっ」
その指で、深くかぶった黒いカウボーイハットを押し上げると、おもむろに親指で自分を指すと、ニヤリと笑った。
「この俺さ!」
275ちょっと推敲:04/01/05 01:11
その指で、深くかぶった黒いカウボーイハットを押し上げると、おもむろに親指で自分を指しニヤリと笑った。
276ちょっと推敲:04/01/05 01:13
その指で、深くかぶった黒いカウボーイハットを押し上げ、おもむろに親指で自分を指すと、ニヤリと笑った。
277決定稿:04/01/05 01:15
「お前さんなかなかのgoto使いだが、日本じゃあ2番目だな。」
「何ぃ!じゃあ一番は誰だって言うんだ!」
男は、軽く口笛を鳴らすと、人指し指を3度振る。「ちっ、ちっ、ちっ」
その指で、深くかぶった黒いカウボーイハットを押し上げ、おもむろに親指で自分を指すと、ニヤリと笑った。
「この俺さ!」
278決定稿:04/01/05 01:20
「お前さんなかなかのgoto使いだが、日本じゃあ2番目だな。」
「何ぃ!じゃあ一番は誰だって言うんだ!」
男は、軽く口笛を鳴らすと、右手のマラカスを3度振る。「ちゃっ、ちゃっ、ちゃっ」
その指で、深くかぶった黒いカウボーイハットを押し上げ、おもむろに親指で自分を指すと、ニヤリと笑った。
「この俺さ!」
27937:04/01/05 01:32
>>268
ああ久しぶりにレスしたい書きこみが。
このスレしか読んでいないと
>>37よ、一度でもいいから 自分の意見を書いてみろ(プ
の様に思われるのも無理はありません。
私の場合「自分の意見の書きこみ」はとりあえず一段落しているのです。
先頭スレ124と二番目スレ251が私のナンバーハンドルです。
全部読んでから
>みんな気が付いてると思うが、>>37は他人の意見の
>アゲアシとって暇つぶしをしているだけ。
という意見に変更があったならまたレスしてください。
280仕様書無しさん:04/01/05 12:43
というか、

> >みんな気が付いてると思うが、>>37は他人の意見の
> >アゲアシとって暇つぶしをしているだけ。
> という意見に変更があったならまたレスしてください。

じゃなくて、みんなが>>37の意見にアゲアシとって暇つぶししてるだけでしょ?
突っ込み入れやすい文章だもんね。
281仕様書無しさん:04/01/06 00:46
構造化プログラミングでは、まるで小説を読むかのごとく、上から1行1行、
順に読んでいけるコードが美しいとされる。

多くのプログラマが、変数名において、PREFIXやMFCの"m_xxx"に代表される
ような命名規則や意味のわかる名前付けなどを駆使するのも、変数の型・
用途・外部/内部等の情報を得るのに、いちいち前を読み返さなくても良い
ようにする為の工夫である。

つまり行を飛ばすgotoは、構造化プログラミングでは美しいコードとは
認識されないようである。
282仕様書無しさん:04/01/06 01:00
続き...
しかし、Cでgotoを使わない理由を考察すると同時に、Cでgotoがいまだ使える
理由も考察べきである。

関数内で多少のgotoを使用している場合は、その場でジャンプせず記憶して
おいて、そのまま順々と読んでいき、ラベルが出た時点で読むことも可能
である。また、アセンブラやBASICでgoto(JMP)に慣れている人にはむしろ
その方が読みやすいという状況もあるだろう。

つまり...お好きにどうぞっ! が俺の結論(w
28337:04/01/06 01:09
#突っ込みが沢山来そうですが
>>281
私は「プログラムの美しさ」というものは理解できません。「プログラムの汚さ」なら理解できますが。
「いちいち前を読み返さなくても良いようにする為の工夫が、必要の無いコード」を書くべきです。
同様に「いちいち前や後をみて、飛び先ラベルを探さなければならないgotoの使用」は不適切ですね。
284仕様書無しさん:04/01/06 01:11
9分か・・・
28537:04/01/06 01:36
>>282
ご意見ありがとう御座いました。
今度から「続き...」を後のレスの先頭につけるより、
前のレスの末尾に「続きあり」と書いていただけるとありがたいです。

>>284 ええ。書きこむ直前にリロードしなかった私が悪いんですけどね
286仕様書無しさん:04/01/06 01:54
>>285
>#突っ込みが沢山来そうですが
282は、そぉ思って入れたフォローだけどねwww
287仕様書無しさん:04/01/06 01:59
なぜプログラマ板なんだろう。

Cじゃないが、職業プログラマとしてgotoを一度だけ使ったことがある。
そのために、コーディング規約を変更して貰った。
今ではそのコミュニティに害毒を流した気がするが、
そのときはGOTOがエレガントだった。
下向きGOTOについてはそんなにシビアになる必要はないと思うが、
下向きでも多用すると可読性を損なうな。

といいつつ思い出したのは、エラー処理マクロでGOTOを使ったことがあった。
生産性は倍になったが、メンテナンス性は落ちたかもしれない。
可読性は損なわれてはいない。

立ってるものは親でも使えばいいんじゃないか。

GOTO使用不可ってのは「バカの壁」なのかもしれない。
288仕様書無しさん:04/01/06 02:46
。。。どこを縦読み?
289仕様書無しさん:04/01/06 23:13
じゃ



向き
向き




290仕様書無しさん:04/01/06 23:41
お前等、ソースを立てに四jから可読性がないんじゃ。
291仕様書無しさん:04/01/06 23:54
...縦読みしたら>>290になるのかと思つたよ
292仕様書無しさん:04/01/07 01:23
やはり日本人なら、ソースコードであっても縦書きしたいと思う
293仕様書無しさん:04/01/07 01:52
V




||















294仕様書無しさん:04/01/07 08:06
オレは何時もナナメに読んでます。
295仕様書無しさん:04/01/07 11:44
goto out2;
out1:
goto out3;
out2:
goto out1;
out3;
goto out2;
29637:04/01/07 15:23
>>287
最後の結論にだけコメントします。馬鹿の壁って養老タケシ氏の語り活字化本のことですね。
「goto使用に対する理解が不充分であるからgoto使用不可というルールが出来てしまう」
ということで間違い無いですか。
ならば支持します。

どうも前スレを読むのに現在、金がかかるようになっているので、私自身も読めません。前スレに書いた私の
レスを別の書き方で書いてみます。#「繰り返すな」という突っ込みは御勘弁。

「gotoが誤用されているから保守不能になっているとされるプログラム」について、
保守不能である本当の理由は、「gotoが誤用されているから」ではない。
「関数が長すぎるから」換言すれば「正しく構造化プログラム設計されていないから」である。
297仕様書無しさん:04/01/07 15:28
>>296
現場でテンパッテる奴にそれ言ってみなよ。ヌッコロサレルのがオチ。
298仕様書無しさん:04/01/07 15:44
フト思いついたんだが

  名前が固定→コテハン

ならば

  名前が番号→バンゴハン

でつか?
299仕様書無しさん:04/01/07 15:46
    _, ,_  パーン
 ( ‘д‘)   
   ⊂彡☆))Д´) >>298
30037:04/01/07 15:48
>>297
そんなおっかないことしませんよ。「再実装の作業計画をたてるから、保守作業を中断しろ」の指示をつけるなら別ですけどね。
301仕様書無しさん:04/01/07 15:52
>>300
作業計画ね...ハァー
302仕様書無しさん:04/01/07 16:32
テンパってるやつには何を言ってもヌッコロされるだろうね。
んでもって、テンパるような状況に追い込まれる方が悪いというのは正論だ。
303仕様書無しさん:04/01/07 16:39
>>302
ヌッコロス
304仕様書無しさん:04/01/08 02:54
gotoの御用聞き
305仕様書無しさん:04/01/08 18:15
禁止されているからに決まっている
306仕様書無しさん:04/01/09 02:54
昔、ダイクストラが「これいいことねーよ」っていったのが、
「おぉー」となり、だんだん「やめよーよ」ってなっていったが、
そういう意見に賛成する流れん中でCが作られたから。
Cは原則としてそういう意見に賛成してるってゆーこと。

(たまたま見つけたんで書いたけど、この手の既出だろーね。すまんね。)
307仕様書無しさん:04/01/09 12:29
「原則として認めない」とは、禁止では無いなり
30837(スカトロマニア):04/01/09 18:53
あややのうんこは臭くないので食べても害は無いということですか。
ならば支持します。
309仕様書無しさん:04/01/09 19:56
>>307
だね。「原則」だからCにはgotoもつかえるように用意はされてる。
でも、基本的に「常用・多用するとわけわからんくなるから、使用はそれほどすすめない」
的な意識で解説されてるものが圧倒的におおい。(というか殆どじゃないか?)
「gotoを廃してわかりやすく書こうぜ」っていういわゆる「構造化プログラミング」の
パラダイムにCは明らかにあるってことだな。そういうイデオロギー持ってるってことだ。
310仕様書無しさん:04/01/09 20:49
使わない理由は「誤用するのでわけわからんくなるから」
311仕様書無しさん:04/01/09 23:09
gotoのすばらしい使い方を見出さないとこのスレの意味もないな。
goto禁止なんて、今の管理者や経営者が新人のころから言われてて
いまさら原則禁止などど言っててもつまらな過ぎる。
312仕様書無しさん:04/01/09 23:45
Cのgotoはサポートを打ち切る前の猶予として入ってるだけだろ?
gotoなんぞ使っているとJavaやC#で書けなくなる。
31337:04/01/10 00:49
>>312
新鮮な視点ですね
とりあえず事実の指摘から。手続き型言語でgotoを備えていないのはjava(c#の事は知りません)のような
ごく最近の言語だけです。gotoは手続き型言語のほとんどすべてに、その歴史の始まりから備わっています。
そして、既存のソースの資産価値を守るという意味で、言語仕様の一部がサポートされなくなることは(絶対とは言いませんが)ありません
そして>>45も参照どうぞ
314仕様書無しさん:04/01/10 01:39
ほんとかよ。
最近の言語を含めないとしても、「高級」に分類される言語(アセンブラや擬似コードでない)で
gotoが含まれる言語ってそんなに多いか?たとえ手続き型に限定したとしてもだ。

とりあえず、>>37はソースを示してくれ。
315仕様書無しさん:04/01/10 01:40
あぁ、「そんなに多いか?」ってのは、そうでない言語に比べて、な。
マイナーメジャーとかアホくさいというなよ?
316仕様書無しさん:04/01/10 01:51
37は 話のすり替え を使った!
しかし ななしさんには きいていない!

言語レベルでgoto禁止言語が増えてきていると言っているのに
何故にCのgotoが無くならないから大丈夫という話になるのか。
317仕様書無しさん:04/01/10 17:36
318仕様書無しさん:04/01/10 22:23
37は
K&RのCを読んだことがないようだな
319仕様書無しさん:04/01/11 02:09
37は
つかはらの日本史も読んだ事がないようだな
32037:04/01/11 03:18
>>314
ソースと言われてもねえ。
gotoを備えていないことを知っている言語はjava(c#もそうなんですか?)だけですしねえ。
私の知識が狭いだけかも知れないので、逆に他の「gotoが無い手続き型言語」をいくつか挙げてもらえれば
「嘘書いてゴメン」とレスしますが。

>>318
K&R、読んだことありますよ。第一版だけですが。もちろんもう手元にはありません。
321319:04/01/11 16:37
やはり>>37はつかはらの日本史は読んだ事がないらしいな。
都合の悪い事にはレスしないのが>>37流だからな。
32237:04/01/11 16:53
>>321
別に「都合の悪い事」だからレスしないわけじゃなくて、「スレテーマとは無関係」だと思ったから無視しただけですよ。
関係があるなら、少しは説明して欲しいですね。同種のレスが来るたびに調べるのはいやだし。
323仕様書無しさん:04/01/11 21:26
レスを読んだが、どう考えても >>314 より >>37 の方が
数段上手のような気が・・・

>>314
>>37 の言うとおり、>>314 が知っている手続き型言語をリストアップ
してみな。それくらい出来るだろ?

あとはこのスレの連中がその言語が goto を含んでいるか否かを
判別してやるからさ。
32437:04/01/11 21:29
>>323
Java, C#, VB
325仕様書無しさん:04/01/11 21:35
322 名前:37 :04/01/11 16:53 ID:eT4VZRqf
>>321
別に「都合の悪い事」だからレスしないわけじゃなくて、「スレテーマとは無関係」だと思ったから無視しただけですよ。
関係があるなら、少しは説明して欲しいですね。同種のレスが来るたびに調べるのはいやだし。


323 名前:仕様書無しさん :04/01/11 21:26 ID:eT4VZRqf
レスを読んだが、どう考えても >>314 より >>37 の方が
数段上手のような気が・・・

>>314
>>37 の言うとおり、>>314 が知っている手続き型言語をリストアップ
してみな。それくらい出来るだろ?

あとはこのスレの連中がその言語が goto を含んでいるか否かを
判別してやるからさ。



324 名前:37 :04/01/11 21:29 ID:eT4VZRqf
>>323
Java, C#, VB
326仕様書無しさん:04/01/11 22:25
自分に都合の悪い書き込みは全てたった一人の仕業に見えてくるのは何故だろう。

広い世の中、同じようなことを考える馬鹿が100人いたとしてもおかしくないのに・・・
327仕様書無しさん:04/01/11 23:33
もまえらのやっている事は全部まるgotoお見通しだ!
328仕様書無しさん:04/01/12 00:07
ついでに、Cには割り当て形GO TO文がない理由も考察していただけないでしょうか?
動的に飛び先を変更できないのはすごく不便だと思います。
329仕様書無しさん:04/01/12 00:15
>>328
if
330仕様書無しさん:04/01/12 00:35
>>323
そういうなら自分で列挙してみたら?
簡単なんでしょ?
331仕様書無しさん:04/01/12 02:17
33237 ◆7BXCxYvfIs :04/01/12 17:38
#しかたないなあ。3スレ目でトリップを付けざるを得なくなったか。(メンドクセー)
#しつこく自作自演だと思いこんでいる人もまだいるみたいだし・・・
流れを見てればわかる様に、>>324は別人です。

>>328
これまた強烈な御意見ですね。
分岐先を複数箇所に変更したいときには、通常cでは関数ポインタの配列を使用します
言語規格にない事柄を論じても意味があろうとは思えません。
ご希望が「そのようなc言語処理系が欲しい」なら下記参照です。
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/gccextend.html
333仕様書無しさん:04/01/12 21:33
>>332
普通そんなことしないよ。
334仕様書無しさん:04/01/12 22:32
ってゆーかさ、gotoを使わないだろ、通常
335仕様書無しさん:04/01/12 22:33
ってゆーかさ、gotoを使うだろ、通常
336仕様書無しさん:04/01/12 22:58
通常gotoを使うのは戻る意志がないからで、
関数ポインタは本意ではありません。
337仕様書無しさん:04/01/12 23:58
>>37はおとなくしアセンブラ開発に専念してれば不毛な争いが起こらなくていいと思います。
33837 ◆7BXCxYvfIs :04/01/13 00:39
>>336
はあ。なるほど。しかし「分岐先を動的に変更する」というのはcではほかに方法がないような・・・
「変数にラベルを何通りかにアサインして、その変数の示すラベルに分岐する」というのは、
いにしえの(fortranのような)非構造化言語にありましたが、現在の構造化言語規格にそれを望むのは
無理ではないでしょうか。cも例外ではないと思いますよ。

>>337
gotoを使う使わないは人によってそれぞれです。使う人は使わない人に「使え」と強制なぞしません。
しかし「使わない人が使う人に『使うな』との発言をする」のが散見されます。この種の発言は
「goto禁止が規約になっている開発現場での発言」なら妥当ですが、ここでは「スレ違い」だという主張を
しているだけです。つまり「禁止関連はスレ違い」です。この主張に反論があればどうぞ。

もっと根源的な視点から言うと、「goto論争は不毛な論争」です。
論争に参加することにより、「参加者がプログラミングについて考える」という利点があるのみです。
339仕様書無しさん:04/01/13 00:43
switch?
340仕様書無しさん:04/01/13 00:54
>>338
もっと根源的な視点から言うと、君の>>337へのコメントのようなメタ議論は不毛な論争だよ。
341仕様書無しさん:04/01/13 00:58
>>338
> はあ。なるほど。しかし「分岐先を動的に変更する」というのはcではほかに方法がないような・・・

はぁ?
342仕様書無しさん:04/01/13 03:44
>>338
事前に関数アドレス配列に用意しておいて、その配列の添え字を「何らかの計算」して呼び分けるって事か?
でも呼び元に戻ってくるぞ?てのが >>336

ifとか使うしか無いのでわ?てのが >>329,339

そんな分岐するgotoが必要な糞コードつくるんぢゃねーよってのが漏れの意見
343仕様書無しさん:04/01/13 03:45
産業排水を垂れ流す垂れ流さないは工場によってそれぞれです。垂れ流す工場は垂れ流さない工場に「垂れ流せ」と強制なぞしません。
しかし「垂れ流さない工場が垂れ流す工場に『垂れ流すな』との発言をする」のが散見されます。この種の発言は
「産業排水の垂れ流しが法律になっている国での発言」なら妥当ですが、ここでは「スレ違い」だという主張を
しているだけです。つまり「垂れ流し関連はスレ違い」です。この主張に反論があればどうぞ。

天然公害goto厨氏ねや
344仕様書無しさん:04/01/13 08:15
あるのに使わない理由なんて好き嫌いか、そうじゃなきゃダメって禁止されたらそれっきりのお子様でしかないさ。

他人の好みにチャチャ入れる奴も、大抵はお子様だしな。

それでも、このスレが続くってのは、
結局 java厨がコード盗めないからダダこねてるって事かい?



34537 ◆7BXCxYvfIs :04/01/13 11:13
>>342
職業としてのPGに限定すれば、妥当な「漏れの意見」だと思います。
ただ「『プログラミングを仕事として行っているわけではないという人の存在』も認めるべき」だと思いますが。

>>343
×「垂れ流し関連はスレ違い」
○「垂れ流し禁止関連はスレ違い」
「goto≡産業排水」ですか。
(繰り返しになりますが)「gotoは無条件に有害。gotoを使用すればプログラムの解析性は低下する。例外は無い」と思っておられるわけですね。
gotoを使う人(少なくとも私)は、そう思っていません。ここに至るとこれは「主観の問題」となります。
主観が違うからと言って相手を公害呼ばわりするのは狭量極まりないですね。

>>344
基本的に同意。
ただgoto論争が続く理由は、「初級者の頃に『gotoは無条件有害であるとの刷り込み』がなされるからではないか」と考えています。

#「都合の悪い事にはレスしない」との批判に応える意味で、沢山レスしたけど少し疲れてきたな・・・
#やはり「レスするに足りるレスにだけレス」することにするぞ。
346仕様書無しさん:04/01/13 11:15
>ただ「『プログラミングを仕事として行っているわけではないという人の存在』も認めるべき」だと思いますが。
なんだ、素人か。
347仕様書無しさん:04/01/13 11:31
>>346
素人が存在するから、玄人も存在する。素人の存在を認めない玄人ってなんだ。
348仕様書無しさん:04/01/13 12:22
>>345
あのねぇ、何度も書くけどもはや君のやってるのは「goto論争」じゃなくて、「goto論争に関するメタ議論」
なんだよ。君がそれを続けたけりゃ続けてもいいけどね。ただしおそろしく不毛だが。
349仕様書無しさん:04/01/13 12:28
>>345
都合の悪いことにもレスするんなら、
>>332
>分岐先を複数箇所に変更したいときには、通常cでは関数ポインタの配列を使用します
みたいなアホなこと言ったことに決着つけろよ。つまり君の思考能力に対しての批判に
レスしろということだ。
350仕様書無しさん:04/01/13 12:41
>>338
> gotoを使う使わないは人によってそれぞれです。使う人は使わない人に「使え」と強制なぞしません。
> しかし「使わない人が使う人に『使うな』との発言をする」のが散見されます。この種の発言は
> 「goto禁止が規約になっている開発現場での発言」なら妥当ですが、ここでは「スレ違い」だという主張を
> しているだけです。つまり「禁止関連はスレ違い」です。この主張に反論があればどうぞ。

スレ違いじゃないでしょ。
「Cでgotoを使うとこのようなデメリットがあるから使うべきではない」
これのどこがスレ違いなんだ?
それに、「gotoを使うなと強制するな」と同じロジックで「gotoを使うなと言うなと強制するな」と言えるよね。
351仕様書無しさん:04/01/13 13:09
>>345
> gotoを使う人(少なくとも私)は、そう思っていません。ここに至るとこれは「主観の問題」となります。

人の意見に反対するのに、そう思わないから「主観の問題」としてしまうのはどうかと思うぞ。
そう思わないからと反対すれば、37の意見も「主観の問題」になる。
352仕様書無しさん:04/01/13 13:19
Xについては主観の問題(個人的な好き嫌い問題)なのに、
Xがキライを押し付ける言い方をする=個人の尊厳を冒す行為だという事でしょう。
353仕様書無しさん:04/01/13 13:35
書こうと思えば、goto だけじゃなく if 3項演算子、case を使わないでも書ける。

そんなコードを実際必要が生じて書いた事もあるよ。 理由は実行時間を一定にする為だ。

でもさ、そんな理由なく、それらを禁止するのって馬鹿だと思うだろ?
35437 ◆7BXCxYvfIs :04/01/13 14:39
>>348
確かにそうです。不毛ですよ。
そしてgoto論争自体も不毛です。
「有意義な成果を得られる」と思っているのですか

>>349
どんなに複雑な条件であっても、内部コードを格納する変数を設ければ、
分岐自体はフラットになり、ifだろうがswitchだろうがスッキリ書けます。
#「条件群→内部コード」変換には、決定表を持つのが良い方法です
ですが>>328の求めていることはそういううことでは無いことを理解していますか?
ある人が「このように書きたい」とレスしたときに、「そんなんじゃ駄目だ。こう書けという」のと、
「似た書き方としてこのように書けますという」。の二者の違いだけがあるだけです。
さらに書くなら、「実装には多種多様な方法がある」という前提に気がついていますか?
35537 ◆7BXCxYvfIs :04/01/13 14:40
>>350
「Cでgotoを使うとこのようなデメリットがある」はスレに沿った発言です。ですが
「Cでgotoを使うとこのようなデメリットがあるから使うべきではない」 はスレ違いです。
違いが判りますか?。すべての要素技術は、その欠片に至るまで、メリットとデメリットの双方を出して論争するのが正しいでしょう。
「使うべきではない」と短兵急に断言するなら、その人は「論争するつもりが無い」と判断されても仕方がありません。
ひいては何故このスレに書きこむのかも理解できませんね。
 最後の文の「」の中はめったに見ない三重否定ですね。私の理解力の限界だと思いますが、よく理解できません。
「gotoを使うなと言うな」これは確かに言いました。そしてお互いにそうですがいかなる意味でも「強制」なぞ出来ません
 事実を一つ指摘します。「なぜ使うべきではないか」という理由に、今に至るも論理的な理由を示している人はいないのです。
「解析性が低下するから」という理由はありました。しかし「なぜ常に解析性が低下するか」を論理的に説明した人はいません。
「規約だから」とか「法則だから」という理由もありました。しかしこれは単なる決まり事であって、論理的な理由ではありません。
特に後者を理由として掲げる人は思考停止に陥っていると判断しています。

#ああ疲れた。次々に新しい人が参加するからきりがないよ。>>349みたいに枝葉末節に拘る人もいるし。
#「都合の悪い事にもレスしろ」って書いてあるレスにもレスしたいのはやまやまだけど・・・。もう少し考えてからレスして欲しいよ
356仕様書無しさん:04/01/13 16:26
関数ポインタ使う方法って、大量にあると関数呼び出し/戻りの
コストが気にならない?
switch以外にjmpテーブルのコード生成ができればいいんだけど。
gccのラベルの仕様が標準で欲しいと思った。
35737 ◆7BXCxYvfIs :04/01/13 16:51
>>351
「すべてが主観の問題である」とは言っていません。「プログラムのわかりやすさというものは主観の問題である」と言っています
私は「主観の問題である」と表明した。あなたは「主観の問題ではない」と表明した。
ならば、あなたは「どのような問題であるかを表明する必要がある」と思いますが。どうですか

>>356
#わき道ですが、良いレスをありがとう御座います。
>関数ポインタ使う方法って、大量にあると関数呼び出し/戻りのコストが気にならない?
ええ確かに。「その種のコストが無視出来るような情況で・・・」です
>switch以外にjmpテーブルのコード生成ができればいいんだけど。
はい。展開コードで確認するしか方法が無いのが現状でしょう。マニュアルにその種のことが書いてある例はみたこと無いです。
>gccのラベルの仕様が標準で欲しいと思った。
まあその種の要望が存在するからgccもそういう拡張をしているのでしょうね。ですが>>338にも書きましたが言語規格としては無理かなと思います
358仕様書無しさん:04/01/13 19:27
>>345
『プログラミングを仕事として行っているわけではないという人』
ならなおさら分岐するgotoが必要な糞コードつくるんぢゃねーよ

普通につくれ普通に
359仕様書無しさん:04/01/13 19:47
>>344
きみも K&R Cを読みなさい
360仕様書無しさん:04/01/13 23:56
結局、動的に飛び先を変更する機能がない理由は
解明されないってことか。
素人がどうのと脇道にそれちまったし。

冗長に書くことが良いとされる分かりやすさや堅牢性の尺度と
極限までのチューニングを求める尺度。

色んな使い方があるんだから、
一方的な押し付けや切捨ては止めて欲しいな。
361仕様書無しさん:04/01/14 00:06
>>358
「普通」ってのは最高難度。素人さんには無理
362仕様書無しさん:04/01/14 00:08
せめてfinallyさえあればだいぶ可読性あがるんだけどな。

try{
 return;
}finally{
 // ここ通る。
}

例外処理はないけどfinallyのある言語ってないのかね。
363仕様書無しさん:04/01/14 00:37
いちいちtry書いたりブロックで囲むのは嫌だよな。

finaly: expr1;
finaly: expr2;
finaly: expr3;
 :
みたいなのでいいよ。
364仕様書無しさん:04/01/14 00:52
>>355
>最後の文の「」の中はめったに見ない三重否定ですね。私の理解力の限界だと思いますが、よく理解できません。

三重否定じゃないよ。

>>350
>それに、「gotoを使うなと強制するな」と同じロジックで「gotoを使うなと言うなと強制するな」と言えるよね。
「gotoを使うなというな」というのは君。
そしてそれを強制するなと他人が君に言うのだ。
365仕様書無しさん:04/01/14 00:54
>>355
> 「Cでgotoを使うとこのようなデメリットがある」はスレに沿った発言です。ですが
> 「Cでgotoを使うとこのようなデメリットがあるから使うべきではない」 はスレ違いです。

違いはわかるが何でスレ違いなんだ?
なぜ君がスレの趣旨を規定するんだ?
366仕様書無しさん:04/01/14 00:56
>>365
世界は>>37を中心として回っていると思っているからさ
そうじゃなきゃいまどきgoto(ry
367仕様書無しさん:04/01/14 00:57
保守できりゃなんだっていいよ。
368仕様書無しさん:04/01/14 00:58
>>357
> 「すべてが主観の問題である」とは言っていません。「プログラムのわかりやすさというものは主観の問題である」と言っています
> 私は「主観の問題である」と表明した。あなたは「主観の問題ではない」と表明した。
> ならば、あなたは「どのような問題であるかを表明する必要がある」と思いますが。どうですか

主観の問題ではないのであれば、それは普通、客観の問題でしょう。
で、客観的にはプログラムのわかりやすさというものは測れないというのが君の主張なんだから、
351が何かを言ったとしても、それ以上議論は発展しない。
それなのになぜ「必要がある」のでしょうか?

それに351は君が読みそう読んだようなことは書いてないと思うし。
369仕様書無しさん:04/01/14 01:02
>>354
> どんなに複雑な条件であっても、内部コードを格納する変数を設ければ、
> 分岐自体はフラットになり、ifだろうがswitchだろうがスッキリ書けます。
> #「条件群→内部コード」変換には、決定表を持つのが良い方法です
> ですが>>328の求めていることはそういううことでは無いことを理解していますか?

理解していますかって、俺の方が言いたいね。

つーか、君、
・自分の書いたこと理解できてる?
・覚えてる?
・首尾一貫した発言をしていると思ってる?
・間違いは無いとでも思ってる?
370仕様書無しさん:04/01/14 01:04
>>355
> 「使うべきではない」と短兵急に断言するなら、その人は「論争するつもりが無い」と判断されても仕方がありません。
> ひいては何故このスレに書きこむのかも理解できませんね。

その「デメリット」がデメリットではないことを示すか、デメリットではあるが、それを上回る別の
メリットがあることを示せば、議論になるが。

思考停止してるのは君のほうじゃないの?
371仕様書無しさん:04/01/14 01:25
>>368 さんとか >>370 さんの言うとおりだと思う.

>>355
> 事実を一つ指摘します。「なぜ使うべきではないか」という理由に、今に至るも論理的な理由を示している人はいないのです。
>「解析性が低下するから」という理由はありました。しかし「なぜ常に解析性が低下するか」を論理的に説明した人はいません。

んでも,goto 使わずに構造化した方がスッキリすることが多いのは事実なわけで.
このスレから参加したので,できれば >>37 さんがなぜ
「goto を使うなというな」って主張するのか知りたい.
372仕様書無しさん:04/01/14 02:36
37の書き込みって、人が何か書き込まずにいられなくさせるようなモノが必ず含まれてるよね。
ワザとでしょ?
ギロンする気なんて全然無くって、ただ反応を見て、だらだらと書き込みを続けて楽しんでる
だけでしょ?
相手するほうもするほうだけど。
(つーか、俺も俺だけど)
373仕様書無しさん:04/01/14 09:52
「goto を使うな」= 俺がキライな書き方を俺の目の前で使うな
「goto を使うなというな」 = 俺に押し付けをするな

どっちも、俺中心って事じゃないの?
374仕様書無しさん:04/01/14 10:04
「goto 使わずに構造化した方がスッキリすることが多いのは事実」

どうして事実なのよ?

goto 使わずに構造化した方がスッキリするような所で goto は使わないでしょ?

ただし、 手続化、条件分岐・繰り返し命令で書いた方がスッキリしたと感じるのは個人差がある。
短いコードの方が好ましいと感じる人もいるし
判り易いコードの方が好ましいと感じる人もいる

gotoを使うなという条件が与えられたらgotoを使わないで書くのは簡単な人でも、gotoがあるなら使うだけ。
375仕様書無しさん:04/01/14 10:57
>>371
> >>355
> >しかし「なぜ常に解析性が低下するか」を論理的に説明した人はいません。
>んでも,goto 使わずに構造化した方がスッキリすることが多いのは事実なわけで.

AHO
37637 ◆7BXCxYvfIs :04/01/14 14:49
反論なら更なる反論で返すことも出来るけど、単に「反対」としか書いてないと、
どうレスして良いものやら・・・

>>360
>結局、動的に飛び先を変更する機能がない理由は解明されないってことか。
元来、存在しない機能ですからね。特定の言語処理系にその機能があるからといって言語規格に
反映されることが常にあるわけではないです。なぜ無いかの私見を書いてみます。
この機能はgotoの拡張だからです。cの構造化言語としてのgotoについての方向性は、breakやcontinueという
文によってgotoの機能の限定化することです。つまり「方向性が逆であるから」だと思いますよ。

>>364 >>365
私は「禁止関連はスレ違い」との主張をしているだけですよ。私の主張に反対なら反論なさればよいでしょう。レスの内容がズレていますか?

>>368
「主観の問題」と「客観の問題」という認識の違いが存在するなら、それは議論の対象となります。
ただし、「客観の問題」であると主張する人が存在するなら、プログラムのわかりやすさを定量化する尺度を
提示していただかなくてはなりません。その尺度の正当性について論じることにより、
「主観の問題」であるか「客観の問題」であるかの判断が可能となります。間違っていますか?。

>>370
「議論したいのなら禁止を言うべきではない」と考えます。議論したいのなら、どうぞしてください
37737 ◆7BXCxYvfIs :04/01/14 14:51
>>371
>んでも,goto 使わずに構造化した方がスッキリすることが多いのは事実なわけで.
>このスレから参加したので,できれば >>37 さんがなぜ
>「goto を使うなというな」って主張するのか知りたい.
はい。ご指摘のとおりです。「構造化した方がスッキリすることが多い」は正論です。これも主観の問題
ですが。スッキリについての主観は一致しています(昔は一致していない人がいたのですが)
問題は「多い」というところでして、いみじくも正しい表現です。逆に表現してみます。
「構造化した方がスッキリしない場合が存在する」
つまり「すべての場合において構造化することが最善であるわけではない」
その様に思っている開発担当者が「gotoを使う方がスッキリする」と判断した場合、gotoを使うべきです。
これがgotoについての私の主張。もちろん規約の問題は別です。
 gotoを使う/使わないがスレテーマです。gotoを禁止する/禁止しないがスレテーマではありません。
禁止論議は議論内容が空虚になります。これは前の2スレを見れば首肯してもらえるはずですが。
また「なぜgotoを使うべきで無いか」の理由として「規則だから」という倒錯した理由を掲げる人も出ます。
 匿名掲示板で何ら強制力を持たないgoto使用禁止を決定したとて何の意味もありません。
また逆にgoto使用制限撤廃を決定したとて同様に何の意味もありません。御理解いただけましたか。

>>372
ワザとではないんですが・・・・
>ギロンする気なんて全然無くって、ただ反応を見て、だらだらと書き込みを続けて楽しんでるだけでしょ?
その様に受け取られるのも詮無い事です。ですが2スレを使用して沢山議論しました。
やっと「cでgotoを使用しない理由は存在しない」という結論に到達したと思ったら、
議論をまた最初から始める人がいて・・・。「終わった議論を蒸し返してほしくない」と主張しています。
また個人的にも繰り返しに飽きているところです。
「消えろ」とのレスがあればReadOnlyになる心境になっていますよ。背中を押してほしい。
#リクエストがあれば復帰しますけど
37837 ◆7BXCxYvfIs :04/01/14 14:52
>>373
匿名掲示板では何を言われても「押し付け」などとは感じません。
上記371へのレスを参照してください。

>>374
総論支持
379仕様書無しさん:04/01/14 15:35
>>37
一つだけ忠告しておくよ。
ここであんたの主張を繰り返せば繰り返すほど
まわりの奴はgotoとgotoを使う人間とgotoを使うなと言うなという人間を嫌いになっていく。
gotoが人間の記憶から忘れ去られるほどの未来にならなければ
goto嫌いはなくならないだろうな。
380仕様書無しさん:04/01/14 15:52
>>379
まぁ、それだけの理由でgoto嫌いになって仕事の内容にまで影響するとしたら
そいつはバカなわけだが。
38137 ◆7BXCxYvfIs :04/01/14 18:16
>>379
ご忠告ありがとう。
しかしながら誰が誰を(あるいは何を)嫌いになるかに関心はありません
論理でなく好悪で判断を行うなら「どうぞ御自由に」です

>>380
そうですね
382仕様書無しさん:04/01/14 18:52
>>376
>この機能はgotoの拡張だからです。cの構造化言語としてのgotoについての方向性は、breakやcontinueという
>文によってgotoの機能の限定化することです。つまり「方向性が逆であるから」だと思いますよ。
創造性に欠けるなあ。
383仕様書無しさん:04/01/14 20:59
>>376
> 「主観の問題」と「客観の問題」という認識の違いが存在するなら、それは議論の対象となります。
> ただし、「客観の問題」であると主張する人が存在するなら、プログラムのわかりやすさを定量化する尺度を
> 提示していただかなくてはなりません。その尺度の正当性について論じることにより、
> 「主観の問題」であるか「客観の問題」であるかの判断が可能となります。間違っていますか?。

「主観」か「客観」かだけが論点だということかな?
論点をずらさないでくれるかな。
君は「主観である」という主張なんだろ?だから「客観である」という主張とはそもそも
噛み合わないでしょ。それともアレかな。反論をしたいということかな。

> >>370
> 「議論したいのなら禁止を言うべきではない」と考えます。議論したいのなら、どうぞしてください

この文章が370へのコメントというのが信じられないんだが。
番号間違えてないか?
384仕様書無しさん:04/01/14 23:59
>>374
>>「goto 使わずに構造化した方がスッキリすることが多いのは事実」
>どうして事実なのよ?
>goto 使わずに構造化した方がスッキリするような所で goto は使わないでしょ?

コード化されていない処理をコードにする場合,
構造化するか, goto で処理を遷移させるかを選ぶならば,
たいていの場合,構造化を選択したほうが綺麗にコードが書けるだろうということだったのです.
言葉足らず過ぎましたね.すみません.
>>374 さんのおっしゃるとおり,コードの内容,
例えばエラー処理へ移行する場合や多重ループから脱出する際などには,
goto の使用もありだと思います.

>>73
>つまり「すべての場合において構造化することが最善であるわけではない」
>その様に思っている開発担当者が「gotoを使う方がスッキリする」と判断した場合、gotoを使うべきです。

正論だと思います.開発者が一人の場合や,同じようなプログラミングスタイルを
持っている場合などでは,goto を使っても問題ないでしょう.
385371:04/01/15 00:00
384=371 です.

個人的に goto 論争は「違うプログラミングスタイルを持つ開発者が共同開発を行う」ような状況において,
開発者が自分のスタイルで goto を使うことは,
共同開発者に対して,無用の混乱を招くだけではないのか?
また,goto を利用するとするならば,どのような状況において使用すれば,
開発グループ内で可読性のあるコードを維持することができるか,
について論じられているものだと思っていたのです.
ここでは「C 言語で goto を使うこと」についてのスレだったのですね.
ってスレタイにもそう書いてあるし…….
そういうことであれば,主観にしたがって思うままに goto を使えばよいと思います.
スレ違いだったようです.お手数をおかけしてすみませんでした.
386仕様書無しさん:04/01/15 00:00
【祭り確定】ここで公然とファイル交換が行われてるぞ!!

http://book.2ch.net/test/read.cgi/bun/1072959852/l50
387仕様書無しさん:04/01/15 03:04
結局
Cでgotoをうまく使えない奴が「禁止だ禁止だ」って事だろ?

無理矢理使うモンぢゃなくて、多重ループから脱出するなどにしか使わないのにな
そーゆー事も理解できねぇんだ(w
388仕様書無しさん:04/01/15 05:25
Cでgotoをうまく使えない奴 = 正常
Cでgotoをうまく使えると思っている奴 = 異常

人間が扱うには泥臭すぎる。それがgotoだと知れ。

389仕様書無しさん:04/01/15 09:00
泥臭いって・・・・PICのgotoじゃあるまいし
390仕様書無しさん:04/01/15 09:00
正常とか異常って、お前はアホですか?>388

保守できるレベルならなんでもいいんだよ。
ループもネストさせてフラグなんかに頼ると読めなくなると同じ事だし。
391仕様書無しさん:04/01/15 09:13
C言語をうまく使えない(と思っている)奴 = 正常
C言語をうまく使えると思っている奴 = 異常

日々精進ですよ。
392仕様書無しさん:04/01/15 10:30
芸や技の道じゃあるまいし
どんな道具でも必要に応じて使えればそれでいいさ。
393仕様書無しさん:04/01/15 10:44
>>387
全く同意するが、前スレだかで「Cのコメントを除去するコード」でgotoを使いまくった
コードを提示して、それが「保守性が高い」だの「可読性が高い」だの言い出す奴が
いるから困るんだよね。またおそらくそいつは、そのコードがエレガントだと思ってる
に違いない。
だから俺はgoto使う派だけど、無条件にチームメンバーに「goto使っていいよ」と言う
気になれないんだよね。

どこかで誰かがこんなこと言ってたな。

まず自由にgotoを使え。
次にgotoを使わないことを覚えよ。
最後にgotoを使うべきところで使え。
394393:04/01/15 10:52
ちなみに俺は俺の課内のコーディング規約を書いているんだけど、Cのプロダクトでは
1. 多重ループからの脱出
2. ローカルリソースの解放をともなう異常処理ブロックへのジャンプ
ではgotoを使っても良いことにしてる。
C++では2は、大抵設計が悪いので、基本的には1だけOKにしてる。
395仕様書無しさん:04/01/15 20:08
1.多重ループからの脱出
これも 設計が糞の可能性がたかいな
396仕様書無しさん:04/01/15 20:16
ところでさ、設計がクソクソいう奴がマトモなもの作ったの オレは見た事ないんだが

これってどいう事なんだろね?
397仕様書無しさん:04/01/15 20:58
カキコする人間のキャリアがもろに出てオモロいスレだ。

>多重ループからの脱出は設計が糞。

多重ループが存在するのは設計が悪いと言ってるのか?
普通にあるだろ。
データ構造が悪いのか?
対象の構造がそうであればしかたがない。
フラグだらけで、1週間後に見たとき訳がわからなくなるより
gotoをお勧めする。
398仕様書無しさん:04/01/15 21:06
>>396
* 優れた批評家が優れた作家である必要はないと言うこと。
* 現場に批評家はいらないと言うこと。
399仕様書無しさん:04/01/15 21:23
>>398
優れた作家希望。
優れた作家はgotoを使用するとエレガントになるような設計はしない。
優れた作家はgotoの使用がエレガントで無様な代替手段を選択しようとは誰も思わない作品を作る。
優れた作家は上のどちらも自由に設計できるので、そもそもこんなスレには居ない。
あまりにも優れた作家は時代を超越してるので、そのよさが誰にも分からず、実装されることはない。
そこそこ普通の作家はそこそこ普通の設計をし、誰にでもつまらない思いの対価を簡単に受け取れるような作品を書く。
駄目な作家は作品を見ても駄目なんで、当然実装されない。

あまりにも優れていても駄目でも同じ憂き目にあうと。
過ぎたるは奈央及川ばざるが如し。
40037 ◆7BXCxYvfIs :04/01/15 22:30
>>382 「貧困な想像力」という批判なら甘んじて受けます。

>>383
「わかりやすさ」がgoto使用についての最重要な論点だと認識しています。
これが主観なのか客観なのかはとても重要です。確かに私は「主観である」と表明しています。
そして「客観であると表明している人はまだいない」と認識しています。
「私が論点をずらしている」と考えているならば、「あなたが何が最重要な論点だと思っているのか」を
記述してください

>この文章が370へのコメントというのが信じられないんだが。
>番号間違えてないか?
私が舌足らずでしたね。370は「議論になる」という主張です。
「禁止を言うと良くない」という老婆心からの発言が一つ。
そして(その議論はもう終わっていて私は繰り返したくないので)「ご自由にどうぞ」との発言が一つです。
40137 ◆7BXCxYvfIs :04/01/15 22:30
>>384 どうもありがとう

>>385
>個人的に goto 論争は「違うプログラミングスタイルを持つ開発者が共同開発を行う」ような状況において,
>開発者が自分のスタイルで goto を使うことは,
>共同開発者に対して,無用の混乱を招くだけではないのか?
>また,goto を利用するとするならば,どのような状況において使用すれば,
>開発グループ内で可読性のあるコードを維持することができるか,
>について論じられているものだと思っていたのです.
 はい。私もそのようなスレになれば良いと思っています。同様な主旨で>>166の末尾にもそう書きました。
ですが>>377の後半にも書きましたが、いつまで経っても終わった話題を蒸し返す人が参入するのです。
匿名掲示板という特質上、これは避けられない事態だと、もう諦めています。
>スレ違いだったようです.お手数をおかけしてすみませんでした.
 いいえ。スレ違いでは無いと思いますよ。>>371のようなレスはとても上質なレスだと思います。
ありがとうございました。

>>393
ああ。それは私です。正確には先頭スレの699(と700)です。
有限状態遷移の表現を行う場合、(ある程度以下の規模なら)状態遷移図をそのままコード化します。
構造化されたコードと見比べて、「gotoを使いまくったコード」が一番わかりやすいと表明した人が、
私以外にもいたという事実を追記させてください。
402仕様書無しさん:04/01/16 01:02



   い つ ま で 経 っ て も 終 わ っ た 話 題 を 蒸 し 返 す 人 が 参 入 す る の で す。





                             誰の事だか考えてみた事ありますか?
40337 ◆7BXCxYvfIs :04/01/16 01:34
私?(文脈から考えるとそうなるよーな)
私は「具体的に指摘してくれないと判らない」人間ですよ。記憶力がとても悪いので。
>>183 みたいに具体的に指摘してくれないと。
404仕様書無しさん:04/01/16 02:42
>>401
>有限状態遷移の表現を行う場合、(ある程度以下の規模なら)状態遷移図をそのままコード化します。

そうか? 表をそのまま関数ポインタの配列で表現するだろ、人間に分かりやすいし。
gotoを使いまくったものがわかりやすい、とは思わんなぁ。
405仕様書無しさん:04/01/16 02:54
>>404
>そうか? 表をそのまま関数ポインタの配列で表現するだろ、人間に分かりやすいし。
うーん。「表をそのまま関数ポインタの配列で表現する」って理解できません。
406仕様書無しさん:04/01/16 02:58
>>405
理解できないおまえが理解できません。
407仕様書無しさん:04/01/16 03:22
>405 は人間ではないので...
408仕様書無しさん:04/01/16 03:24
人間以外な >>405 がいるスレはここでつか?
409仕様書無しさん:04/01/16 08:15
そうか
状態遷移図から状態遷移表を作る作業を手抜きしたのね
状態遷移図のままプログラムをつくると
gotoがないとどうしようもないな
410仕様書無しさん:04/01/16 08:55
手抜きというか、その方が仕様変更にも強いし、やっぱり速く結果が出せるからね。

それと遷移表まで作ったら、いっそ関数ポインタよりデータテーブルにした方がいいじゃない。
今の環境だとデータ表の方が関数ポインタより高速実行出来るでしょ。
411仕様書無しさん:04/01/16 09:28
>>410
日本語書いてもらえます?
412仕様書無しさん:04/01/16 18:57
410へ

 一ヶ月くらい仕事せずに ゆっくり温泉にでもつかってこい

413仕様書無しさん:04/01/16 22:31
>>404 の職種は技術系じゃねーな。
聞きかじりで理解してないこと書いててみっともねーぞ。
40代後半くらいか?
414371:04/01/16 23:31
>>401
>  はい。私もそのようなスレになれば良いと思っています。同様な主旨で>>166の末尾にもそう書きました。
なるほど,そうでしたか.>>166 を読みこぼしていました.

>>スレ違いだったようです.お手数をおかけしてすみませんでした.
> いいえ。スレ違いでは無いと思いますよ。>>371のようなレスはとても上質なレスだと思います。
どうもです.そう言ってもらえてありがたいです.

>有限状態遷移の表現を行う場合、(ある程度以下の規模なら)状態遷移図をそのままコード化します。
この方法だと分岐のための if 文が大量に発生しませんか?
状態が 10 個あれば,最低,10 通りの分岐条件とそれに対する goto 文が必要です.
分岐先の決定を各状態ごとに関数化しようと試みても,
直接 goto で遷移するような書き方ではそれもできません.
結果,一つの関数が肥大化すると思うのですが…….
goto での状態遷移はやったことないので,説明してくださるとありがたいです.

>>404
>そうか? 表をそのまま関数ポインタの配列で表現するだろ、人間に分かりやすいし。
状態遷移表をそのまま関数ポインタの配列で表現することは現実的だと思いません.
状態数 10 で入力が 10 なら 10 × 10 の大きさを持つ表が必要です.
ある程度以下の規模って条件で話進められてるけれど,
3 × 2 みたいな大きさの状態遷移を思い浮かべてないよね(w
415仕様書無しさん:04/01/16 23:52
状態を示す変数をもってswitch,でイベントループ風にしないか?
状態遷移をgotoって、フローチャートじゃあるまいし。メンテ性悪すぎ。
416仕様書無しさん:04/01/16 23:54
>結果,一つの関数が肥大化すると思うのですが…….
肥大化するようなら別の方法を取るべきなんでは?
なにも状態遷移すべてをgotoで書けといっているわけではないし。
まぁ、使うべきところがそんなに多くはないだろう事は認める。

字句解析とかなんかだと使ったほうがすっきりするかもね(複雑さによるけど)。
417仕様書無しさん:04/01/16 23:57
>状態数 10 で入力が 10 なら 10 × 10 の大きさを持つ表が必要です.
それに何か問題が?
418仕様書無しさん:04/01/17 00:36
今日仕事でgotoを使いたいと思った場面にでくわした。C++で。
実際そうコーディングしたら、最初のgotoからラベルまでの間に初期化を伴う
変数定義ができないことがわかった。
もちろんgotoを使うのやめたよ。
gotoはCだけにしかなじまないね。
419仕様書無しさん:04/01/17 01:07
その変数が必要な部分だけ{...}で囲めば無問題。
もし本当にgotoが必要ならね。
420仕様書無しさん:04/01/17 01:09
ってC++の話じゃねぇかゴ━━━━(# ゚Д゚)━━━━ルァ!!
421371:04/01/17 01:17
>>415
私もそうしてます.

>>416
>肥大化するようなら別の方法を取るべきなんでは?
>なにも状態遷移すべてをgotoで書けといっているわけではないし。
なるほど.ハイブリッドですか.
選択肢の一つとしての goto なら,状態遷移の方法としてありですね.

>>417
よく考えると問題ないですね.
>>414 書いたときは,「メモリの無駄使い」「手入力で状態遷移先を指定しなければならないこと」を
デメリットだと考えていましたが,先に挙げている 10 × 10 を例に取ったとしても,
メモリ使用領域はたかだか 400 [Byte].状態遷移の手入力することも,テーブルを使わない場合に
遷移条件と遷移先を記述しなければならないことを考えれば,むしろ,楽ですね.
(10 × 10 の表を全て埋めなければならないと勘違いしていました.愚かだ)
よく考えずに発言してしまいました.すみませんでした.

>>419
私も switch の中でインスタンス生成したかったときにエラー出されて悩みました.
確かに,goto は C++ には向かないですね.
422仕様書無しさん:04/01/17 01:46
なかなかいい感じだな。
423404:04/01/17 02:47
>>421
>遷移条件と遷移先を記述しなければならないことを考えれば,むしろ,楽ですね.
人間にとってはあたりまえだ(w
424仕様書無しさん:04/01/17 02:49
switchは、

case HOGEHOGE: {
  :
  break;
}

とか書くことも結構有るな。
変数の適切なスコープ制御は結構基本だと思うけど…
425仕様書無しさん:04/01/17 02:52
このスレで何かを学んだ人の数→0
426仕様書無しさん:04/01/17 03:03
goto って存在を学んだ
427仕様書無しさん:04/01/17 05:15
#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;}
428仕様書無しさん:04/01/17 08:30
>>427
実際に走らせたのか?
429仕様書無しさん:04/01/17 11:12
>>427
ワラタ
>>428
走らせてみれば?
コンパイルは通るよ。
理解すんのがマンドクセーだけど。
430仕様書無しさん:04/01/17 11:57
#include <stdio.h> /* リファクタリングしてみますた */
#include <malloc.h>
main(argc,argv) int argc; char *argv[]; {
char *pchar, inputed_line[80];FILE *file; int goto_counter=0, str_len, MAX=79,
argc_index=1;if (argc == argc_index) goto ERROR; goto FIRST; READ: if ( fgets( inputed_line,
MAX, file)) goto LET_STR; goto CLOSE; EXIT: exit(); INCREMENT_GOTO_COUNTER: ++goto_counter;
goto MINUS_STRLEN; IF_BLANK_LINE: if ( str_len > 0) goto MEMCMP; goto READ;
IS_OPEN: if ( !file) goto ERROR; goto OPENED; PRINT: printf( "%d goto \'s\n", goto_counter);
goto EXIT; MEMCMP: if ( !memcmp( pchar, "goto", 4)) goto PLUS_CHAR; goto INCREMENT_PCHAR;
ERROR: exit( argc_index); LET_STRLEN: str_len= strlen(inputed_line); goto MINUS_STRLEN;
DECREMENT_STRLEN: --str_len; goto IF_BLANK_LINE; INCREMENT_PCHAR: ++pchar; goto
DECREMENT_STRLEN; CLOSE: fclose( file); goto PRINT; PLUS_CHAR: pchar= pchar +3;
goto INCREMENT_GOTO_COUNTER; MINUS_STRLEN: str_len-=4;goto IF_BLANK_LINE; LET_STR:
pchar = inputed_line; goto LET_STRLEN; MINUS_STRLEN: str_len-=3;goto INCREMENT_PCHAR; FIRST:
file= fopen(argv[argc_index], "r"); goto IS_OPEN; OPENED: pchar= inputed_line; goto READ;}
431仕様書無しさん:04/01/17 12:08
#include <stdio.h> /* もうすこし */
#include <malloc.h>
main(argc,argv) int argc; char *argv[]; {
char *pchar, inputed_line[80]; FILE *file; int goto_counter = 0, str_len, MAX = 79, argc_index = 1;
if (argc == argc_index) goto ERROR; goto OPEN;
ERROR: exit( argc_index);
OPEN: file = fopen(argv[argc_index], "r"); goto IS_OPEN;
IS_OPEN: if ( !file) goto ERROR; goto OPENED;
OPENED: pchar = inputed_line; goto READ;
READ: if ( fgets( inputed_line, MAX, file)) goto LET_STR; goto CLOSE;
LET_STR: pchar = inputed_line; goto LET_STRLEN;
LET_STRLEN: str_len = strlen(inputed_line); goto MINUS_STRLEN_4;
MINUS_STRLEN_4: str_len- = 4; goto IF_BLANK_LINE;
IF_BLANK_LINE: if ( str_len > 0) goto MEMCMP; goto READ;
MEMCMP: if ( !memcmp( pchar, "goto", 4)) goto PLUS_CHAR; goto INCREMENT_PCHAR;
PLUS_CHAR: pchar = pchar +3; goto INCREMENT_GOTO_COUNTER;
INCREMENT_GOTO_COUNTER: ++goto_counter; goto MINUS_STRLEN_3;
MINUS_STRLEN_3: str_len- = 3; goto INCREMENT_PCHAR;
INCREMENT_PCHAR: ++pchar; goto DECREMENT_STRLEN;
DECREMENT_STRLEN: --str_len; goto IF_BLANK_LINE;
CLOSE: fclose( file); goto PRINT;
PRINT: printf( "%d goto \'s\n", goto_counter); goto EXIT;
EXIT: exit(); }
432仕様書無しさん:04/01/17 12:26
#include <stdio.h> /* リファクタリング完了 */
#include <malloc.h>
main(argc,argv) int argc; char *argv[]; {
char *pchar, inputed_line[80]; FILE *file; int goto_counter = 0, str_len, MAX = 79, argc_index = 1;
if (argc == argc_index) goto ERROR; goto INITIALIZE; ERROR: exit( argc_index);
INITIALIZE: file = fopen(argv[argc_index], "r"); if ( !file) goto ERROR; pchar = inputed_line;
READ: if ( fgets( inputed_line, MAX, file)) goto READED; goto FINALIZE;
READED: pchar = inputed_line; str_len = strlen(inputed_line); str_len -= 4;
IF_LESS_LINE: if ( str_len > 0) goto SEARCH; goto READ;
SEARCH: if ( !memcmp( pchar, "goto", 4)) goto FOUND; goto NOT_FOUND;
FOUND: pchar = pchar + 3; ++goto_counter; str_len -= 3;
NOT_FOUND: ++pchar; --str_len; goto IF_LESS_LINE;
FINALIZE: fclose( file); printf( "%d goto \'s\n", goto_counter); exit(); }
43337 ◆7BXCxYvfIs :04/01/17 12:27
ああ。組込み系の人達がこんなに書き込みを・・・
業務アプリしか知らない人の大半は、状態遷移って単語が出た瞬間から何が書いてあるか
わからなくなると思うけど・・・

>>404
「わかりやすさというものがやはり主観だ」と再認識させられるレスでした

>>409
もちろん「抜け」が発生しうる規模になったら表を作りますけどね
逆に、表を作っても、図をベースに記述することもありますよ

>>414
説明・・・ですか。「図をそのままコード化する」で御理解戴けないと、コードを示すのが
最善となってしまうなあ。もともと「このようなケースでは私はこれが一番判りやすいと思う」
という軽い気持ちでコードをさらしたのですが、大爆発になってしまって。大爆発を再現するのは
気が重いのですが・・・。でも半分、消える心境になっているし、見たい人もいるかな。
偶然にも>>427に邪悪なソースが出てるのでこれで免疫をつけてもらってと。4X2の
極小に近いものです。逆にこのような小さい場合で無いと、このような書き方はできません。
#define SLASH '/'
#define ASTER '*'
#define GET c=getchar();if(c==EOF)return
int c;
not_in_comment:GET;if(c==SLASH)goto seen_slash;putchar();goto not_in_comment;
seen_slash:GET;if(c==ASTER)goto in_comment;putchar(SLASH);if(c==SLASH)goto seen_slash;putchar(c);goto not_in_comment;
in_comment:GET;if(c==ASTER)goto seen_aster;goto in_comment;
seen_aster:GET;if(c==ASTER)goto seen_aster;if(c==SLASH)goto not_in_comment;goto in_comment;
詰めて書いてあるので読む場合は、適切な改行とインデントとスペースをいれてから読んでください
43437 ◆7BXCxYvfIs :04/01/17 12:28
>>415
そう書くことももちろんありますよ。ですが上に書いたコードの方が判りやすい(&メンテ性高い)
と感じる人間が存在するという事実を認めていただかないと、「主観同士のぶつかり合い」
となってしまいます。

>>416 支持します
>>427 IOCCCのhtons.c(1987)、でしたっけ。本にも載ったし有名ですね。
43537 ◆7BXCxYvfIs :04/01/17 12:44
>>430-432 「あなたは、常人には無い能力を持っている」と考えます
436仕様書無しさん:04/01/17 12:48
case HOGEHOGE:
{
 ...;
} break;
437432:04/01/17 13:18
>>435
ただのリファクタリングですよ。
438仕様書無しさん:04/01/17 14:22
あるコードが解りやすいか解りにくいかというのは、もちろん個々人の主観によるが、
客観的にその数を数えることは可能。タレントの好感度ランキングみたいのと同じだよ。
gotoの場合は「好ましくない」と考える人間がいるというのは客観的事実。
439仕様書無しさん:04/01/17 14:24
>>433
> ああ。組込み系の人達がこんなに書き込みを・・・
> 業務アプリしか知らない人の大半は、状態遷移って単語が出た瞬間から何が書いてあるか
> わからなくなると思うけど・・・

それこそ主観ですね。君が知らないだけ。
440仕様書無しさん:04/01/17 14:26
>>434
> そう書くことももちろんありますよ。ですが上に書いたコードの方が判りやすい(&メンテ性高い)
> と感じる人間が存在するという事実を認めていただかないと、「主観同士のぶつかり合い」
> となってしまいます。

誰もそれには異議を唱えていないと思うが。
441仕様書無しさん:04/01/17 14:33
>>433
>業務アプリしか知らない人の大半は、状態遷移って単語が出た瞬間から何が書いてあるか
>わからなくなると思うけど・・・
もしそうだとしたらGoFにState patternなぞ入るわけないのだが。
442仕様書無しさん:04/01/17 14:34
もしそうだとしたらUMLに状態遷移図なぞ入るわけないのだが。
443仕様書無しさん:04/01/17 15:12
>>427 オマエハウンコ!!!
444仕様書無しさん:04/01/17 17:40
なんというか、
  
  
   「定説です!」
 
 
ってのを感じてしまった。
誠に「キモい」連中ですな。
445仕様書無しさん:04/01/17 23:04
>>433
(初期:コメント外)

コメント外で'/'に続けて'*':
 コメント中

コメント中に'*'に続けて'/':
 コメント外

コメント中は表示しない

ってところか?(とするとそのコード微妙に間違ってるが)
goto使って「このようなケースでは私はこれが一番判りやすいと思う」例にしちゃお粗末
44637 ◆7BXCxYvfIs :04/01/17 23:10
>>438
認めます。ご意見に続きがあるならレスどうぞ。

>>439-442
そうですね。失礼しました。
44737 ◆7BXCxYvfIs :04/01/17 23:22
>>445
翻訳環境/実行環境がないので。確かにお粗末です。すいませんね。
#この場合、「バグの有無がそんなに重要か?」ってんだ。
448445:04/01/17 23:24
もれはバグの有無を問題にしてるわけではないのだが。
フラグで充分な例だろ?って事

449438:04/01/17 23:40
>>434
>そう書くことももちろんありますよ。ですが上に書いたコードの方が判りやすい(&メンテ性高い)
>と感じる人間が存在するという事実を認めていただかないと、「主観同士のぶつかり合い」
>となってしまいます。

じゃ、この手のこと言うの止めてくれる?
つまりね、君自身がどう感じるかなんて問題じゃないし、他人がどう思うかということのほうが
重要であるということ。
45037 ◆7BXCxYvfIs :04/01/17 23:43
>>448
>>415みたいな書き方のことですね。いろんな書き方があるのは事実です。
同一の例で、5種類ほど書き方の提示がありましたよ(先頭スレ参照)。
どの書き方が一番良いのかを論じているのではないのです。
開発担当者が、「自分が一番良いと思う書き方を選択する」。それだけのことですよ
45137 ◆7BXCxYvfIs :04/01/17 23:59
>>449
ご指摘の件が重要なのです。「プログラムのわかりやすさというのを判断するのはいったい誰なのか」という点です。
私は「開発担当」が判断すべきことだと思っています。
どうもあなたは「多数派」が判断すべきことだと思っている様に見うけられます。あっていますか?
452仕様書無しさん:04/01/18 01:15
>>451
「プログラムが自分(たち)の手を離れた後誰に参照されるかは予想できない。」
「最終的な全体コストを下げるためにも分かりやすいプログラムを書いておくべきだ。」
「gotoを好ましくないと考える人の方が多い。」

「gotoは使うべきではない。」

予想できる反論としてはこんなところか。
453445:04/01/18 01:39
ちがうちがう
S=0; /* 初期:コメント外 */
for(;;){
GET;
if(S==0 && prev==SLASH && c==ASTER) /* コメント外で'/'に続けて'*': */
 S=1; /* コメント中 */
if(S==1 && prev==ASTER && c==SLASH) /* コメント中に'*'に続けて'/': */
 S=0; /* コメント外 */
if(S==0) /* コメント中は表示しない */
putchar(c);
prev=c;
}
って書きゃ済むくらいなのに
goto使って「このようなケースでは私はこれが一番判りやすいと思う」
>>433
ってのがお粗末だって話

どの書き方が一番良いのかを論じているのではないよ
454445:04/01/18 01:44
...ってまぁちょっとバグがありだが許せ
455仕様書無しさん:04/01/18 03:18
goto使いは粘着質で嫌だね。
456449:04/01/18 08:15
>>452
まったくもって、その通り。
457432の続き:04/01/18 12:01
main(argc,argv) int argc; char *argv[]; {
char *pchar, inputed_line[80]; FILE *file; int goto_counter = 0, str_len, MAX = 79, argc_index = 1;
if (argc == argc_index) goto ERROR;
INITIALIZE: file = fopen(argv[argc_index], "r"); if ( !file) goto ERROR;
pchar = inputed_line;
goto LOOP1_EVAL;
LOOP1: pchar = inputed_line; str_len = strlen(inputed_line); str_len -= 4;
goto LOOP2_EVAL;
LOOP2: if ( memcmp( pchar, "goto", 4)) goto NOT_FOUND;
FOUND: pchar = pchar + 3; ++goto_counter; str_len -= 3;
NOT_FOUND: ++pchar; --str_len;
LOOP2_EVAL: if ( str_len > 0) goto LOOP2;
LOOP1_EVAL: if ( fgets( inputed_line, MAX, file)) goto LOOP1;
FINALIZE: fclose( file); printf( "%d goto \'s\n", goto_counter); exit();
ERROR: exit( argc_index);
}
458457の続き:04/01/18 12:03
main(argc,argv) int argc; char *argv[]; {
char *pchar, inputed_line[80]; FILE *file; int goto_counter = 0, str_len, MAX = 79, argc_index = 1;
if (argc == argc_index) goto ERROR;
file = fopen(argv[argc_index], "r"); if ( !file) goto ERROR;
pchar = inputed_line;
while(fgets( inputed_line, MAX, file)){
pchar = inputed_line; str_len = strlen(inputed_line); str_len -= 4;
while( str_len > 0){
if (! memcmp( pchar, "goto", 4)){ pchar = pchar + 3; ++goto_counter; str_len -= 3; }
++pchar; --str_len;
} }
fclose( file); printf( "%d goto \'s\n", goto_counter); exit();
ERROR: exit( argc_index);
}
459仕様書無しさん:04/01/18 14:40
多数派でいっこうにかまわんだろ。いろんな奴がコードいじるんだし。
「わかりやすさ」ってそういうもんだろう?
大昔はフローチャートを直接反映したfortranのgotoみたいなのがわかりやすかった。
ちょっと前までは構造化コードがわかりやすかった。
いまはオブジェクト指向で書くのがわかりやすい。
この先はどんな手法が「わかりやすく」なるかはど−だろーね。

goto使うのがわかりやすい人がいる、というのは認めるけど、そんな些細なことで
個性をださんでもと思うが。
460402:04/01/18 15:46
>>宮坂さん
ネタの宝庫が見つかってよかったですね

>>37
今月のCマガ買って読め。
461仕様書無しさん:04/01/18 18:48
とりあえず>>458のgotoの使い方なら受け入れてもよかろう
46237 ◆7BXCxYvfIs :04/01/18 20:39
>>453
了解しました。「サンプルとして提示するにはテーマが不適切」との御指摘ですね
「あなたがその書き方を選択する」ということもわかりました

>>454 はあ「粘着質」ですか。どこが粘着しているのかが理解できません。

>>456(内容は>>452
認めません。と、結論だけ書いてしまうと話にならないので理由を書きます。
>「プログラムが自分(たち)の手を離れた後誰に参照されるかは予想できない。」
yes
>「最終的な全体コストを下げるためにも分かりやすいプログラムを書いておくべきだ。」
>「gotoを好ましくないと考える人の方が多い。」
>↓
>「gotoは使うべきではない。」
「開発担当がgoto使う人である」&「保守担当が『gotoを好ましくないと考える人』である」という前提で書きます
gotoつかわない場合は、開発者の生産性やモチベーションの低下
gotoつかう場合は、保守時のモチベーションの低下
というリスクが双方に発生します。「後者のリスクが前者のリスクを上回る」という判断をされているわけですか
・・・それはPGが考えることではありません。
品質管理/品質保証/QA/保守などの担当がその様に判断すれば、goto使用禁止規約を設ければ良いだけのことです。
#そんなにgoto使ったプログラムが嫌ならリファクタリングすればいいのに。
#「goto使っているからリファクタリングします」が承認されるならネ
46337 ◆7BXCxYvfIs :04/01/18 20:40
>>459
最後の文に感想をコメントさせてください。
「個性のつもりじゃなくって、昔から普通に使っているだけですよ。
 使用禁止規約もないのに『使うな』という権限は誰にもないはず。
 ましてや匿名掲示板で『使うなと言う』のは嫌がられるだけだと思いますけどね」

ハァ。それにしても「刷り込み」というは根強いものです。
この話題って、COBOLERとそうでない人達の確執と少し似ていますね。COBOLERといってもCOBOLやっている人の
ことではなくて、方法論固執、価値判断固執をする人たちの代名詞なのですが。(COBOLやっている人ゴメンナサイ)
どちらがCOBOLERなのかは御想像にお任せします。
「偏見や嫌悪感という感情が存在して、それによって判断が狂っていないか」を自問自答して戴きたいです。
#簡単に言うと「頭が硬いんじゃないの?」
まあ偏見や嫌悪感の払拭が終了している人や(私のような)もともとない人のレスもちらほらありますけどね。
464仕様書無しさん:04/01/18 21:07
開発者個人のモチベーションが下がってもいい現場はあるんだから、
そーいうとこは「マンドクセェから禁止ね」のほうがよさそう。
465460:04/01/18 21:49
>>37
ねえCマガ読む気あるの?ないの?
もう読んでて都合が悪かったから無視なの?どれ?
46637 ◆7BXCxYvfIs :04/01/18 21:56
>>465
読む気ありますよ。まだ買っていません。
買うだけの時間的余裕があればすぐ買います。
#せっかちなかたですね。
467460:04/01/18 22:34
>>37
そうかすまない。
無反応だったから無視されたかと思った。
読んだら感想を語ってくれるんだよな?
何を書いてくれるか楽しみだ。
468456:04/01/18 23:29
>>462
びっくりするほど視野が狭いね。あきれたよ。
469456:04/01/18 23:36
>>463
>「偏見や嫌悪感という感情が存在して、それによって判断が狂っていないか」を自問自答して戴きたいです。
>#簡単に言うと「頭が硬いんじゃないの?」

どちらかというと、君のほうにその傾向があると思うのだが。
かたくなにある意見を「スレ違いだから持ち出すな」と主張するし、また君の口癖にも
それは現れてる。
470445:04/01/19 00:15
>>462
ちなみにわたしなら(すてーとぱたーんは馴染めないので)関数ポインタの配列をつかうでしょう...
で、どんなサンプルを提示していただけるのでしょうか?
47137 ◆7BXCxYvfIs :04/01/19 00:50
#「否定だけをするレス」にはレスしたくないなあ。
#反論ならレスしたいけど。

>>468
ここはプログラマー板です。現実の仕事が何であろうと「プログラマー」として発言します。
あなたはどのような職種としての発言をしているつもりなんですか?
品質管理やライフサイクルコストの話がしたいならこれも激しくスレ違いです。

>>469
確かに「禁止論議はスレ違い」と言っています。
そしてそれに反対なら反論してくださいとも言っています。
また「使うか使わないかはスレに沿った議論」だとも言っています。
私はあなたが何が主張したいかが良くわかりません。
「禁止」に拘っている様に思えますがその理由もです。

双方のレスに言える事ですが、記述にもう少し具体性を持たせてください。
gotoという具体極まりない特定の文について話をしているのですよ。
・「視野が狭いね」と思うのならどのような視野を持つべきだと思うのかを
・「傾向があると思うのだが」ならどこに(書いてあるように見えますが全然論理に繋がりが在りません)
・「ある意見を」ならどの種の意見か
・「君の口癖」ならどの口癖なのか
名前(番号)を書いてくれるのは有難いのですが、レス内容から意図的に具体性を落としている様に思えます。
だから「否定だけをするレス」だと思わざるを得なくなるのです。
472仕様書無しさん:04/01/19 00:55
'#' の使い方がキモイ
473仕様書無しさん:04/01/19 00:58
'#' の使い方もキモイ
47437 ◆7BXCxYvfIs :04/01/19 01:07
>>470 サンプルなぞ提示しません
475452:04/01/19 01:19
452だけど、>>452は矢印の前後が論理的に全然つながってないって事に気づいた?
全くその通りとか思った人は、その辺を埋めて欲しい。よろしくっ。
476仕様書無しさん:04/01/19 01:31
↓のトコよりも

>「プログラムが自分(たち)の手を離れた後誰に参照されるかは予想できない。」
>「最終的な全体コストを下げるためにも分かりやすいプログラムを書いておくべきだ。」

>「gotoを好ましくないと考える人の方が多い。」
の関連が。。。
477仕様書無しさん:04/01/19 09:33
>>476
将来自分が書いたプログラムが参照されるときは、gotoを好ましくないと考える人たちが
見る可能性が高いから、最終的なコストを下げるためにもわかりやすいプログラムを
書いておくべきだ、ってことでしょ。
478仕様書無しさん:04/01/19 09:55
37が叩かれる理由はただ一点。
状態遷移をともなうコードでgotoを使い、それがすばらしいコードだと自画自賛しているから。
479仕様書無しさん:04/01/19 10:34
37は、これだけ長い間このスレで発言し続けて、そのほとんどが37対その他大勢という対立構造になって
しまうことに関して、どのように自己分析しているのだろうか。
480476:04/01/19 12:32
>>477
というと、gotoが好ましくないと考える人たちは、gotoがわかりにくい、ということ?
& gotoがわかりにくいケースが大多数なの?
481476:04/01/19 12:34
>>480
>>461 とかが大多数なのでは?
482仕様書無しさん:04/01/19 12:34
>>480
知るかヴォケ
483仕様書無しさん:04/01/19 13:07
>>480
>というと、gotoが好ましくないと考える人たちは、gotoがわかりにくい、ということ?
> & gotoがわかりにくいケースが大多数なの?

それは元のコードによるので、完全に筋違いな疑問。
484仕様書無しさん:04/01/19 14:45
>>478
同感です。

複数の状態遷移を並列動作させるとか、
イベントやメッセージで状態を遷移させるとか
そういったものはgotoを使うでは書きづらいと思うのだが。
485仕様書無しさん:04/01/19 16:52
>>479
どちらかと言えば「使うべき時は使うが、使うべき時は殆ど無い」派だけど、
どうせネタスレだし、>>37があまりにアレなので一緒にされたくない。
従って加勢せずに眺めて楽しんでいる。
486仕様書無しさん:04/01/19 20:27
骨の髄までフローチャートなひとがいるスレはここですか?
487仕様書無しさん:04/01/19 20:33
「状態」をカプセル化できない奴はクズ。
他言語に行って途方にくれるなよ。
488仕様書無しさん:04/01/19 20:44
組み込み系がこんなのだと思われると腹が立つ。
489仕様書無しさん:04/01/19 20:50
は、実は37は組み込みをCで書いてて関数ポインタでつまづいただけじゃないのか?
49037 ◆7BXCxYvfIs :04/01/19 23:16
>>460
月間Cマガジン2004年2月号の53〜54頁のgoto論争についての記述を読みましたよ。
筆者の宮坂電人なる人物がいかなる人物か知らないのですか一見解として聞いておきましょう。
「これは筆者独自の意見であって、絶対の正解だと信じ込まないようにしてください。置かれている境遇や
条件が違う場合は違う結論が出てくる可能性があるます」と記述してありますし
反論するのは気がすすみませんね。理由はふたつあります。
@あなたが宮坂電人なら話は違いますが、再反論出来ない人に反論しても議論にならないから意味がない
A大半の人は該当記事を読んでいない
感想は「ああそうですか」ですよ。もっと感想が読みたいですか。ならば該当記事をすべて写してください。
法律違反になる可能性はあると思いますが。それとも宮坂電人氏がこのスレにいるのですか。
491仕様書無しさん:04/01/19 23:22
>>490
なぜこのスレに該当記事をすべて写さなければ感想がいえないのか理解不能。
それから(1)は君の認識違い。十分議論になると思うが。
492仕様書無しさん:04/01/19 23:28
なんつーか、今までとちょっと違ったキレ方だよな。
俺もうこいつにかかわるのよすわ。
493仕様書無しさん:04/01/19 23:32
電波を受信したようです。
494仕様書無しさん:04/01/19 23:35
>>490
何故、女のプログラマーは少ないのか?

何故だと思うよ>女PG
49537 ◆7BXCxYvfIs :04/01/20 00:11
>>478
「自画自賛」なぞしていません。「私はこの書き方を選択する」と言っているだけです

>>479
私は「ただ自分の楽しみのためだけに」ここにいる。しかし、飽きてきた。

>>484
「書きづらいと思う」という見解は否定しませんよ。同一の見解が多数派であるという事もね。
多数派がいれば必然的に少数派も存在するものです

>>485
私も同じです。
ところで繰り返しに飽きてきたのでバトンタッチしたいのですが駄目ですか?
そして「アレ」ってなんですか?

>>488
私は組込み系ではありません

>>491
>なぜこのスレに該当記事をすべて写さなければ感想がいえないのか
は、「大半の人は該当記事を読んでいない」からです
感想だけ書けば「知らない人は全く理解出来ないレス」になってしまいます。
該当記事があればそうはならないからですよ
496484:04/01/20 02:48
>>495
> 「書きづらいと思う」という見解は否定しませんよ。同一の見解が多数派であるという事もね。
> 多数派がいれば必然的に少数派も存在するものです

どういうプログラムになるかちゃんと考えて書いている?
それとも単に「思う」に反応しただけ?
497仕様書無しさん:04/01/20 02:49
ここまでの議論の中間結果を2・30行に要約してくれ↓
498仕様書無しさん:04/01/20 03:06
gotoを禁止にするかどうかは主観の問題。
499仕様書無しさん:04/01/20 06:20
>>495
>>なぜこのスレに該当記事をすべて写さなければ感想がいえないのか
>は、「大半の人は該当記事を読んでいない」からです
>感想だけ書けば「知らない人は全く理解出来ないレス」になってしまいます。

そうならないように書けないということだな。つまり君の能力不足だ。
それをさも他者のせいであるかのごとく書くのはやめような。
500460:04/01/20 06:30
>>490(37)
該当部分全ての引用なぞ必要ないと思いますよ。
あなたは「大半の人は該当記事を読んでいない」事を理由に
都合の悪い事を書きたくないだけなのでしょう。

必要な引用は結論だけで十分です。
起承転結と起結承の中間のような文章なので出だしと終わりから引用します。

// 今どきgotoがよいか悪いかを論じるのは時間の無駄であるだけでなく,
// もっと論争すべき大事なテーマがあるので労力のムダですらあります。

// 誰もが上手にgotoを使いこなせる技量の持ち主であるとは限らず,
// またgotoを使うことを揶揄する人たちとの摩擦もあるので,
// 現代においてはgotoを使うデメリットをたくさん指摘できても,
// メリットはほとんど考えられないでしょう

あなたは都合の悪い意見を受け流しているだけでしょう。
宮坂氏の見解によればgotoはデメリットはたくさんあるが、
メリットはほとんどないと言っています。
そしてそのあるのかないのかわからないメリットの為に
あなたのように「大昔にカタのついた話」を蒸し返すのは
無意味を超えて害悪だと言っているのですよ!
501仕様書無しさん:04/01/20 07:09
goto の使えない言語を少し使えば、goto使わなくてもなんとかなるのはその通りと思うが、

gotoある言語で、わざわざ使わない理由としてはそれだけじゃ「十分」じゃないだろ。
それを禁止するなら3項演算子を先に禁止した方がいいと思うぞ。


誰もが上手に3項演算子を使いこなせる技量を持つとは限らない んだしな
502仕様書無しさん:04/01/20 07:13
それから、if( xx ) の xx の場所で && || を使う事も禁止した方がいいぞ。

こういう所で使ってる場合の間違い率はとても高い。 初心者にはgoto より余程扱いが難しい。
503仕様書無しさん:04/01/20 09:34
>>501
君、もうちょっと論理的思考能力を身につける必要性がありそうだぞ。

>>502
お話になりません。
504476:04/01/20 09:42
505仕様書無しさん:04/01/20 09:45
>>490
>筆者の宮坂電人なる人物がいかなる人物か知らないのですか一見解として聞いておきましょう。

ヘーヘーヘー
506仕様書無しさん:04/01/20 09:49
>>497
思考停止してしまった37を改心させようと次々に人が現れるが、いずれも返り討ちにあう。
一方37はますます電波度を高めている。

ア、オワッチャッタ
507仕様書無しさん:04/01/20 09:51
>// 誰もが上手にgotoを使いこなせる技量の持ち主であるとは限らず,
>// またgotoを使うことを揶揄する人たちとの摩擦もあるので,

まぁ、どっちにしろプロジェクトマネージャが適切に判断すれば良いだけだね。
適切に判断できる自身が無いならとりあえずそのプロジェクトでは禁止しとけ、と。
508仕様書無しさん:04/01/20 10:02
17.10:gotoは悪で絶対に使ってはならないという人がいる。ちょっとこれは
行き過ぎではないか。

A:プログラミングの作法は文章作法と同じで、ちょっとした技能であっ
てガチガチの規則で明文化することはできない。ただし書き方につい
ての議論はもっぱらそういう規則を中心に回るようである。

goto文については、gotoを好き勝手に使うとすぐにスパゲッティのよ
うにもつれた保守不能なコードになると昔からいわれている。しかし、
石頭にgoto文を使うことを禁止してもすぐに美しいプログラミングに
結び付くとは限らない。体系立てて考えないプログラマならgoto文を
まったく使わなくても同じように複雑怪奇にもつれたコードを書いて
しまう(たぶん代わりに妙に入れ子になったループやブール値の制御
変数を使って)。

プログラムの書き方に関するたいていの意見や"規則"は規則としてよ
りは指針として考えたほうがうまくいく。プログラマが、この指針
で何を成し遂げたいのか理解すればもっとうまくいく。ある種の構文
を無闇に敬遠したり、理解することなく規則に従うことは、規則を使
えば避けられることになっているのと同じくらい多くの問題を引き起
こす可能性がある。

さらに、プログラムの書き方に関する見解は所詮見解にすぎない。"
書き方論争(style wars)"に引きずり込まれても、たいてい何も産み
出さない。一部の論点(質問9.2, 5.3, 5.9, 10.7で挙げたような)に
ついてはお互い相手の意見を認めたり、意見が違うことを認めたり、
議論を打ち切ったりすることはないように見える。
509仕様書無しさん:04/01/20 10:05
>>507
禁止論はスレ違い。
510仕様書無しさん:04/01/20 10:13
>>497
37は、自分が書いたコードが糞コードだと言われて、その傷ついた自尊心を癒すべく
書き込みを続けてるだけ。しかも書き込みを続けていくうちに、読解力も、論理的思考能力も、
文章能力もことごとく欠けていることがばれてしまい、それを糊塗しようとさらにずるずると
書き込みを続けてるだけ。
511仕様書無しさん:04/01/20 10:17
ESQLのコードだとよくgoto使うよね。
512仕様書無しさん:04/01/20 10:31
もげ
513仕様書無しさん:04/01/20 10:48
goto 禁止するくらいなら、goto のないmyC言語を作ればいいだろうに、

それも出来ないクセに運用で逃げようなんてのは、ヘタレだと思うね。
まあ、ヘタレ認定されてもいいならどうぞ。

おれは禁止されたって困らないけどね!
514仕様書無しさん:04/01/20 11:09
また一人電波が迷い込んだ模様。
515仕様書無しさん:04/01/20 11:09
goto使わないとCでコーティングできない人間を破棄してもらいたいと
思うのは私だけですか?
使って悪いとまでは言わないが、的確に使ってもらわないと、
可読性が悪くてたまらん。
516仕様書無しさん:04/01/20 11:12
いやifyはswitchを使わない奴の方が厄介だろ思うが
517仕様書無しさん:04/01/20 11:15
>>515
37のように、糞コードなのに、自分は「適確に使えてる」と思い込む奴がいる限り、
「適確に使ってくれ」というのは無駄っぽいぞ。
で、「何が適確か」というのを議論し始めると「それは主観による」という結論に引きずり込まれる罠。
518仕様書無しさん:04/01/20 11:16
いいかげんC++に来いよ。
519仕様書無しさん:04/01/20 11:25
>>495
>>>478
>「自画自賛」なぞしていません。「私はこの書き方を選択する」と言っているだけです

ではなぜその書き方を選択するのですか?
520仕様書無しさん:04/01/20 11:26
C++こそ、現場ごとに あれやコレや ヤカマシイ。
521仕様書無しさん:04/01/20 11:27
37ってFORTRANを何年もやってきて、最近Cを始めたとかなのかな。
それとも単に初心者なのだろうか。
522仕様書無しさん:04/01/20 11:28
>>519
そりゃ好みの問題だろ

俺だってgoto式状態遷移スタイルならgoto使う。それはgoto式だからさ。
523仕様書無しさん:04/01/20 11:28
>>520
なんだろう、この馬鹿は。
524仕様書無しさん:04/01/20 11:29
>>521
キミは、C の仕事やってるの? C の仕事なんて組み込みかLinuxしかないだろうと思うが? どっちやってるの?
525仕様書無しさん:04/01/20 11:29
>>522
もっと普通に説明してもらえませんか?
526仕様書無しさん:04/01/20 11:31
>>525
嫌だね。

スタイルは自分で身に付けるもの。 大事な財産さ。 盗りたいなら、それだけの覚悟でおいで。
527仕様書無しさん:04/01/20 11:31
>>524
Cの仕事もしてます。組み込みではありません。
528仕様書無しさん:04/01/20 11:32
アフォがまた一人光臨した模様。
529仕様書無しさん:04/01/20 11:32
>>527
ごめん、他にというと ゲームかな?
530仕様書無しさん:04/01/20 11:33
>>522
>>>519
>そりゃ好みの問題だろ

このスレ100回読んでから出直しな。
531仕様書無しさん:04/01/20 11:35
>>529
ゲームじゃないし、そもそも質問の意図がわかりません。
532仕様書無しさん:04/01/20 11:37
おおぅ?37のゲロコードを擁護する奴の登場か?
533仕様書無しさん:04/01/20 11:38
>>531
Cの仕事を探すのが今では難しいからさ
パソコンならC++ で extern "C" だろうしね。

Cで書くならCのスタイルで書く。 JAVA/C++とスタイルを混同しちゃいけないよ。
534仕様書無しさん:04/01/20 11:39
>>533
言っている事がさっぱりわかりませんが。
誰かと混同してるんじゃないですか?
535仕様書無しさん:04/01/20 11:42
まぁJavaをJAVAと書く奴にろくな奴はいないわな。
536仕様書無しさん:04/01/20 11:43
>>533
>Cの仕事を探すのが今では難しいからさ

君が知らないだけという可能性は、考えたことあるのか?
537仕様書無しさん:04/01/20 11:45
>>536
そういうなら、組み込み、LINUX,ゲーム以外の C の仕事を紹介してくれたまえよ。
538仕様書無しさん:04/01/20 11:50
539仕様書無しさん:04/01/20 11:52
>>537
Linuxですが。それがなにか?
540仕様書無しさん:04/01/20 11:52
あ、俺への質問じゃなかったのか。
541仕様書無しさん:04/01/20 11:54
なんだかこいつ37より程度が低いね(プゲラッチョ
542仕様書無しさん:04/01/20 11:55
>>522
その「goto式状態遷移スタイル」が可読性、保守性に欠けてると非難されてるわけだが、
その点に関してはどう考えるのだ?
543仕様書無しさん:04/01/20 11:59
>>537
WindowsでもCの仕事あるし。
つか、それがいったいなんだというのだ?
544仕様書無しさん:04/01/20 12:00
ふもー
545仕様書無しさん:04/01/20 13:05
>>539
Linuxなら goto out; とか普通に使わない?

>>542
俺の書いたコードを一番安価にメインテナンス出来るのは俺だから無問題。
俺の書いたコードを他人がメンテナンス出来ないのはそもそもgotoのせいじゃない。

>>543
そりゃ俺だって、10年前のWin3.1のソフトをその頃無くなったボードの代わりにコレ使いたいからってな仕事はあるよ。

組込系はどこも予算ないから、32bitに移植なんて話は出来ないしね。
546仕様書無しさん:04/01/20 14:13
>>501-502 でわかるとおり、
言語要素の1部を使用禁止にしろという馬鹿の脳味噌は春雨と豆乳でできている。
547仕様書無しさん:04/01/20 14:26
>>524
“goto 使うと読めなくなる”莫迦がこのスレにも沢山居るみたいだから
“C しか判らないから Win や Mac でも C を使う”奴が居てもおかしくはないでしょう。
548仕様書無しさん:04/01/20 14:56
バカとアホが戯言言ってるスレはここでつね。
Cマガでネタされてやんの(´,_ゝ`)プッ
549仕様書無しさん:04/01/20 15:59
>>548
(´-`).。oO(「ネタされて」?)
550仕様書無しさん:04/01/20 17:13
#define goto if(0) goto
551仕様書無しさん:04/01/20 17:56
>>550
ダメ でしょソレハ
#define goto if(rand() % 100) goto
553仕様書無しさん:04/01/20 18:19
また話を振り出しに戻す馬鹿が登場かよ。
こうやってgoto議論は果てしなく続いていくのさ。
554仕様書無しさん:04/01/20 18:21
ん、Cマガの記事ってこのスレのことネタにしてんの?
555仕様書無しさん:04/01/20 18:23
全部は読んでないしgotoネタがあったかは知らないけど
不毛な宗教論争ネタを並べて○側と×側双方の言い分を主張してた>Cマガ特集
まぁライターが2chでネタ探したとしてもおかしくはないな。
556仕様書無しさん:04/01/20 18:29
何十年も前から議論されてるのにねぇ・・・
557仕様書無しさん:04/01/20 18:38
>>545
>Linuxなら goto out; とか普通に使わない?

使わないよ。
558仕様書無しさん:04/01/20 18:39
やめてくれよ。
組み込み系には馬鹿が多いと思われるじゃないか。
559仕様書無しさん:04/01/20 19:17
>>557
使うのはカーネルくらいだからキミには関係ないんだろね
560仕様書無しさん:04/01/20 19:26
http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-images/linux/kernel/fork.c

goto repeat; ・・・・・ do 〜 while で書かないのは男だねえ
561仕様書無しさん:04/01/20 19:59
>>559
最近カーネルのソース読み始めた知ったか君ですか?
562仕様書無しさん:04/01/20 20:06
なんだよ、outって?
563仕様書無しさん:04/01/20 20:17
finallyブロックのことだろ
564仕様書無しさん:04/01/20 20:18
>>563
なんでそれがoutなんだ?
565仕様書無しさん:04/01/20 20:20
566仕様書無しさん:04/01/20 20:28
>>565
いや、それは想像できるが、どうして"Linuxならgoto out;"になるのかという疑問なのだが。
567仕様書無しさん:04/01/20 20:31
別にin/outという単語を選択したところで何の不思議もないだろ。
568仕様書無しさん:04/01/20 20:34
>>566
実際に沢山使ってるからだろ。たぶんソコを書いた奴がそういうクセを持ってたんじゃないの?
569仕様書無しさん:04/01/20 20:34
別に不思議は無いが、それは俺の疑問の答えじゃないな。
570仕様書無しさん:04/01/20 20:37
>>567-568
根本的に俺の疑問を理解できていないようだから、答えてくれなくて結構。
571仕様書無しさん:04/01/20 20:38
日本語勉強して出直しな。
572仕様書無しさん:04/01/20 20:39
>>571
お前がな。
573仕様書無しさん:04/01/20 20:47
Linuxカーネルコード至上主義者降臨中。
574仕様書無しさん:04/01/20 20:52
Windowsなら普通goto Exit;だな。
575仕様書無しさん:04/01/20 21:07
過去スレ読んでたら37がこんなこと言ってたよ。

>私は構造化言語が一般に使用されていない時代からのoldプログラマです。fortran66が母国語です。
>だからgoto使用には抵抗がありません。
>ですが構造化構文をサポートするfortran77となっても、あいも変わらずgotoを多用/誤用する人間も多く、
>「いつか必ずgotoレスが主流になる時代が来るに違いない」と考えていました。これはつい昨日の事の様です。

COBOL出身にも数多く存在するが、Fortran出身にも困ったチャンがいるんだね。
576仕様書無しさん:04/01/20 21:09
40超えた化石プログラマ?
577仕様書無しさん:04/01/20 21:13
なんだ、ジジィの戯言だったのか。
57837 ◆7BXCxYvfIs :04/01/20 23:48
ああこんなにたくさんレスが。#やはり名指しされたとて選ばないと身が持たない

>>460
>あなたは都合の悪い意見を受け流しているだけでしょう。
いいえ。なぜそう思われるかが理解できませんね。
今までの私のレスにそのような行動を示唆するものがあったのなら具体的に指摘して戴きたいですね
宮坂氏は三種の「goto悪くない派」の意見を挙げてそれぞれに反論しています。
そしてgotoのデメリットと思われるもの二種を挙げています。せっかく写していただいたのででコピペします。
せっかくレスしていただいたので、それぞれに感想を付加します。
@誰もが上手にgotoを使いこなせる技量の持ち主であるとは限らず,
 事実です。この指摘はこのレスでの言葉で言うと「goto誤用」のことです。
 goto誤用について、私はコードレビューを行うことによって防止できると一貫して主張しています。
 規約というものが技量が最下位レベルの人間に合わせて作成されるという現状から考えて、
 goto禁止を規約とする場合があるのはこの見解を背景とするものでしょう。
 だからといって、「一概にgotoを使うべきでない」とすることは無理がありますね。この見解から導出される私の感想は
 「開発組織がその構成員すべてに上手にgotoを使いこなせる技量を持たせるべく教育すべきだ」ですよ。つまらない感想でしょ。
Aまたgotoを使うことを揶揄する人たちとの摩擦もあるので,
 これは「gotoを使わない理由」にはなりません
(続きありますよ)
57937 ◆7BXCxYvfIs :04/01/20 23:49
>宮坂氏の見解によればgotoはデメリットはたくさんあるが、
>メリットはほとんどないと言っています。
>そしてそのあるのかないのかわからないメリットの為に
宮坂氏の見解を正しいものと思いませんが、貴方は正しいものとして話していますね。
少なくとも「使わせないデメリット」は存在しますよ。
それは「開発担当者がgotoを使うことが正しいと判断する場合があるから」です。論理の設計は開発担当者の職掌です。

>あなたのように「大昔にカタのついた話」を蒸し返すのは
>無意味を超えて害悪だと言っているのですよ!
いつ誰がカタをつけたか教えていただけますか。私は知らないのです。
もう一つ教えて下さい。このスレは何を論じるスレなんですか

最後にひとつ。宮坂氏の記事には事実誤認があります。ダイクストラは確かに「gotoは有害を引き起こす」という論文を書きました。しかし、この論文の題名は単なるキャッチコピーに過ぎません。
内容は「構造化プログラミングの提唱」あって「gotoは無くすべきだ」ではないのです。
58037 ◆7BXCxYvfIs :04/01/20 23:50
>>505
ワーニエ、ダイクストラ、クヌース、ミルズ、マイヤーズ、コンスタンチン、プローガ、ホア等なら知っていますが日本人は
全然知りません。教えて下さい。カリスマ?

>>506
えっ。そうだったの?。私は思考停止していたのかあ。gotoなんかの事より考えることは沢山あるしなあ。
でも本当に思考停止しているなら改心なぞするわけないと思うけど。ならば現れる人達は、無駄になる可能性が高いのを知っていて
私を改心させるべく書き込んでくれている慈悲深い人達なわけ?。拝んでイイですか?
電波って>>490の >それとも宮坂電人氏がこのスレにいるのですか
の記述のこと?。それは>>460の「宮坂さん・・・」が本当かも知れないと思ったから

>>519 開発担当者(私)が一番わかりやすいと思うからです。

>>559 ええ。一番寿命の長い論争です。

>>557
よく見つけていただきました。ありがとう。まあ「困ったチャン」かもしれないですね。少数派であることは確かです。
いい機会なので構造化言語を使い始めてからの実務における私のgoto使用回数を書いておきましょう。一回です。
#以前一行/二万行ともレスしました。考えて見たら二万というのは該当システムにおける私の担当部分の行数でした
#そういえばそれ以降は実務では使っていないな・・・(あれはもう15年以上前だ。cではなかったが)

>>577 ジジイかもシレンが現役
58137 ◆7BXCxYvfIs :04/01/20 23:54
>>580
失礼しました。
s/557/575/
です。
582仕様書無しさん:04/01/21 00:50
それだけ経歴があってなおここで遊びたいのなら、せめてコード例くらいまともなものに
していただかないと、後進のためになりませんよ。

# 状態遷移ごときで業務プログラマを馬鹿にするような発言をなさるとは。
# あ、だから2chにいるのか(あはは)
583仕様書無しさん:04/01/21 01:29
だいたい、ここでgoto論争を始めようという37の性根が腐っている。
ネタ板の(wここでならたいした論客もこねーだろーという見え見えの算段。
しかし出すもんは状態遷移(w。

無駄に歳食ったなぁ。ほんとに。
58437 ◆7BXCxYvfIs :04/01/21 01:53
>>582
うーん。後進のことには興味がないですねえ。現実世界の後進もgotoについては興味がないようですし。
私がどう思うにしろ「我以外皆師」だから反面教師だと思ってくれれば良いのではないですか。
goto使用については支持/不支持の対立があっても、止揚する事がない話題です。(洒落のつもりはないのですが)
そして他の論争の様に、技術的ブレイクスルーによって論争が終わるということがありません。
どこまでいっても不毛で、かつ雑談(一部感情論)に過ぎません。そういうスレで「まとも」といわれてもねえ。
このスレに何かが得られる事を期待して、来る人がいるのでしょうか。考える契機は散らばっている様にも思えますけど
ですが、あのコードは大真面目ですよ。私はまともだと思って書いています。
今は、少なくともあなたにとって、この「あのコードに対する認識の違い」が話題であるのだと思っていますが
#現状認識について誤りがあると、なぜ2chで暇潰しすることになるのかが全然わかりません

もとはといえば自分からばらしたんだけど、正体がばれてしまったので、少し沈黙することにします。
飽きていたから、いいタイミングです。
585仕様書無しさん:04/01/21 02:15
>>37
こわがりすぎです:-)
586仕様書無しさん:04/01/21 02:23
>#現状認識について誤りがあると、なぜ2chで暇潰しすることになるのかが全然わかりません

# そう考えてしまうあなたには解りませんよ。そこで「暇潰し」と書いてしまうあなたには。おそらくずっとね;)
587仕様書無しさん:04/01/21 02:39
cでgotoを使わないケース:
・ループを作る
 LOOP: if(〜) goto EXIT_LOOP;
  〜
 goto LOOP;
 EXIT_LOOP:
 →素直に制御文使え

・処理を飛び越す
 if(〜) goto JOB2;
 〜
 JOB1:
  〜
  goto END_JOB;
 JOB2:
  〜
 END_JOB:
 →ブロック構造にしる

・状態遷移(w
588仕様書無しさん:04/01/21 07:29
>>584
>どこまでいっても不毛で、かつ雑談(一部感情論)に過ぎません。
だから思考停止してるって言われるんだよ。
589仕様書無しさん:04/01/21 07:50
>>587
>>560のコード でgotoを使ってる個所を書き換えてみてごらんよ。
http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-images/linux/kernel/fork.c
// goto repeat; を書き換えても、読みやすいさもメインテナンス上も上がりますか?
static int get_pid(unsigned long flags)
{
  struct task_struct *p;
  if (flags & CLONE_PID)
    return current->pid;
repeat:
  if ((++last_pid) & 0xffff8000)
    last_pid=1;
  for_each_task (p) {
    if (p->pid == last_pid ||
     p->pgrp == last_pid ||
     p->session == last_pid)
      goto repeat;
  }
  return last_pid;
}

590仕様書無しさん:04/01/21 07:55
for_each_task(p) {}などというキモチワルイ書き方をしている時点で糞コード。
591仕様書無しさん:04/01/21 08:07
他人のスタイルを糞々いう奴にロクな奴はいないと言われてない?

他人のスタイルを素直に受け取って投げ返すくらいの度量が欲しいねえ
592仕様書無しさん:04/01/21 08:14
キャッチボールにて 投げられた変化球を

A君:バカヤロ どこ投げてやがんだ。(ボロ) クソボールなんぞ受けてられるか!

B君:お!スルドイねえ。(キャッチ)これでどうだ!(同じくらいの変化球を投げ返す)
593仕様書無しさん:04/01/21 08:31
>>589
書き換え不能。
つか、このコードがすばらしいとでも思ってたりする?
594仕様書無しさん:04/01/21 08:51
>>593
なんで書き換え不能?
だからgoto不要派は 結局gotoが判らないヘタレだって言われるんだよ。

単に do 〜 while で書き換えられるでしょ

static int get_pid(unsigned long flags)
{
  struct task_struct *p;
  if (flags & CLONE_PID)  return current->pid;
do{
  if ((++last_pid) & 0xffff8000)  last_pid=1;
  for_each_task (p) ;
}while(  ( p->pid  == last_pid )
     || ( p->pgrp == last_pid )
     || ( p->session == last_pid) ) ;
 return last_pid;
}

ただ、書き換えによって for_each_task の面白いスタイルを壊してしまうのは残念だけどね。
595仕様書無しさん:04/01/21 16:00
>>594
人のことを云々する前に、自分のコードをよく見ましょう。

>for_each_task (p) ;

意味判って書いてますか?
596仕様書無しさん:04/01/21 17:30
>これは、include/linux/sched.hで定義されるfor_each_task()マクロによって実現されています。
597仕様書無しさん:04/01/21 17:36
普通にフラグを使って書くとこんな感じかな。
使われていないPIDを求める関数ですかな?

static int get_pid(unsigned long flags)
{
  int found;
  struct task_struct *p;
  if (flags & CLONE_PID)
    return current->pid;
  do {
    if ((++last_pid) & 0xffff8000)
      last_pid=1;
    found = 0;
    for_each_task (p) {
      if (p->pid == last_pid ||
       p->pgrp == last_pid ||
       p->session == last_pid) {
        found = 1;
        break;
      }
    }
  } while(found);
  return last_pid;
}
598仕様書無しさん:04/01/21 19:32
static inline int copy_mm(unsigned long clone_flags, struct task_struct * tsk)
{
 if (!(clone_flags & CLONE_VM)) {
 :
  if (new_page_tables(tsk)) {
   tsk->mm = NULL;
   exit_mmap(mm);
   goto free_mm;
  }
  if (dup_mmap(mm)) {
   tsk->mm = NULL;
   exit_mmap(mm);
   free_page_tables(mm);
free_mm:
   kfree(mm);
   return -ENOMEM;
  }
  return 0;
 }
 :
}
 ↓
599仕様書無しさん:04/01/21 19:32
 if (!(clone_flags & CLONE_VM)) {
  int done;
 :
  done=(new_page_tables(tsk)==0)?1:0;
  if(done && dup_mmap(mm)==0) return 0;
free_mm:
  tsk->mm = NULL;
  exit_mmap(mm);
  if(done) free_page_tables(mm);
  kfree(mm);
  return -ENOMEM;
 }
600仕様書無しさん:04/01/21 22:30
>>589はまだ許せるが、>>598のgotoは最悪だな…
601仕様書無しさん:04/01/21 22:47
static inline int copy_mm(unsigned long clone_flags, struct task_struct * tsk)
{
 if (!(clone_flags & CLONE_VM)) {
 :
  if (new_page_tables(tsk)) {
   tsk->mm = NULL;
   exit_mmap(mm);
  } else if (dup_mmap(mm)) {
   tsk->mm = NULL;
   exit_mmap(mm);
   free_page_tables(mm);
  }
   kfree(mm);
   return -ENOMEM;
  }
  return 0;
 }

違う?
602仕様書無しさん:04/01/22 01:40
ちがうだおがヴぉけ
603仕様書無しさん:04/01/22 10:42
普通にフラグを使って書くとこんな感じ。
||の(暗黙の)特性を使ってたりして、ちょっと嫌な感じかもね!

static inline int copy_mm(unsigned long clone_flags, struct task_struct * tsk)
{
 int dup_ng = 0;
 if (!(clone_flags & CLONE_VM)) {
 :
  if (new_page_tables(tsk) || (dup_ng = dup_mmap(mm)) != 0) {
   tsk->mm = NULL;
   exit_mmap(mm);
   if (dup_ng)
   free_page_tables(mm);
   kfree(mm);
   return -ENOMEM;
  }
  return 0;
 }
 :
}
604仕様書無しさん:04/01/22 12:18
>>603
概ね正しいが、
>||の(暗黙の)特性を使ってたりして、ちょっと嫌な感じかもね!
この認識は誤り。
605仕様書無しさん:04/01/22 16:41
具体的に言うと?
606仕様書無しさん:04/01/22 21:53
"暗黙の"
607仕様書無しさん:04/01/22 22:27
||は論理式の論理和と違って・・・云々
という意味での「暗黙」ね。だから括弧の中に書いたんだけど。

こういうやつとか式の中で代入してたりすると、文句言う奴もけっこういたりする。
「分かりにくい」からってw
(そういう意味で嫌な感じ「かも」だ。人によってはそう感じるかも、ってこと。)

まぁ、Cとか類するプログラミング言語にどっぷり使ってると||の動作が
所謂「論理和」といわれたところから想像される機能とは少し違うってのは
気づきにくいかもしれないけどね。
608仕様書無しさん:04/01/23 03:27
>>603だと、dup_ngが何者だったか覚えてないといけないので
>>598のほうが理解はしやすいんだが。
しかし、ブロックの中に入るgotoは生理的に受け付けない。

何かよい書き方はないものか、うーん。
609仕様書無しさん:04/01/23 07:59
>>598
  if (new_page_tables(tsk)) {
   tsk->mm = NULL;
   exit_mmap(mm);
   kfree(mm);
   return -ENOMEM;
  }
  if (dup_mmap(mm)) {
   tsk->mm = NULL;
   exit_mmap(mm);
   free_page_tables(mm);
   kfree(mm);
   return -ENOMEM;
  }
  return 0;
610仕様書無しさん:04/01/23 08:02
まだやってんのかこのスレ

アメリカ様が勝つんだよ。少数派はテロでもやってろ
611仕様書無しさん:04/01/23 10:27
>>599 は無視ですか?
612仕様書無しさん:04/01/23 21:16
>>589
ヒントだよ

static int get_pid(unsigned long flags)
{
  struct task_struct *p;
  if (flags & CLONE_PID)
    return current->pid;
while(0==0){
  if ((++last_pid) & 0xffff8000)
    last_pid=1;
  for_each_task (p) {
    if (p->pid == last_pid ||
     p->pgrp == last_pid ||
     p->session == last_pid)
      {}
else{
      return last_pid;
    }
  }
}
}


613仕様書無しさん:04/01/23 22:22
0==0ってのも流儀なのか?
614仕様書無しさん:04/01/23 22:25
GOTOは使うな!

TOTOも使うな!

LINUXも使うな!

INAXを使え!

直ちゃ〜ん
615仕様書無しさん:04/01/24 12:47
>>614
あなたの教えに従ったら腎臓をやられました。
賠償請求するので首洗って待っとけ。
616仕様書無しさん:04/01/24 17:01
>>607
なんか君も君の周りの人間もよく理解していないような気がする…
(なんだ「論理式の論理和と違って」ってのは)

「論理積・論理和が短絡評価される」のも
「代入も演算子であり、右辺値を戻す」のも
C の基本中の基本で、態々そう設計されている。
それが判り難いというのは、C を理解していないことの言い訳。
617仕様書無しさん:04/01/24 17:39
まぁ、オレもそう思うけどな>基本中の基本
そういうことを言う奴もいるって話だよ。

出来るからって無制限にやってもいいかとか言う話。
(gotoにつながったw)
618仕様書無しさん:04/01/24 20:01
条件式の中で代入するのはわかり辛いのは確かだろ。
なぜならやりたい事(intention)が二つ以上入っているわけだから。
619仕様書無しさん:04/01/24 22:26
ふーん、分かり辛いんだ。。。
ぢゃ、EOFになったらループ終了するような文字入力、ってもしかして
for(;;){
 文字入力
 if(EOF) break;
  :
}
とかてしてるの?
620仕様書無しさん:04/01/24 23:16
>>619
ハイハイ、君もういいよ。イラネ
621618:04/01/24 23:52
>>619
あなた中学生レベルの英単語の意味もよくわかってないでしょう?
bool endOfFile = false;
do
{
 文字入力
} while(!endOfFile)
622仕様書無しさん:04/01/25 00:02
いや、そーゆーことではなくて。。。

>条件式の中で代入するのはわかり辛い
って、>>621なコードを書いてるのではっきりしました(w
623617:04/01/25 00:55
こんなこと↓言われる人も居るらしいですよ。この後かなり喧喧囂囂なレスが続いてるw

http://pc.2ch.net/test/read.cgi/prog/1050835338/540-
540 名前:仕様書無しさん[sage] 投稿日:03/10/26 22:23
「ほかの香具師が理解できないようなコーディングはやめるべきだ。」
なんて、もっともらしい理由で注意を受けたんだが、

char *to;
char const *from;

...

while( *to++ = *from++ & 0x7f );  // これが気にいらんらしい・・・


なんでやねん。
624仕様書無しさん:04/01/25 01:12
誰だよ、そんなアホなコード書く奴は
625621風:04/01/25 01:14
do{
*to = *from & 0x7f;
++from;
++to;
}while(*(to-1));

。。。うーん(w
626仕様書無しさん:04/01/25 01:19
>>623
ああ懐かしいコード。私もそうだったけど、確かにすぐにわかる人があまりいなかったな。
627仕様書無しさん:04/01/25 01:30
0x80が出た時点で変換終わっちゃうじゃん!という人のための修正コード
while (*from? *to++ = *from++ & 0x7f, 1: 0);
628仕様書無しさん:04/01/25 01:33
3項演算子もカンマ演算子も後置炭鉱演算子の挙動も演算子の優先順位も
全て基本中の基本ですね!
629仕様書無しさん:04/01/25 09:27
>>623

せめて括弧をつけてほしい
*to++ = ( *from++ & 0x7f )

でなくて 問題は
char const *from;
630仕様書無しさん:04/01/25 09:42
時代遅れがタムロするスレはここですか?
631仕様書無しさん:04/01/25 10:48
時代遅れ?
まあありがたいことだ。 そんなわけで10年前の自分のソースを改変する仕事がやってくるわけか。
632仕様書無しさん:04/01/25 10:57
俺10年以上前からプログラム組んでるけど
10年前にはすでにこの話題でもめてたな

まさか10年前と同じ人が未だに粘着してたりして…
633仕様書無しさん:04/01/25 11:11
>>632
実はCが出来た時から…

>>625
やっぱり英単語の意味わかってないでしょう?
私にはこれとか直感的に読めないよ < while(*(to-1));
634仕様書無しさん:04/01/25 11:39
俺、20年前からプログラム関係の仕事してたけど
その頃はそんな話題でもめてなかったな。

みんなアセンブラ上がりだからなあ
635仕様書無しさん:04/01/25 11:42
戻り値は

const char* function
char* function

const char*と、char*どちらがいいのでしょう?
636仕様書無しさん:04/01/25 13:38
一見分かりにくい「式」と goto の使用による「非構造」とは
似ているようだけど全く意味合いが違うと思うけどな。

基本的に漏れは、いわゆるトリッキーな演算子の使用法については
処理系によって動作が「定義」されているのであれば全然 OK だと思うが、
goto はやっぱりまずいと思う。

いわゆる複雑な問題に対して一般的にとられる手法は「問題を分割せよ」だが、
その手法は複雑な「式」に対しては適用できるが、goto の使用による「非構造」な
ロジックの塊には何の意味も持たない。

処理系によって「解釈された式」に「決定不能」となる要素が
絡むことが無い以上(しかも言語としてその動作が「定義」されている以上)、
それらを制限するのは無駄且つ有害なことだと思うが、どうよ。

(あと一応書いておくが、脊髄反射で反論しようとする奴は
せめて「決定不能」という言葉の意味を理解してからやってくれよな、
たのむから。。。)
637仕様書無しさん:04/01/25 15:05
んじゃ、脊髄反射しとく。

処理系によって「解釈されたプログラム」に「決定不能」となる要素が
絡むことが無い以上(しかも言語としてその動作が「定義」されている以上)、
それらを制限するのは無駄且つ有害なことだと思うが、どうよ。
638仕様書無しさん:04/01/25 15:27
http://www.acm.org/classics/oct95/
構造化プログラミングの構造と、goto 撲滅は 同じ人が言ったというだけで
あんまり関係ない話のように思うけどなあ

アセンブラレベルでは CALL は PUSH + GOTO だし RET はPOP+計算GOTOだし
639仕様書無しさん:04/01/25 15:43
>>636
頼むから「決定不能」なんていう俺用語を使わなくてすむように、勉強してくれよ。
君が言いたいことにはすでに規定された用語があるのだ。
640仕様書無しさん:04/01/25 15:55
>>639
>頼むから「決定不能」なんていう俺用語を使わなくてすむように、勉強してくれよ。
>君が言いたいことにはすでに規定された用語があるのだ。

面白い。是非その「用語」とやらを教えてくれ。
641仕様書無しさん:04/01/25 16:00
>>640
君が何を言いたいかによる。

>処理系によって動作が「定義」されているのであれば
勉強すれば、こんな言い回しだってしなくてすむ。
642仕様書無しさん:04/01/25 16:04
implementation-defined 処理系定義
unspecified 不定
undefined 未定義
643642:04/01/25 16:05
つか、コンパイル&実行できる以上、決定不能なはずがない。
644仕様書無しさん:04/01/25 16:08
処理系で定義されているトリッキーな演算子の使用は、できればしないほうがいいだろ。
趣味のプログラムなら別にいいが。
645仕様書無しさん:04/01/25 16:09
英語でなくては専門用語として認めないって事か?
それなら undecidable と読み替えてくれ(w
646仕様書無しさん:04/01/25 16:14
>>644
そうなると問題になってくるのは、
もともと「トリッキーである」と判断する基準が曖昧である為に、
それを使用してよいか否かの判断に常に迷うようになってしまう事。

人や環境によっては
int a, b;

a = b = 0;

もトリッキーと判断されるかもしれない。
647仕様書無しさん:04/01/25 16:15
>>636
なんで『「」』をいちいち付けるんだ?
普通「」を付けるときはどういうときなのかわかってるよな?
648仕様書無しさん:04/01/25 16:17
>>645
642を見てピンと来ないのなら、C FAQを読め。

>>646
それは処理系定義ではない。
649仕様書無しさん:04/01/25 16:21
while( *to++ = *from++); // OK
while( *to++ = *from++ & 0x7f ); // OK できれば優先順位を明確にする括弧が欲しい
while (*from? *to++ = *from++ & 0x7f, 1: 0); // 氏ね
650仕様書無しさん:04/01/25 16:22
>>642-643
>つか、コンパイル&実行できる以上、決定不能なはずがない。

はぁ、、、こういう奴がいるから、わざわざ
「せめて「決定不能」という言葉の意味を理解してからやってくれよな」
って言っておいてやったのに。
651仕様書無しさん:04/01/25 16:25
>>650
だから、俺用語を使わずに、万人にわかる言葉を使えといってるのだが。
君の説明能力不足を、他人の読解力の無さにすりかえないように。
652642:04/01/25 16:27
お話になりません。君と話すの時間の無駄。
653仕様書無しさん:04/01/25 16:29
>>651
まずは、自分の知らない用語を全て「俺用語」と断定できる
お前の自信が一体どこから沸いてくるのか教えてくれ。
654仕様書無しさん:04/01/25 16:29
はぁ?trigraphを使うなだと?
655仕様書無しさん:04/01/25 16:31
>>653
642同様、君と話すのやめるよ。馬鹿の相手は疲れるから。
656仕様書無しさん:04/01/25 16:32
>>653
>>647
氏ね。
657仕様書無しさん:04/01/25 16:34
>>653
あのさー、君がどの分野の用語かを言えばすむ話じゃないか?
少なくとも、この分野ではそんな用語使わないんだしさ。
658仕様書無しさん:04/01/25 16:38
>>636
つか、言語としてその動作が定義されているなら、普通のコンパイラで決定不能になるはずがない。
659仕様書無しさん:04/01/25 16:43
>>653
まずは、お前の文章を他人が理解できて当然であるし、それができるレベルの文章を自分は書いてるという
お前の自信が一体どこから沸いてくるのか教えてくれ。
660仕様書無しさん:04/01/25 16:49
知識のレベル不特定多数の居るこういう場所では「馬鹿をケナす」のではなく「知識のすり合わせ」
―相手にわかるように言い回しをカエル―をしなければならない。

ってことでお前ら落ち着きたまえ。
661仕様書無しさん:04/01/25 16:59
>>660
>―相手にわかるように言い回しをカエル―をしなければならない。
google も使わない奴が何を偉そうに・・・
662仕様書無しさん:04/01/25 17:06
たぶんこいつの言いたい事は、

>>638のリンク先でダイクストラが使っている意味の決定不能だろう。

for や IF を適切に使えば、 goto を無配慮に使ったコードと違ってコードが終わる事を決定可能 という意味でね。


ただし、for や if に関係なく、構造化プログラミングであれば コードの終了は決定不能だから、あんまり意味ないよね。

663仕様書無しさん:04/01/25 17:14
>>662
>ただし、for や if に関係なく、構造化プログラミングであれば コードの終了は決定不能だから、あんまり意味ないよね。

喩えるならば、
家の中(C言語の「式」のような限定された表現)で素っ裸になるのは勝手にやればよいが、
街中(プログラム全体)で素っ裸になるのはやめとけよ
って事。
664仕様書無しさん:04/01/25 17:17
あ、それとそのリンク先は読んでいないが、
漏れの言いたい「決定不能」とは
もちろん計算機科学での「決定不能」ね。
665仕様書無しさん:04/01/25 17:27
goto使っても「決定不能」にはならんだろ?
666仕様書無しさん:04/01/25 17:28
goto 使うのと 計算機科学での「決定不能」とどう関係があるんだ?


それとも for if だけで書ける事をもって角谷問題の証明の代用になると電波でも飛ばすつもり?
667仕様書無しさん:04/01/25 17:30
最低でも「何が」決定不能になる(ならない)のかを明言して欲しい…
668仕様書無しさん:04/01/25 17:31
goto を使う・使わないに限らず、
プログラムは決定不能になりうる。

そんな状況で goto を使ってわざわざ問題の分割を
し難くするのは愚かではないかって事。
669仕様書無しさん:04/01/25 17:34
ははあ、言いたい事は goto はブロックをまたぐから さらに小さく分割するのに不便という事かい?

でもさ、結局大きなブロックを書けば、それは同じなんだよ。

そして、それを説明するのに 計算機科学での「決定不能」 は全く適切ではないと思うぞ。

構造化プログラミングを語るなら、まず概念を構造化しよう。
それには、決定不能という概念を自立させる事だ。
670仕様書無しさん:04/01/25 17:34
とりあえず、必ず難しくなることを示してくれ。
もしくは、我田引水をやめろ。
671仕様書無しさん:04/01/25 17:37
それともう一つ、
トリッキーな「式」はそうではないので
規制するのはいかがなものか、と。
672仕様書無しさん:04/01/25 17:40
釣れてますなぁ。
673仕様書無しさん:04/01/25 17:43
「分かりやすさ」も問題になってるはずだが?
適切に分割するのも一つの手段では有るが。
674仕様書無しさん:04/01/25 17:51
>>669
>そして、それを説明するのに 計算機科学での「決定不能」 は全く適切ではないと思うぞ。
言葉が適切であるか無いかはその人の判断次第だが。。。

>構造化プログラミングを語るなら、まず概念を構造化しよう。
>それには、決定不能という概念を自立させる事だ。

概念の構造化???
概念の自立???
あまり聞かない言い回しだな。ググってみても、
ちょっと電波がかったページにしか辿りつかないし。

是非説明してくれ。
675仕様書無しさん:04/01/25 17:56
>>670
>とりあえず、必ず難しくなることを示してくれ。
過去スレを読め。
一体いつの間に goto 支持論者が復活してきたんだ?
このスレで散々叩かれたんだがな。
676仕様書無しさん:04/01/25 17:59
はぁ?示されちゃいねぇよ。
このスレで叩かれてるのは、状態遷移図にgoto使うと分かりやすいってやつだろ?
677仕様書無しさん:04/01/25 18:09
>是非説明してくれ。
自分では説明しないくせに、人には要求するのか…
678仕様書無しさん:04/01/25 18:18
>>674
そうさ、俺は電波だからな。

だが、キミにも同じ電波のニオイがするぞ。 
まあ俺の判断なんだがな。

lこれも自分の判断次第の範疇だろう。
679仕様書無しさん:04/01/25 18:33
てゆーか、>>642の言葉を使って議論できない奴は低脳
680仕様書無しさん:04/01/25 18:37
そもそも概念というのは 構造化により構築されるものだ。

具体の集合が抽象により包括され観念となり、命名により概念となる。

しかし、命名のままでは人に概念を伝えるのに十分ではない。
具体の列挙、包括方針、観念の共有をへて、概念の伝達が可能なのだ。


これらはまさに構造化プログラミングそのものだ。
681仕様書無しさん:04/01/25 18:41
んで?
682仕様書無しさん:04/01/25 18:43
つづきは自分が書けよ。 一人で演説ぶってもつまらんじゃないか。
683681:04/01/25 18:50
おれもツマランと思ったから、続きがあるのかと期待したんだが…
684仕様書無しさん:04/01/25 18:51
計算機科学での「決定不能」ってどういうことですか?
685仕様書無しさん:04/01/25 18:55
>チューリングは,停止問題が決定不能 (undecidable)であることを証明した
とかいう文脈で使用される。
686仕様書無しさん:04/01/25 18:59
>>685
全然解りません。
使用例じゃなくて意味をお願いします。
687仕様書無しさん:04/01/25 19:07
こんな↓記述を見つけた。

算術モデルにおける
 決定不能性とは、
 述語の真偽を有限回の
 手続きで決定する方法が
 存在しないことを意味し、
 述語関数が帰納的に
 定義されていないこと、
 テューリング機械で計算不能な
 ことと同値である。
688仕様書無しさん:04/01/25 19:08
命題に対して使われる場合、日本語で読んだままの意味でいいとおもいます。
このスレで登場したモノはなにか専門の意味があるらしいのですが。
689仕様書無しさん:04/01/25 19:10
>>687
それと>>636とはかけ離れてる気がしますが・・・
690仕様書無しさん:04/01/25 19:12
>>689
>>636は、「不定」か「未定義」かどちらかの言葉に当てはまることを言いたいんだと思うよ。
本人がその言葉を知らないからごねてるだけで。
691仕様書無しさん:04/01/25 19:12
>>688
少なくともプログラマなら知ってて当たり前の用語だと思うが。
692仕様書無しさん:04/01/25 19:14
>>691
では、意味を教えてください。
693仕様書無しさん:04/01/25 19:15
>goto を使う・使わないに限らず、
>プログラムは決定不能になりうる。
>>636と同一人物なら、>>686-688でいいと思うけど。
(でも最初といってること違うね。)
694仕様書無しさん:04/01/25 19:16
>>692
不定=定まっていないこと
未定義=定義されていないこと
695仕様書無しさん:04/01/25 19:18
>>693
一応同一人物だが、何か違うか?
696仕様書無しさん:04/01/25 19:19
>>693
・処理系によって解釈された式に
・決定不能な要素が存在するかどうか
ですよ?
そしてその「式」とは、一見分かりにくい「式」のこと。
その一見分かりにくい「式」が処理系によって解釈さされる、これはわかる。
それと「決定不能」がどう関連するのかがさっぱりわからない。
697仕様書無しさん:04/01/25 19:20
>>694
そちらではなくて、「決定不能」の意味のほうをお願いします。
698仕様書無しさん:04/01/25 19:21
>>694
それらは「何によって」定まっていなかったり、定義されていなかったりするんでしょうね?
699仕様書無しさん:04/01/25 19:26
なんだ、他人に分かり易い文章を書けないのを棚に上げて、他人の読解力がないだとか
知ってて当然の技術用語を知らないだとかほざいてるアホだったのか。つまらん。
700仕様書無しさん:04/01/25 19:28
>>695
言語の、それもCの話をしてるんだからさ、>>642の用語を使ってくれよ。
普通みんなそうしてるだろ?
701仕様書無しさん:04/01/25 19:29
>>695
ん?あぁ、一応「決定不能になるような要素を使ってはならない」とは言ってないか。
gotoと式は、決定不能性を含む/含まないの違いがあるって言いたかっただけだよね?
(そうすると、構造化の話をなぜだしたのか分からなくなってしまうけど…)
702仕様書無しさん:04/01/25 19:30
>>700
知らないんだよ。だから処理系定義されてりゃバンバン使ってもOKなんてアフォなこと書くんだよ。
703仕様書無しさん:04/01/25 19:32
処理系定義されていれば使ってOKというなら、gotoだってOKじゃん。
だから、>>636は違う意味で使っているんだと思っていたが?
まぁ、本人居るんだから、答えてくれよ。
704仕様書無しさん:04/01/25 19:35
>>700
出直してこい。

>>701
(そうすると、構造化の話をなぜだしたのか分からなくなってしまうけど…)
別に「構造化」についてどうこう言ってはいないと思うが、
要するに言いたいことは >>663 って事。
705仕様書無しさん:04/01/25 19:39
>>704
君は636なんだよな?頼むから、

>基本的に漏れは、いわゆるトリッキーな演算子の使用法については
>処理系によって動作が「定義」されているのであれば全然 OK だと思うが、
>goto はやっぱりまずいと思う。

>処理系によって「解釈された式」に「決定不能」となる要素が
>絡むことが無い以上(しかも言語としてその動作が「定義」されている以上)、
>それらを制限するのは無駄且つ有害なことだと思うが、どうよ。

の文脈における「決定不能」の意味を説明してくれよ。
706仕様書無しさん:04/01/25 19:39
>>704
その例えは意味不明。
詳しく説明するか、別の奴をお願い。
707仕様書無しさん:04/01/25 19:41
ヲィヲィ、処理系定義なものは使っちゃまずいだろ。
708仕様書無しさん:04/01/25 19:41
>>704
>「非構造」な
は構造化の話じゃない?
3段落目は明らかに構造化のことを意識して書いてるよね?
709700:04/01/25 19:43
>>704
なぜ、出直して来い、となるのかわからないが、君が>>642の用語を正しく使えていないということは、
Cに詳しくないと告白しているのと同義なんだよ。
710仕様書無しさん:04/01/25 19:44
>>705
決定不能性についての教科書は何冊も出ている。
どんな優秀な教師でも1冊の本の内容を
数行の2chのレスで説明することは出来ないと思うし、
もし仮に出来たとしても、それを誤解せずに読める人は
いないだろう。正直、自分で教科書を探して
勉強した方がいい。
711仕様書無しさん:04/01/25 19:45
>>710
つまり、説明できないということですね。
712仕様書無しさん:04/01/25 19:47
>>710
てゆーか、君はどうして自分の文章にそんなに自信があるんだ?
わからんという奴がこれほどいるのに。
713仕様書無しさん:04/01/25 19:48
>>710
決定不能となる要素が含まれている式をひとつ示せばいいんだよ。
714仕様書無しさん:04/01/25 19:53
>>710
そこで、ポインタを示せよ。
特定されると都合悪いのか?

たとえば、
http://www.saiensu.co.jp/books-htm/ISBN4-7819-0374-6.htm
でOKか?

引用すると
> 問題はその言語が帰納的であるとき決定可能(decidable)という。
> さもなければ、決定不能(undecidable)という。すなわち、問題の実例を入力とし、
> その答えが"yes"か"no"かを決定するアルゴリズムが存在しないとき、問題は
> 決定不能である。
715仕様書無しさん:04/01/25 19:56
>711-712
結局「誰にでも」説明できる文章は書けないし、
そんな努力をするつもりも無い。

>>714
ありがと。その通りだね。
716仕様書無しさん:04/01/25 19:58
>>636は、
「自分は正しいと確信している。だが、具体的なことを書くと自分には無意味に思える
反論が帰ってきてウザイ。だから、説明しない。」
という議論スタイルだね。激しく誠実でない態度だが。
(んでもって、自分は正しいと確信しているところがイタイw)
717仕様書無しさん:04/01/25 20:04
ということは>>687でもOKだね。
なぜ説明したりポインタ示したりするだけで済むのにこんなかけるんだ…
718仕様書無しさん:04/01/25 20:10
>>717
まあ、基本的に分からない言葉は自分でググるというのは
2chのお約束な訳で・・・

それもやらない奴らに千篇万語を費やしても仕方ないかなと。
719仕様書無しさん:04/01/25 20:10
あと、もう一回書いておくけど
>そんな状況で goto を使ってわざわざ問題の分割を
>し難くするのは愚かではないかって事。
必ず難しくなることを説明してくれ。
前レスや前スレに書いてあるなら、具体的なレス番号を示してくれ。
720仕様書無しさん:04/01/25 20:16
>>719
これで十分だと思うが。
>>638
>ttp://www.acm.org/classics/oct95/
721仕様書無しさん:04/01/25 20:22
それって構造化プログラミングを提唱しているだけなんだけど…
722仕様書無しさん:04/01/25 20:25
344 名前:251[] 投稿日:03/12/10 02:04
>>338
ありがとう。ああやはり。私の記憶は間違っていなかった。
Go To Statement Considered Harmful
の内容は単に「構造化プログラミングの提唱」だ。
「gotoは有害を引き起こす」というのは単なるキャッチコピーだ。
#ダイクストラは自らのキャッチコピーに起因するgoto論争に嫌気がさして
#晩年はgotoと聞いただけで不愉快になったとも聞く
723仕様書無しさん:04/01/25 20:32
gotoの話は別にして、
「決定不能性」を含んでしまう可能性が無いからって規制しては
ならないってのも乱暴だなぁ。
それともなんか根拠になるようなデータなり論文なりがあるの?
724仕様書無しさん:04/01/25 20:33
>>721-722
文章とは生き物。
キャッチコピーだから、本人の意図ではないから
といって、それが真実を語っていないとは
限らない。
72537 ◆7BXCxYvfIs :04/01/25 20:37
>>722
前スレの251って私のことですよ。
それともそれは「矛盾の指摘」なのですか?
レス間に矛盾があるようには思えないのですが
726仕様書無しさん:04/01/25 20:37
んじゃ、キャッチコピーが正しかったことを示してね。よろしく。
727仕様書無しさん:04/01/25 20:38
>>723
ていうか、結局は本人の趣味の問題。

>基本的に漏れは、いわゆるトリッキーな演算子の使用法については
>処理系によって動作が「定義」されているのであれば全然 OK だと思うが、
>goto はやっぱりまずいと思う。
728仕様書無しさん:04/01/25 20:39
ん?>>37=>>636なの?
ちなみに>>721=>>722
729仕様書無しさん:04/01/25 20:40
まずいgotoの使い方がまずいのは当然だ!
まずい式の書き方がまずいのも当然だ!
まずいプログラムがまずいのも当然だね!
730仕様書無しさん:04/01/25 20:48
>>727
まぁ、結局、規制問題に関してgotoと式には決定的な違いはないわけだしね。
そういうことか。
731仕様書無しさん:04/01/25 23:06
Cでgotoを使わない理由はただ一つだ。
うっかり使うとへまをする奴があまりにも多いからだ。
"使えない"のだ。
732仕様書無しさん:04/01/25 23:25
「gotoを使わないほうが良いと教える理由」だね。正解。
733仕様書無しさん:04/01/26 00:34
while( *to++ = *from++); // 氏ね
while( *to++ = *from++ & 0x7f ); // 氏ね
while (*from? *to++ = *from++ & 0x7f, 1: 0); // 氏ね
734仕様書無しさん:04/01/26 07:55
で、結局636は>>636の内容を説明しなかったわけか。
735仕様書無しさん:04/01/26 07:58
>>718
君間違ってるよ。
基本的には、主張したい側が自説の説明をする責任があるんだよ。
それに君の発言でわからないのは言葉だけじゃなく、その内容だったんだけどね。
736仕様書無しさん:04/01/26 08:10
>>635
てか、
>英語でなくては専門用語として認めないって事か?
などという恥ずかしいこと書いて、それに気づかないってのが痛い。
737仕様書無しさん:04/01/27 14:37
>>731
おまえにかかると全てが単純でいいな
738仕様書無しさん:04/01/29 01:15
今日、Cでgoto使っても怒られなかったYo
739仕様書無しさん:04/01/29 01:16
厳密には昨日だGa
740仕様書無しさん:04/01/29 18:22
大雑把には今月Da
741仕様書無しさん:04/01/30 09:05
ヘタクソはgoto使うな

いじょ
742仕様書無しさん:04/01/30 22:35
じゃ、オレはへたくそじゃないので使います。
743仕様書無しさん:04/01/30 23:11
>>733
一番上の
while( *to++ = *from++);
は普通だよ。
というより文字列複写の定式化された書き方だと思うけど。イディオムっていうのかな。
逆に聞きたいよ。strcpy使わずにどう書くの?
744仕様書無しさん:04/01/31 03:13
strncpy
745仕様書無しさん:04/01/31 11:39
ヴァカ
746仕様書無しさん:04/01/31 12:38
提案:素人にあえてgotoを使わせる

・代入
・if
・ifとgoto

でも関数(とその呼び出し)は必要だな...

ifとgotoが理解できたらループを教えて、以後はgotoを使わせない
これ最強!
747仕様書無しさん:04/01/31 12:40
...あ、"演算"が抜けてら
748仕様書無しさん:04/02/01 14:10
>ifとgotoが理解できたらループを教えて、以後はgotoを使わせない
ループを教える前にifとgotoだけで作られた他人のプログラムを解析させれば完璧
749仕様書無しさん:04/02/04 23:59
>>743
while( *to++ = *from++);
が旧世代C使いの標準的イディオムな事くらい知っている。
あなたはJavaやC#などの先進的言語がwhile文に真偽値しか受け付けない事も知っていますか?

さらに下位層が何をしようが俺に迷惑がかからなければ預かり知らぬ所。
strcpyがどのようなコードで実装されようが、それがインライン展開されようが同じ事。

あなたの言っている事はこのスレでたまに出る
構造化構文もjumpやbranch命令になる
などという当たり前すぎて無意味な発言と同レベル。
7503へぇ:04/02/05 02:09
>JavaやC#などの先進的言語がwhile文に真偽値しか受け付けない
へ〜へ〜へ〜
751仕様書無しさん:04/02/05 02:14
>>749
あなたの言っている事はこのスレでたまに出る
発言の前半と後半が関係なさすぎて無意味
752仕様書無しさん:04/02/05 11:28
>>749
ということは、
while((*to++=*from++)!=0);
なら問題ないわけだな。
753仕様書無しさん:04/02/06 00:45
七五三
754仕様書無しさん:04/02/06 13:58
>>752
まだだ。インテンションが複数あるからわかり辛い。
755仕様書無しさん:04/02/06 17:28
意図は、「ヌル文字が来るまでコピー」だろ?
b=a*4+3は「aに4を掛ける」「それに3を足す」という2つの意図があるから、
複数行に分けるべきだ、とか?っと代入も分けないと!


・・・なんてね♪
756仕様書無しさん:04/02/07 01:36
あ〜るぅはれたぁひ〜るぅさがりぃい〜ちぃば〜
へつづぅくみちぃに〜ばぁしゃあがぁgoto goto
757754:04/02/07 02:01
>>755
>意図は、「ヌル文字が来るまでコピー」だろ?
「〜まで繰り返す」というインテンションの表現の為に while というブロックがあるわけだが、
「繰り返す条件」と「何を繰り返すか」は別にしないとわかりづらい。

下記くらい書き下しておくべきだ。

_Bool isFromNull = ((*from) == 0x00);
while (!isFromNull)
{
 (*to) = (*from);
 ++to;
 ++from;
 isFromNull = ((*from) == 0x00);
}

なお、真偽値は if や while の条件式にそのまま使ってもよいが
整数型やポインタはそのまま使うべきではないだろう。
整数型やポインタに前置の!を適用するのもやめた方が良い。
758仕様書無しさん:04/02/07 02:40
>>757
cってプログラマの「短く書きたい」という要求が言語仕様に結実している言語なんだ。
cらしくない。印象は単に「冗長」。
759仕様書無しさん:04/02/07 04:12
>>757
それだとヌル文字がコピーされないんでないの?
760仕様書無しさん:04/02/07 07:18
無様ね…
761仕様書無しさん:04/02/07 12:27
>>757
>>755の後ろの例、
「2つの数を掛け合わせる」というインテンションのために*が、
「2つの数を足す」いうインテンションのために+があるわけだが
それは分ける必要ないのかね?

分かりやすいか分かりにくいかが問題なら、オレは分かりにくくないと思うな。
762仕様書無しさん:04/02/07 12:43
>>749
>あなたはJavaやC#などの先進的言語がwhile文に真偽値しか受け付けない事も知っていますか?

あなたは C に「真偽値」などというものが存在しない事も知っていますか?
そーゆー言語なのよ、C ってのは。
763仕様書無しさん:04/02/07 12:45
まぁ、素直に書くとこんなところか。
while (*from != '\0') {
  *to = *from;
  to++;
  from++;
}
*to = '\0';

あとなんでもかんでもtypedefするのも嫌い。
コメント付けすぎなソースと同様にね。

>整数型やポインタはそのまま使うべきではないだろう。
オレは使ってもいいと思うね。
最近の言語でboolしかダメなのは、データタイプが増えてきて、
何を真/偽とするかが(一貫性を持って)決定できなくなってきているから。
Cはそんなこと無い。

まぁ、要するに分かりやすく書こうと努力するのはいいが、やりすぎは遺憾だろって話だ。
764仕様書無しさん:04/02/07 14:03
whileは、"繰り返す"ことと"〜で無くなったら終わる"という
二つのインテンションを含んでいる!

下記くらい書き下しておくべきだ。

while (1) {
  _Bool cond = ....;
  if (!cond) {
    goto loopend;
  }

  :
}
loopend:

while構文の意味が無い?
言語的に記述可能ならなんでも書いていいと思ってるのか?
765仕様書無しさん:04/02/07 21:17
>>764
じゃ、char は文字というインテンションを含んでいるので、
文字の保管にしか使うべきではない、と?
766「764」:04/02/07 21:37
>>765
「『charで宣言した個所』に複数のインテンションが含まれていれば問題ない。」
767764:04/02/07 22:03
×含まれていれば
○含まれていなければ
だったw。惨め…

まぁ、マジレスされるとは思わなかったけどw、>>764はただの皮肉だよ?釣りですらない。
768仕様書無しさん:04/02/08 00:51
はぁ。。。何度言ったらわかるんでつか!
下記くらい書き下しておくべきだ。

goto loopchck;
looptop:
  *to = *from;
  to++;
  from++;
loopcheck:
if(*from != '\0') goto looptop;
*to = '\0';

「繰り返す条件」と「何を繰り返すか」は別にしないと(w
769仕様書無しさん:04/02/08 01:00
>>759
ミスった。

>>761
「〜を計算する」というインテンションだからわけなくていい。
あまりに複雑になったらexplaining variableを使ったりして分けるけど。

>>762
節穴?_Boolって何だか答えてみて。

>>763
typedefは使うべきだよ。C使いのソースは変数名が型の名前とほとんど変わらない事が多いが、
structやtypedef名に型の意味を、変数名には型以外の情報を入れるべき。
ソースの修正はサンクス。

>>764
インテンションを語る前にあんたのレスのインテンションを確認しろよな。
気に障ったからって意味不明な事書くの恥ずかしくない?

>>765
charって名前はCの失敗の一つでしょうね。
byteかoctetにするべきだったと思う。
770769:04/02/08 01:03
>>768
まさしくこのスレにふさわしいね。
それ以上の意味をなんら見出せないけど。




それより突っ込まれる予定の事が突っ込まれてないぞ。
俺がおまえらなら

isFromNull = ((*from) == 0x00);

が重複して冗長だと言うはずだ。
おまえらコードの重複に対してあまりにも無神経なんじゃないのか?
771仕様書無しさん:04/02/08 03:55
なんだかキモチ悪い奴が常駐してるね。
772仕様書無しさん:04/02/08 10:14
>「〜を計算する」というインテンションだからわけなくていい。
同じ種類だから一つにまとめられるの?a=b+c*dなら「代入」もインテンションの一つだよな?
それとも、人間の意志としてのインテンションが大事なの?だったらwhile(...も一つでしょ。
773仕様書無しさん:04/02/08 10:25
>>770
>おまえらコードの重複に対してあまりにも無神経なんじゃないのか?
>>763で指摘してるじゃん。ソースで。>>757も冗長だっていってるし。
>>763には書かなかったけど、宗教的な理由でwhile()の中に条件式が
使えないなんて大変だなwとかオモタよ。
774仕様書無しさん:04/02/08 11:12
インテンションって何だよ?
775仕様書無しさん:04/02/08 11:17
intention
【発音】inte'n∫n 【変化】《複》intentions
[名] 狙い, 意志, 意図, 概念
◆ I have no intention of entering the Cabinet : 私は内閣に入るつもりは全くありません.
◆ What are your real intentions? : 実のところどうするつもりだ?

776仕様書無しさん:04/02/08 11:24
>>775
>>772をインテンションという単語を使わずに、言い換えてみてください。
777仕様書無しさん:04/02/08 11:59
『同じ種類だから一つにまとめられるの?a=b+c*dなら「代入」も「意図」の一つだよな?
それとも、人間の意志としての「意図」が大事なの?だったらwhile(...も一つでしょ。』

まぁ、意思でも意志いい。
778仕様書無しさん:04/02/08 13:59
goto文を使うとソースがわかりにくくなる事を実感するためには、
HSPをやってみるのが一番手っ取り早いかと
779仕様書無しさん:04/02/08 15:53
最近はBASICですら構造化の時代だからな。
ある意味貴重な存在かもw
780仕様書無しさん:04/02/08 17:03
>>777
日本語になってませんが
781仕様書無しさん:04/02/08 18:12
日本語が良く理解できないらしい人は、まぁ、置いとくとして…
782仕様書無しさん:04/02/08 20:43
また変なのが来てるな
783仕様書無しさん:04/02/09 10:20
プログラム&インテンションでぐぐったら、Lyeeのページが多くヒットしてワラタ
784仕様書無しさん:04/02/09 20:18
>>782
あんた何故行くスレ行くスレでなんで自分の事を書いてるの?
785仕様書無しさん:04/02/09 21:09
>>784
妄想?
786仕様書無しさん:04/02/13 00:54
無様ね…
78737 ◆7BXCxYvfIs :04/02/13 12:51
37==743
よく燃える燃料を投下してしまったようですね・・・
#まぁいいか。燃えるかなっ試して見たかっただけだから・・・。もう燃え尽きたみたいだし。
788仕様書無しさん:04/02/13 19:16
最初から読んでみたけど、なんか
「gotoを使わない理由」
じゃなくて
「gotoを使わせない理由」
しか議論されて無いように見えるんだが気のせい?

まぁ、むやみに使わせないのは正しいと思うが、
使わない理由では無いよなぁ…
789仕様書無しさん:04/02/13 21:51
Windows 2000/NT のソースコードがネット上に流出
http://www.faireal.net/

MSはgoto使ってるんだろうか?
790仕様書無しさん:04/02/14 05:02
>>789
検索文字列"goto"
2895ファイル、合計41301個所見つけました

でWindowsでは使いまくりだな。
用途は終了処理ブロック・エラーハンドル処理へのジャンプが大半。
まれに永久ループにも使っていたり。

自分もちょくちょくgoto使っているけど
それよりもかなり積極的に使っている感じ。
それでもgotoのとび先が分からないので大混乱というのは見た限りなかった。
一関数のサイズが小さいからなのかもしれない。
791仕様書無しさん:04/02/14 05:05
一部コピペ。識別子はいじってある。
こんな感じでほとんど規約化してあるんじゃないかというくらい使いまくり。

BOOL AAAA(BBBB *p, CCCC *p)
{
 INT icol;
 HDC hdc;

 hdc = DDDD(p->hdc, 0, 0);

 if(!p->fDealt)
  goto Return;
 for(icol = 0; icol < p->icolMac; icol++)
  DDDD(p->rgpcol[icol], msgcPaint, (INT_PTR) p, 0);
Return:
 HdcSet(hdc, 0, 0);
 return fTrue;
}

792仕様書無しさん:04/02/14 05:27
こんなところにも漏れてるのな
793仕様書無しさん:04/02/14 09:55
>>789
ま、OS の場合は純粋に実行効率の為に
使用しているだけかもしれないしな。
794仕様書無しさん:04/02/14 12:23
>>791
ひどいですね。明らかにgotoの誤用です。
BOOL AAAA( BBBB *p, CCCC *p ){
 INT icol;
 HDC hdc;
 hdc = DDDD( p->hdc, 0, 0 );
 if ( p->fDealt )
  for ( icol = 0; icol < p->icolMac; icol++ )
   DDDD( p->rgpcol[icol], msgcPaint, (INT_PTR)p, 0 );
 HdcSet( hdc, 0, 0 );
 return fTrue;
}
795仕様書無しさん:04/02/14 12:49
ヌルポ
796仕様書無しさん:04/02/14 14:41
>>794
中カッコ無しで for や if 書くのって気持ち悪くならない?
>>791 は BASIC 屋上がりな気がするけど。
797仕様書無しさん:04/02/14 17:27
>>796
そうですね
かっこなしのが 混ざってると
読み間違えることが、たまにありますね
798仕様書無しさん:04/02/14 20:22
>>793
速度優先なら、全部で40GBとも言われる巨大なプロジェクトでも許されるのか?
しかも、長期間継続的にメンテされるであろうコードに。
すげぇダブルスタンダードだよな。
799仕様書無しさん:04/02/14 21:37
>>798
ダブルスタンダードと言い張る前に、
マイクロソフトが goto の使用を禁止している
証拠を出してくれ。
800仕様書無しさん:04/02/14 23:12
>>798, 799
たぶん、そうじゃなくて、単純にアセンブラかFORTRN,BASICか何かに
馴れていた椰子が、c言語でお気楽に従来の作法で書いたんじゃないかあ?
791のサンプルは典型的なFORTRNのサブルーチンスタイルだよん。
きっとねえ、途中からcに言語転換した椰子が動きゃええやないのって書いたんだよ。
801仕様書無しさん:04/02/14 23:19
あとねえ、確かノイマン型コンピュータの条件に、逐次処理、比較判定、ジャンプがあるからgotoレスは不可能という見方はないかい?
ただ、c言語ではジャンプ文の使い方を分類してif,for,while,switch/case, {}文の中で見えないところに押し込めるから椰子がジャンプ文を使う必要はないという考え方をだしたんだと思っているよん。
802仕様書無しさん:04/02/14 23:23
>>801
>あとねえ、確かノイマン型コンピュータの条件に、
>逐次処理、比較判定、ジャンプがあるから
>gotoレスは不可能という見方はないかい?

小学生レベルのネタだな。
803仕様書無しさん:04/02/15 01:11
>>799
gotoはあったよ。でも、そのせいでスパゲティになるどころか、
むしろ綺麗で分かりやすいコードになってた。
80437 ◆7BXCxYvfIs :04/02/15 02:09
>>801
不可能・・・ではないんです。
構造化定理というものがあって、連接/選択/反復によって全ての論理は表現可能である
と証明されています。
ですがもちろん、「可能である」ということは「最善である」ということを意味しません。
>>803の様な感想をもつ人もいるわけです。
今日、数学1+A 数学2+Bの模試があったんですよ。進研模試。
で、なんか、選択問題にプログラミングとかあって、
BASICのソースが二十行ばかり並んでるんですよ。
もうアホかと、馬鹿かと。
おまえらな、今ごろインタープリタのBASICなんか問題に出してるんじゃねえよ。
BASICだよ、BASIC。
このとき、goto文の後に入る行番号は?、とか言ってるんです。
おまえらな、せめてCにしとけと。
ソースコードって言うのはもっと目で追いやすいコードであるべきなんだよ。
goto文なんて多量にネストされたループからの脱出以外にはあまり使われない。
それがいいんじゃねえか。80年代の遺物はすっこんでろ。



ともかく、BASICはひどく読みにくいソースコードでした。
goto文の後がふせてあり、どの行番号に飛ぶか、という問題でした。
Cでループを使ったらスマートに書けるのになあ。
まるでHSPです。
806仕様書無しさん:04/02/15 13:51
>小学生レベルのネタだな。
あおるなや。
アセンブラをみればgoto文が必須であることがわかるべ。
高級言語で、
>構造化定理というものがあって、連接/選択/反復によって全ての論理は
>表現可能であると証明されています。
このように整理して追放できると言いたかったのだよ。
試しにif文のアセンブルリストを出力してみそ。
本人は奇麗なプログラムを書いたつもりでもアセンブルリストに
してみるとJump文(gotoのことね)がスパゲッティのように
とぐろをまいている。

goto文は使わないようにすべきであると思うが...
馬鹿だからgotoを使うという雰囲気はやだな。

807仕様書無しさん:04/02/15 14:11
>gotoレスは不可能という見方はないかい?

という文から

>このように整理して追放できると言いたかったのだよ。

という主張に辿りつくまでの論理が俺には理解できない。
808仕様書無しさん:04/02/15 19:22
どこかで拾ってきたM$のソースコードにはgotoが40000個ほど使われてますた。
809当方一年でつ:04/02/15 19:47
>>805
べしっくは厨の時にN88ちろっといじっただけなんで、
センター試験に出すならCにしてホスィ…
Cなら試験にでてもかなり自信あるけど
漏れが受ける頃にはまだべしっくだなぁ…
最後にgoto打ったのいつだっけか。。。
810仕様書無しさん:04/02/15 20:46
>>806
構造化アセンブラというのがあるぞ
811仕様書無しさん:04/02/15 20:48
もうループしかしないな、このスレ。
812仕様書無しさん:04/02/15 20:51
if(i==1002)break;
813仕様書無しさん:04/02/15 20:58
C20xxでは是非gotoにthrow/catch、
せめてsetjmp/longjmpと同等の機能を持たせて頂きたいね

したらgoto復活すんべ
814仕様書無しさん:04/02/15 20:59
×throw/catch
○try/catch
815794:04/02/15 23:28
>>796
>中カッコ無しで for や if 書くのって気持ち悪くならない?
全然ならない。不要な中カッコを書くほうが気持ち悪い。

>797
「読み間違える」のは「ぶら下がりelse」だけだから、そこには必要な中カッコを書く
816仕様書無しさん:04/02/15 23:55
>>815
なんだっけ?必ず括弧をつけるのは、
if (hogehoge)
  foo();
を修正やデバッグのために
if (hogehoge)
  foo();
  bar();
とか(不注意で)修正してしまってエンバグしてしまうのを防ぐため、だったかな?
聞いたときはそんな馬鹿な奴いるのかよ?とか思ったものだ。

if (0 == hoge) { ...
とか書くのと同じかねぇww
817仕様書無しさん:04/02/16 00:00
>>791は所謂典型的な例外処理の形じゃない?
 if(!p->fDealt)
  goto Return;
みたいな部分が複数個あると、>>794みたいに変換すると
ifのネストがすごいことになるよね?
818仕様書無しさん:04/02/16 00:02
>>816
いるんだなこれが。
それに、そのソースコードを一生責任持って保守なんて無理だし。

だから漏れは for/if には常に中カッコつけるし、if (0 == hoge) { ... も使う
819仕様書無しさん:04/02/16 00:05
>>817
例外処理を1個の関数にして、その関数の中での例外処理も、1個の関数で処理すればよかろう。
でも、関数呼び出しのオーバーヘッドを考えると、gotoの方がいいのだろうか…?
820794:04/02/16 00:14
>>816
if (hogehoge)
  foo();
は、
if (hogehoge) foo();
って書くからバグらないよ。「ぶら下がりelse」ってのは
if ( foo )
 if ( bar )
  baz = hoge;
else
 baz = boo;
みたいに、else部分を読み誤る場合のこと。
821仕様書無しさん:04/02/16 00:23
>>818
ああ。「そんな馬鹿な奴」、確かにいるよ。そして
>そのソースコードを一生責任持って保守なんて無理だし。
も正しいよ。
でもそれが常に中カッコつけるのにつながるのはムリが在るような気がするなあ。
正しく修正しないと正しく動かないのは当たり前だし。
822仕様書無しさん:04/02/16 00:40
>>819
その場合は、gotoよりもマクロ化のほうが良いと思われ
823仕様書無しさん:04/02/16 06:36
ある処理をどこから呼び出しているのか調べようと思って
#define Hoge() Hoge(); fprintf(stderr,"%s%d\n",__FILE__,__LINE__);
ってしたら、ブレイス省略していた所がダメダメになった。
#define Hoge() { Hoge(); fprintf(stderr,"%s%d\n",__FILE__,__LINE__); }
ってしたら、なんとHoge()に戻り値があった事が発覚。
やっぱりダメダメだった。

はじめから常にブレイスつけてればすぐにバグ修正できたのにー!

この件についてブレイスつけない派の意見がききたい。
824仕様書無しさん:04/02/16 06:52
return_type HogeWrap(char* file_name, int line_number)
{
  fprintf(stderr, "%s %d\n", file_name, line_number);
  return Hoge();
}
825仕様書無しさん:04/02/16 09:13
#define Hoge() (fprintf(stderr,"%s%d\n",__FILE__,__LINE__),Hoge())
826仕様書無しさん:04/02/16 10:56
>>819
俺は逆にそこまでしてgotoを排除しなくてもイイのでは?と思ってしまうわけだが。
その関数で行ったことはその関数内で始末をつけるということで一貫性も保たれるし、
定型的に使用されるなら分かりにくくなることもない。
(でWindowsでgotoが使われているのはそういうことではないか、と思うわけだ。)
827仕様書無しさん:04/02/16 17:36
>>823
>なんとHoge()に戻り値があった事が発覚。
>はじめから常にブレイスつけてればすぐにバグ修正できたのにー!
…そう思うか?
828仕様書無しさん:04/02/16 17:58
必ず{}つけると言う規約がたとえあったとしても、
本当に全てに{}が付いていると仮定するのは危険だ。
829仕様書無しさん:04/02/17 02:45
cだから

 int i;
 for ( i = 0; i <=maxi ; i++ ) hoge( i );
}
みたいに、変数iのためだけにブレイス書いてみたりする
830仕様書無しさん:04/02/17 03:16
全角と半角が入り混じってる・・・('A`)
>806

しかしですね。
何もCで言うところのwhileループの変わりにしなくても……。
仮にも(何十年前の?)高級言語なわけですから。

BASICは方言だらけの言語だという認識があるのですが、
ループする命令のひとつぐらいはないのですか。

>809

あぁ、それなら数学も好きになれるんだけどなぁ。
832仕様書無しさん:04/02/17 17:47
・・・真剣の模試
833仕様書無しさん:04/02/17 22:17
>ある処理をどこから呼び出しているのか調べようと思って
grep
834仕様書無しさん:04/02/17 22:30
C99 なら
for(int i = 0; i<=maxi; ++i) hoge(i);
835仕様書無しさん:04/02/18 00:34
C99 といえば、正式に // 以降、行末までがコメントになったNe
836仕様書無しさん:04/02/18 00:46
windows_2000_source_code でも goto 使いまくりなのを知って勇気付けられますた。
837仕様書無しさん:04/02/18 01:30
ミンゲンヒ〜ナ〜
838仕様書無しさん:04/02/18 10:28
Windowsソースの援護によりgoto擁護派の完全勝利!!
83937 ◆7BXCxYvfIs :04/02/18 12:56
>>838
「goto擁護派」って
「goto禁止の規約が存在するにもかかわらず、goto使う人」じゃなかったでしたっけ
「規則を守るか守らないか」と
「goto使うか使わないか」というのは全然別の議論だと思いますが
840仕様書無しさん:04/02/18 16:50
>>839
脳内定義ですか?
841仕様書無しさん:04/02/18 16:54
>>840
脳内言いたいだけちゃうんかと(ry
842仕様書無しさん:04/02/18 17:01
結局>>791はなぜ駄目なのかという具体的な指摘はなかったな。
>>819は関数分割のタイミング・指標としては完全な下策だし。
# finallyブロックをいちいち別関数に切り出せと?
843仕様書無しさん:04/02/18 18:33
>>831
この辺にちょこっと説明があるが
ttp://www.atmarkit.co.jp/fdotnet/vb6tonet2/vbnet2_00/vbnet2_00_01.html

昔のBASICって do loop すらない。
844仕様書無しさん:04/02/18 19:51
>>819はこのスレには居ないと言われてたgoto否定原理主義者なのかな?
845838=840:04/02/18 21:46
>>841
むむ。やっぱ安易な釣りはいけませんな。
まぁ、「gotoを使わせない理由」は有る(これが規約の話)が、
「(わざわざ)gotoを使わない理由」は無い、という結論がもう出てるから
これ以上議論することも無いわけだけど。

MSのソース流出事件は↑の結論の妥当性を再確認させてくれましたね。
846仕様書無しさん:04/02/19 00:47
みんあ、MSがバグバグなのは後藤のせい、って考えられないか?
847仕様書無しさん:04/02/19 01:38
安置は具体的な話が全く出来なくなったな
848仕様書無しさん:04/02/19 10:29
>>846
過去のバグの流出したソースで対応する部分を見つけて、
gotoのせい(と思われる痕跡がある)か検証してみてくれ。
結果を報告してね!待ってる。
849仕様書無しさん:04/02/20 06:12
MSのソースで使ってりゃOKというなら
定数ベタ書き連発もOKだな。
850仕様書無しさん:04/02/20 06:13
安置は具体的な話が全く出来なくなったな
851仕様書無しさん:04/02/20 09:00
>>894
オレはまだソース見て無いんだけど、連発してるの?
それは、>>849から見てまずい使い方が大半なの?
もしくは、すべての定数はdefine, enumしなければならないという原理主義者?
852仕様書無しさん:04/02/20 11:24
数値定数で許されるのは、0と1だけ。
文字定数はハードコード不可

文字列定数の場合は・・・少し難しい。
ハードコードされている方が判りやすいという事情もあって、
把握出来ないほど多数使う文字列定数のみconst char * にする。
define は時代遅れ
853仕様書無しさん:04/02/20 12:12
うわ、やっぱり原理主義者が居るんだ…。
何でもtypedefしちゃう人と同じ人かな?
854仕様書無しさん:04/02/20 14:51
>>852
しまったー!
こないだ書いたコード、1時間を 3600秒と決め付けて
ハードコードしたまま納品しちゃったよ!
855仕様書無しさん:04/02/20 15:33
そうそう、うるう秒をちゃんと考慮しないと。
(論点が違う?)
856仕様書無しさん:04/02/20 15:39
>854
#define SECOND_PER_MINUTE 60
#define MINUTE_PER_HOUR 60
#define SECOND_PER_HOUR (SECOND_PER_MINUTE*MINUTE_PER_HOUR)
857仕様書無しさん:04/02/22 21:58
gotoがだめだ、って言ってるやし

ソース見て分かる唯一ダメ(と世間で言われている)ぽいんとだからだろ?
クラスの分け方がダメだなぁ、とか話できないもんナ(w
858仕様書無しさん:04/02/22 22:02
もう終了ってことでよろしいか?
859仕様書無しさん:04/02/22 22:19
そろそろ、まとめて
860まとめ:04/02/22 22:51
・gotoの構文糖を積極的に使え
 ・while,if,switch/case等

・Cにない構文を再現する為にgotoを使うのはあり
 ・try/catch/finally, 多重ループからの脱出等

・gotoを使わない為にがんばりすぎてはいけない
 ・バランスの悪い関数分割をしない
 ・他人の書いたソースを無理に書き換えない
 ・掲示板等でgotoを見つけても(そのことで)攻撃しない

・M$のソースを嫁
861仕様書無しさん:04/02/22 22:54
>>860
文句なし
完璧
862仕様書無しさん:04/02/22 23:06
できれば「goto使うな」の方も...
863仕様書無しさん:04/02/22 23:18
>>862
・一度しかループしないブロックにforを使ってはいけない
・for(i=0; i<1; i++)等




なんて言い方に意味あるか?
864仕様書無しさん:04/02/22 23:19
ifはgotoの糖衣構文なのか!?
それはともかく、糖衣構文にbreak, continueも入れといて(関数途中のreturnも入る?)
865862:04/02/22 23:40
gotoを使うなと主張している意見をまとめてくださいという意味でした
866まとめ:04/02/23 00:25
>>864
>ifはgotoの糖衣構文なのか!?
昔こんなコードをよく書いてたから個人的には構文糖なんだけど。
話が長くなりそうだから削っとくか。

100 IF A=1 THEN GOTO 120
 ・・・
110 GOTO 130
120 'ELSE
 ・・・
130 'ENDIF

>>862=>>865
採り上げるべきまともな主張が全く見当たらないんだけど。
37と愉快な仲間たちがなにか有益な主張をしてたんなら教えて。
867仕様書無しさん:04/02/23 00:36
>>866
それは if ではなく if goto だne
868仕様書無しさん:04/02/23 00:38
>>867
>if goto
こういう表現初めて聞いたんですけれでも
よかったら原典ご教授願えませんでしょうか
869仕様書無しさん:04/02/23 00:57
#define JMP(d) goto d;
870仕様書無しさん:04/02/23 09:42
if-then-gotoも構文糖だわな
871仕様書無しさん:04/02/23 10:26
>>868
確か、
if x then goto yy を if x then yy とgoto の方を省略出来るんだったような
いや、 then そのものを省略出来たんだったっけ?
あれはポケコンだったっかな?


872仕様書無しさん:04/02/23 11:42
>>866
>昔こんなコードをよく書いてたから個人的には構文糖なんだけど。
それはifの機能じゃないですよ。強いて言うならブロックの機能?
C言語ではifはif以外の構文を用いては実現できないんだから(関数ポインタでごにょごにょするの除く)、
プリミティブな構文の一つでしょう。したがって糖衣構文ではない。
873仕様書無しさん:04/02/23 11:46
>>872
if は 3項演算子やcaseで代用出来そうだが?

case( (a==b)&1){ 1:goto xx;};

874873:04/02/23 11:47
ハッ ・・・・休日のDel遊びのクセが
875仕様書無しさん:04/02/23 12:05
gotoは式ではないんで、3項演算子では使えませんな。
まぁ、3項演算子が「選択」の機能を持っているのは確かだが。

というか、極論すると、gotoもwhileもforもifもswitchも使わなくても3項演算子と関数のみで
全てのプログラムが記述できますよ、と(多分)。末尾再帰が無いのが残念だね!
876まとめ:04/02/23 12:13
ほら話が長くなったよw
おまいら正直gotoなんてどうでもいいんだろ・・・
877仕様書無しさん:04/02/23 12:23
わかってるんなら、そんな微妙な話題をまとめに入れるな、と。
しかもこのスレ敵に重要な、break, continueが入ってないし…
878仕様書無しさん:04/02/23 12:36
>>875
3項演算子無くても関数ポインタあればなんとかなるね
関数ポインタの配列添え字を演算で出せばいい
879仕様書無しさん:04/02/23 13:13
糖衣構文かどうかとう文脈上だと、それでは「なんとかなる」とは言わない予感。
同じようなことは実現できるけど、whileをgotoとifで書き換えるのとはレベルがちょっと違うよね。
880まとめ:04/02/23 13:18
論点はそこじゃないし。
はっきり言ってそんなのはどうでもいい話だな。
881仕様書無しさん:04/02/23 13:23
いや、論点はそこだよ。
はっきり言ってgotoの糖衣構文はbreak, continueだけだろう。
882まとめ:04/02/23 13:25
・・・本末転倒もいいとこだな
まぁ好きにしてくれ
883仕様書無しさん:04/02/23 13:29
???わけわからん。
まぁ、ifを糖衣構文だと言うくらいだからなぁ…
つっかかったオレが悪かったYO
88437 ◆7BXCxYvfIs :04/02/23 15:59
糖衣構文って「ある構文と等価でかつ人間にとって書きやすいように簡略化された構文」
(シンタックスシュガー)のことですね。
#読みやすいかどうかはケースバイケース
ifの場合、読みやすくも書きやすくもなりますけど・・・
「ifはgotoの糖衣構文」はあきらかにツリのような。

>>866 あなたもベテランですか・・・

>>872 そうですね

>>876
>gotoなんてどうでもいい
yes.仰るとおりです。しかしながら、goto禁止を唱える人の無明さは「どうでもいい」問題ではありません。
goto禁止が高品質(この場合の品質特性は可読性と保守性)なプログラムを書くための方法論の一部である
と思っているなら、なおさらです。
goto誤用をしたプログラムの保守で苦しいあるいは苦しんだという経験を軽視する訳ではないのですが、
「gotoを禁止すればgoto誤用はなくなる」という短絡的な判断をせずに、
goto誤用を防止するために、何をすればよいかを考えるべきだと思いますよ。
#まあ題材がgotoであるだけであって、cに話を限っても、「大域変数」「三項演算子」「論理構造化」「データ構造化」「識別子命名」
#等々の、粒度/レベルのさまざまな題材はほかにもありますね
#ありていに言えば「gotoなんてどうでもいい」と考える様になって欲しい

>>881
いや確かに、それは正しいのだけど・・・。釣られすぎのような・・・

#知らなかったなあ。私には「愉快な仲間」がいるのかあ
885仕様書無しさん:04/02/23 17:29
「何をすればよいか」の答えの一つがコードレビューですな。
まぁ、俺的にはプロジェクト員の構成によってはばっさり禁止しちゃっても
いいと思ってるが。
ただ、そういう何でもかんでも禁止という規約文化を他のプロジェクトに
輸出(というか俺の居るプロジェクトに輸入)して欲しくないなぁ。
886仕様書無しさん:04/02/23 22:02
ずっと疑問だったんだけど、gotoを禁止することでコードの品質が劇的に向上した、とかの事例って有るの?
887仕様書無しさん:04/02/23 23:09
>>886
劇的に悪化するのが防がれたかもしれない。
しかしそれは、シュレディンガーの猫だ。
888仕様書無しさん:04/02/23 23:26
>>887
は?シュレディンガーの猫?
言わんとすることはわかったような気がしなくもないけど、
それでもやはり用法を誤っているのではなかろうか。
あるいは、どこかの新しい猫ですか?
889仕様書無しさん:04/02/23 23:29
シュレディンガーの猫を検索してたらフィギュアに捕まっちゃって戻るのが
遅くなった。

>>887
なるほどね、観測(解釈)不能ってことか。
890仕様書無しさん:04/02/24 00:16
規約を導入せず惨憺たるコードが生成されてしまった例は枚挙に暇がないが、
その例で規約を導入したとしてもまともなコードになったかどうかはわからない。
規約を導入し、かつ、まともなコードが生産された例も枚挙に暇がないだろうが、
規約を導入しなかったら惨憺たる結果になってしまったか否かは検証不能。
・・・とこんなところか。

両方を体験して、有意に違いがあると言い切れる人はいないものか。
やっぱりgoto禁止(などの多くの規約)はただの気休め?
891仕様書無しさん:04/02/24 00:30
そう、生きているとも死んでいるともいえるのだ。
892仕様書無しさん:04/02/24 00:51
ところで、観測と言えば
893仕様書無しさん:04/02/25 02:07
同一仕様のプロジェクトをふたつやればいいだけでは?
要員の能力差が気になるなら、何個もやる。
巨額の資源が必要だけど(w
894仕様書無しさん:04/02/25 13:06
>>892
南極か・・・
895仕様書無しさん:04/02/25 22:05
>>894
南極といえば「けっきょく南極大冒険」【ループゲーム】。
goto スタート地点;
896仕様書無しさん:04/02/25 22:10
けっきょく南極大冒険といえば、夢大陸アドベンチャー。
こっちはショートカットgotoゲームだ。
しかも、ポーズ回数というグローバル変数によってエンディングが変わるという凶悪さ。
897ブッシュ大統領:04/03/15 15:14
三大悪の枢軸国の紹介
 C++帝國(北朝鮮) ← C++厨代表の正体は、何と! 金正日だった!
 VB帝國(イラン) ← VB厨代表はイランに潜伏していいた!
 Perl帝國(イラク) ← Perl厨代表フセインがついに逮捕された!
898仕様書無しさん:04/03/15 20:08
Java帝国(オウム) ← Java厨代表は何と!地図夫(趣味:ソフマップ通い)だった!
899仕様書無しさん:04/03/15 21:44
Ruby厨、OO厨、Lisp厨、Smalltalk厨、アセンブラ厨、HSP厨なども定義してくれ!
900900:04/03/15 21:49


  高 橋 と

   長 嶋 い な い

  ア テ ネ 五 輪


            ばせう

901仕様書無しさん:04/03/19 01:59
ニッポン勝った!
902仕様書無しさん:04/04/11 18:24
http://d.hatena.ne.jp/sasayuki/20031108

2003-11-08
■ [豆知識][プログラミング]

今、2chでは『Cでgotoを使わない理由を考察するスレ』ってのがあって、その中に↓のようなものがあった。

539 :仕様書無しさん :03/11/02 05:42

さっき最近自分が書いたコードを眺めてみたが、2000行中gotoは一個も無かったなぁ。VC。

BASICでgoto 行番号なんて書いてたのは今思うと狂気の沙汰だと感じる。再利用性なんて考えたことも無かったあの頃。

今更goto使うところなんて無いんじゃない?エラー処理もtry〜catchやdo〜break〜while(false)で代用できるし。

do〜break〜while(false)で代用ってのは思いつかなかったなぁ。一応覚えておこう・・。gotoのないphpなんかではこれ使ってgotoを実現できるんだろうなということもメモ。
903仕様書無しさん:04/04/11 18:24
こいつ頭悪そうだな。オブジェクト指向くらいちゃんと学べや
904仕様書無しさん:04/04/11 19:11
>>903
>オブジェクト指向くらいちゃんと学べや
って言いたかっただけでしょ?

do〜while(0); は何がしたいのかを的確に表してないから
避けるのが無難。
素直にブレークダウンさせれ。
905仕様書無しさん:04/04/12 02:34
do 〜 while構文を本来と違う意味に捻じ曲げて使ってまでgotoをなくしたいのかよw

・・・とか反論されたレスだな。
906仕様書無しさん:04/04/13 15:47
結局、所詮 C なんだから goto 使おうが使うまいが関係ねーって
907仕様書無しさん:04/04/13 18:06
まああれだ、Cすらまともに扱えないマは自然淘汰されるって事で。
908仕様書無しさん:04/04/15 02:58
まぁ、gotoや大域ジャンプを使っても大概問題ない使い方が、
最新の言語で言語仕様として取り込まれてるんだから、
その辺を参考にしろってこった。
909仕様書無しさん:04/04/15 09:24
つーか、goto使ってソースが複雑になるのは低能力なマが原因。
だから、むしろgotoを使わせてスパゲッティーコード書く奴を あ ぶ り 出せ。

ちなみにミートソース・スパゲッティーは自分でソース作るほど大好きだがな。
910仕様書無しさん:04/04/17 01:44
もれはスパゲッティ・ミートソースだな
911仕様書無しさん:04/04/20 11:55
レバニラとニラレバ
ライスカレーとカレーライス
912仕様書無しさん:04/04/22 02:24
ソックリとクリソツ
ハワイとワイハ
913仕様書無しさん:04/04/28 13:41
スパゲッティ・アルゲリータ
914仕様書無しさん:04/05/13 20:30
>>909
経験不足がバレバレ。
915仕様書無しさん:04/05/13 21:37
>>909
入れ子のswitch〜caseの下から抜け出す時とかたまに使うぞ。
仕事で組んだこと無いんだろ?
916仕様書無しさん:04/05/14 12:14
傾向として、「組む」と表現する奴はかなり素人に近い。
しかし >>915 にはそれ以前に
>>909
>ソースが複雑になるのは
日本語が読めない。という大きな問題がある。
917仕様書無しさん:04/05/14 12:25
入れ子のswitch〜caseを平気で作れる時点で
自分は無能だと自白しているようなものだが。
91837 ◆7BXCxYvfIs :04/05/14 15:56
>>917
多分岐の入れ子は確かに感心しないですね。「無能である」とは思いませんが。
「関数単体の複雑さを、どの程度まで低減させるべきか」についての認識が違うのでしょう
プログラムの構造設計自体に問題がありますね
919仕様書無しさん:04/05/14 19:45
>>918
昔のWinProc では結構良く見たけどね。
Msg で一段 wParam で一段って作り。
920名無し@沢村:04/05/14 20:11
おまいらよ、Cでgoto使わなくたって、goto使ったバイナリコードに翻訳されるんだから、同じことだよ。
921名無し@沢村:04/05/14 20:20
break文、cotinue文などはすべて、goto文のバイナリに翻訳される。
またfor文、while文、switch文などを使うと、必ずバイナリにgoto文が混じることになる。
強いていえばif文とelse if文は注意深く書けば、無条件分岐のgoto文を使わず、すべて条件分岐文だけで澄まされる可能性がある。
だがif文の最後にelse文をつけるな。elseを書いたら、必ずgoto文が使われるぞ。
おまいらよ、これがバイナリにgoto文を使わない方法だ。
922仕様書無しさん:04/05/14 20:32
ソースは「プログラム」ではありません
ソースは「プログラムの表記」です
923仕様書無しさん:04/05/14 20:33
プログラム
〔program=「実行に先立ってその手順を書いたもの」の意〕
1 〔演芸・放送などで〕出し物の名と順序・時刻などを書いたもの。プロ。
2 計画。予定。また、それを表にしたもの。
3 ―する コンピューターに実行させる△計算(処理)の手順を、コンピューターに受け入れ可能な一連の命令文の形で並べて△書いたもの(書くこと)。コンピュータープログラム。
用例・作例
―を組む〔=作る〕


Shin Meikai Kokugo Dictionary, 5th edition (C) Sanseido Co., Ltd. 1972,1974,1981,1989,1997
924仕様書無しさん:04/05/14 21:17

 goto使ったからって、コードの見通しや見栄えにさほど影響は
ない。ただし、俺は最初にBASIを覚えてコードを書いていたので
使いたくない。一種のトラウマですな。

925924:04/05/14 21:19

 BASI ってなに?
 BASIC です。疲れているのか、今日はいつ帰れるのか・・・・・・・
926名無し@沢村:04/05/14 21:23
>>924
>goto使ったからって、コードの見通しや見栄えにさほど影響はない。

さほどじゃねーよ。全々影響ねーよ。
goto使わなくたって、バイナリじゃgotoが出てくるんだからよ!!
927名無し@沢村:04/05/14 21:29
WinMain関数をバイナリレベルで見ると、いきなり最初のコードがgotoって知ってるか?
928仕様書無しさん:04/05/14 22:28
>>926
>goto使わなくたって、バイナリじゃgotoが出てくるんだからよ!!

なら、全てのプログラミング言語はバイナリコードに翻訳されるんだから、
プログラミング言語なんてものは不要だな。
929名無し@沢村:04/05/15 05:17
オブジェクト指向も同じこと。
いくらソースレベルでオブジェクト指向やって知的ぶったって、
バイナリじゃオブジェクト指向になってないんだから意味ねーよ。
930仕様書無しさん:04/05/15 06:36
gotoといっても、使い方次第。
やたらと使うものではないが、goto使ったほうが奇麗に
処理できるものもある。
ただ、バイナリになればgotoが出てくるというのは
おかしい議論だな。
C言語のソースと、それがコンパイルされたオブジェクトを
比較するのは、ちょといきすぎだと思うぞ。

>>928>>929は、まあ、煽りなんだが、どうしたんだい?
何かいやなことでもあったかい?
931仕様書無しさん:04/05/15 08:10
>>930
多重ループからの脱出ではきれいに書けると聞いたことがあるが、
仕事してて使ったことは一度もない。

昔、仕事していたところで、
あの人のソースgoto使っているんだって初心者だねえ、という発言を聞いたことあるし、
同じ時期、gotoを使わないでください、っていうアナウンスが流れた。

>>1
マジレスすると、Cが構造化プログラミングで設計されているから。それだけでしょ。
LISPで安易にループを使うと馬鹿にされるのといっしょ。
932仕様書無しさん:04/05/15 08:42
>>930
沢村はそういうキャラなので放置してください。
こいつの面白いところは天然バカなのかマジなのか、判断を迷わせる部分なので(w
933仕様書無しさん:04/05/15 09:26
>>932=沢村
>こいつの面白いところは天然バカなのかマジなのか、判断を迷わせる部分なので(w

それを面白がっているのはお前だけだよ
934仕様書無しさん:04/05/15 09:46
>>933

>>932=沢村 とか書いてる時点でかなりバカ。
935仕様書無しさん:04/05/15 14:00
>>931
マジレスすると、Cでgoto使わざるをえない所なのに無理して使わないのはアフォだって>>1は。それだけでしょ。
936仕様書無しさん:04/05/15 16:01
>>935
マジレスなんかすんな。
>マジレスすると、Cが構造化プログラミングで設計されているから。それだけでしょ。
>LISPで安易にループを使うと馬鹿にされるのといっしょ。
こんな事言ってる奴だぞ、>>931 は。
937仕様書無しさん:04/05/15 16:45
>>936
なんか間違ったことでも言ったか?
938仕様書無しさん:04/05/16 00:19
>>937
「構造化プログラミングで設計」が既に意味不明だが、
C の言語仕様の何処が構造化プログラミングに関係しているのか
説明してもらうかな。
…構造体があるから、とか言うなよ。
あと制御構造なら FORTRAN からあるからな。
939仕様書無しさん:04/05/16 01:15
>>938
偉そうにw
制御構造があるからに決まっているだろ。
FORTRANの頃からあるから何だって?
構造化プログラミングの提唱はFORTRANよりも後かもしれないが、
制御構造を取り入れているということは、順次、分岐、繰り返しで書ける事を
経験的に取り入れているのは明らかだろ。
まあ、俺が知っているFORTRANの仕様は77だけどな。
940939:04/05/16 01:20
むかつくのでこのスレはもう見ない。
941仕様書無しさん:04/05/29 11:40
>>931
>仕事してて使ったことは一度もない。

おまいさんの言うgotoとはジーオーティーオーという綴りのことか?
フラグ立ててreturnの連鎖を作ったり、if breakだの、ループの途中でreturnだの、
やらない人の発言には聞こえないな

ぬるぽの中の人が後藤さんだってことに気づいてないやつ痛杉


>あの人のソースgoto使っているんだって初心者だねえ、という発言を聞いたことあるし、

聞いたことあるのは解ったが、肝心なことが書かれていない
つまり、お主のリアクションはどうだったかと・・・
ちなみに正解は (プ


>Cが構造化プログラミングで設計されているから

SP用に設計されてるってのは間違ってないのに
安易な表現で書くと、ほら馬鹿にされた・・・
SP用に設計された言語の特徴が人に聞かなきゃわかんないレベルの人にまでw
942仕様書無しさん:04/05/29 11:54
GOTO禁止でいいだろ
おしまい
94337 ◆7BXCxYvfIs :04/05/29 12:11
・・・エンドレスだなぁ
「こんなところで禁止なんて決めても何の意味もない」って何度いえば理解できるんだか
まあ自分の考えを表明するのは勝手だけどね
944仕様書無しさん:04/05/29 12:21
printf("gotoの使いすぎです。\n")
goto 943;
945仕様書無しさん:04/05/29 12:25
>>944
セミコロンが抜けてるぞ
946仕様書無しさん:04/05/29 18:44
switch caseで状態遷移を表現していると、遷移条件が複雑になった場合、
caseもラベルの一つだから、どこからジャンプしてきたのかわからなくなり、
結局、gotoを使ったのと同じややこしさになる。
プログラムを一読しただけではフローが思い浮かべられなくなる。
947仕様書無しさん:04/05/29 18:50
>>946
必ずbreak;を書くようにして串刺し実行をさせないようにしてればgoto的なデメリットにはならないよ
つーか巨大なswitch見てると関数ポインタ使えないアフォをぶん殴りたくなる
948仕様書無しさん:04/05/29 19:03
>>947
> >>946
> 必ずbreak;を書くようにして串刺し実行をさせないようにしてればgoto的なデメリットにはならないよ

breakはしてるけど、次のステートへの遷移条件が

case HOGE0:
 if(foo == 0){
  state = HOGE1;
 }else{
  state = HOGE2;
 }
 break;
だったりするので、いまいち。

> つーか巨大なswitch見てると関数ポインタ使えないアフォをぶん殴りたくなる

ぶん殴りたくなるようなプログラムのデバッグを、今、してるところ_| ̄|○
こんなの書くなよ、ホントに。。。
949仕様書無しさん:04/05/29 19:33
つかレベル低すぎ、このスレ。
950仕様書無しさん:04/05/29 19:38
>>942
空白あけろ ぼけ
951仕様書無しさん:04/05/29 19:42
>>948
stateが待ち行列じゃないとこ腐臭がするな
952仕様書無しさん:04/05/30 09:40
>>949
× このスレ。
○ この板。

まあネタ隔離板だしな。
953仕様書無しさん:04/05/30 09:57
自分はレベル高いって言いたそうだなw
954仕様書無しさん:04/05/30 11:36
>>948
そんなあなたに>>433の糞(と呼ぶ人が多い)コード
955仕様書無しさん:04/05/30 14:49
>948
おまいのコードを見て同じこといってるやしが・・・
956952:04/05/31 23:43
>>953
それは被害妄想ってもんですよ。
957仕様書無しさん:04/06/05 17:18
#define gogo goto

これでgotoつかうのが楽しくなるだろ。
958仕様書無しさん:04/06/05 22:46
( ´・∀・`)へー
959仕様書無しさん:04/06/05 23:01
#define itteyoshi goto

のがいいな
960仕様書無しさん:04/06/06 01:09
#define orz goto hell
961仕様書無しさん:04/06/07 21:58
テスターに嫌な奴がいる時はこれがお勧め
#define goto if(rand()%100>=5) goto
962仕様書無しさん:04/06/08 20:20
#define orz goto hellBOOL foo_func(){  :  if (doHoge(....) == FALSE)    orz;  if (doHage(....) == FALSE)    orz;  :  return TRUE;hell:  abort();}
963仕様書無しさん:04/06/12 13:27
Cでgotoを使わない理由は...ない!
964仕様書無しさん:04/06/12 13:28
Cでgotoを使う理由は...ある!
965仕様書無しさん:04/06/12 13:28
Cでgotoを使わなければいけない理由も...ない!
966仕様書無しさん:04/06/12 14:46
Cで、なんでここでgoto使ってんだヴォケ、とか、どうしてここでgoto使わねーかな(w、とかは...たまにある
967仕様書無しさん:04/06/12 19:43
ところでこのスレって、アンチ goto 派の中で、拡張 goto、(つまり return, break とか) まで
禁止する or したいと思っている人ってどのくらい居るの?
968仕様書無しさん:04/06/13 17:51
あれのどこが拡張だよw
縮小だろうがよ
禁止って用語は論点先取
始める前に終わってる議論だ
969967:04/06/13 18:22
制限付 goto だったかスマソ
970仕様書無しさん:04/06/14 19:38
全く無制限
最長不倒プログラムへの
自衛策をやっていると
結果的に頻度が下がる
971仕様書無しさん:04/07/17 22:29
>>963-965

他にいろいろ立てたら?
Cでifを使わない理由を考察するスレ
Cでwhileを使わない理由を考察するスレ
Cでforを使わない理由を考察するスレ
Cでdoを使わない理由を考察するスレ
Cでswitchを使わない理由を考察するスレ
Cでbreakを使わない理由を考察するスレ
Cでcontinueを使わない理由を考察するスレ
Cでstructを使わない理由を考察するスレ
Cでunionを使わない理由を考察するスレ
Cでintを使わない理由を考察するスレ
Cでfloatを使わない理由を考察するスレ
Cで#defineを使わない理由を考察するスレ
972仕様書無しさん:04/07/20 01:12
CでCを使わない理由を考察するスレ






...C++でつよ、それ。Cとは違いますってば。
973仕様書無しさん:04/07/20 22:13
>>972
なにが「でつよ」だC++だからC的記述を排除するスレ
の方がおもろいぞ。
974仕様書無しさん:04/08/18 21:41
恣意的な記述
975仕様書無しさん:04/08/19 12:29
問題はgotoとbreakとコンパイルした時どっちがバイナリ小さくなるかじゃないのか?
ケースバイケースで使い分けろよ
976仕様書無しさん:04/08/19 14:45
また変なのが現れた。
977仕様書無しさん:04/08/19 22:08
すこしほのぼのするけどw
978仕様書無しさん