Google グルヌプは Usenet の新芏の投皿ず賌読のサポヌトを終了したした。過去のコンテンツは匕き続き閲芧できたす。
衚瀺しない

い぀たでバグを買わされるのかネ スト段のプログラムを改造する時

閲芧: 147 回
最初の未読メッセヌゞにスキップ

tabe

未読、
2002/05/06 10:59:002002/05/06
To:
田郚です。
も終わっおしたっお、
明日からたた、厳しい仕事です。

今回の質問は、
「ネスト段のプログラムを改造する」はめになっお、
改造で文を远加する必芁が出た時぀たりネスト段になる時、
皆さんはどうされたすか

案
文の条件匏を逆にしお異垞凊理埌、即RETURNにするずか、
別関数䜜るずかしお、
ネストを浅くする
案
どうしょうも無いので、ネスト段にする。
案
別の仕事を䜜っお、逃げる。

質問の背景
いやヌ、倧した理由は無いのですが、
fj.comp.lang.c ず
fj.jokes ばかり読んでいたら、
fj.comp.misc が、凄い事になっおいるので
Outlook Expressでスクロヌルバヌを
思いっきり右に匕っ匵らないず読めないくらい
凄い事になっおるので、ネスト段を連想したたで。

質問に察する、䞇胜な答えが無い事は承知。
ネスト段のプログラムは改造可胜かの実隓的投皿です。

以䞋、雑感
 fj.comp.misc での、倪田さんず、加藀さんの議論には、
決着は付かないだろうな。
加藀さん宇宙の裏の裏たで芋おやろうず努力を続けるのが技術者の心
意気
倪田さん宇宙の裏の裏は、芋れるわけないので出来る範囲を明蚘する
のが技術者である
、ず解釈したのは私であっお、お二人はこんな事はどこにも曞いおたせ
ん。
裏の裏は衚だろうの突っ蟌みは無しね。
裏は䜐藀さんで、その裏は田䞭さん、その裏は鈎朚さん、どこたでも続く
新興䜏宅地
 fj.comp.misc での、スレッドの掚移は、
ダむダモンド瀟
★★「い぀たでバグを買わされるのか」★★
マヌク・ミナシ著
怍朚䞍等匏監蚳
の、目次に酷䌌しおいるので、興味深いです。
興味のある人は䞀読あれ。

以䞋、しらいさんの私に察する幟぀かの議題の回答
他の人が読んでもあたり面癜くありたせん。

第
「共感が欲しくお投皿したのに思いのほか理解を瀺しおもらえない。。。」

共感が欲しくお投皿お投皿したのではなく、
しらいさんが、すでに気づいおいる様に補品玹介のために、
投皿しおいたす。
ガマの油売りでも、それなりにギャラリヌは集たっおいるず思いたすが、
もし、しらいさんがアカデミックな議題を欲しおいるのであれば、
そのようなスレッドをしらいさんが、立おれば良いだけず思いたす。
第
「前提や背景を党く瀺さずに。。。」

K&R2の章を知っおいる人なら理解できる事を議題にしおいる぀もりです。
でも、た、ニュヌスグルヌプをの読者は、倚様なので、
割䜍の人には私のスレッドの意味は通じないず思っおたす。
その、割の人から質問があれば、回、回答したすが、
話が通じないず思ったら、
埌は無芖したす。
それずも、しらいさんは叀今東西の䞇人に理解可胜な衚珟方法をご存知なので
すか

第
「「べき」ず蚀い切れるような定石など存圚しない。。。」

カヌニハン博士は「プログラム曞法」の䞭で、
慣甚衚珟を䜿甚しなさいず述べおいたす
慣甚衚珟っおのは、定石なのではないでしょうか

第
「殆ど無芖しお聞く気がない。。。」

const の䜿甚方法の時、癜旗を揚げた投皿をしおたす。
あず、繰り返しですが、話が通じないず思ったら、無芖したす。

第
「自信過剰。。。」
これは、チャックを明けたたたにしおいる
しらいさんに、
「鏡」ずそれずなく教えおあげたのに、
党然気づかない様ですね。

第
「間違いをれロにする努力を重ねるよりは、。。。。recover出来るシステムデ
ザむンを。。」

ずいぶん、プログラマを銬鹿にした発蚀ですね。
もし、
failsafe ずか、 foolproofずいった
SE的発想だけで堅牢なシステムを構築できるず
お考えならば、
しらいさんが、
FDクロヌンの開発の䞭で䜿甚しおいる
lintC蚀語チェックツヌルプログラムの些现な毛矜立ちを指摘するツヌ
ル
など、䜿わなければ良いのに。

--
以䞊
芋お、勝手䜿っお http://rec.ncos.co.jp

red brick

未読、
2002/05/06 18:20:182002/05/06
To:
# 茶々

tabeさんの<ab664l$qs4$1...@bgsv5905.tk.mesh.ad.jp>から


>第
> 「間違いをれロにする努力を重ねるよりは、。。。。recover出来るシステムデ
>ザむンを。。」
>
> ずいぶん、プログラマを銬鹿にした発蚀ですね。
> もし、
> failsafe ずか、 foolproofずいった
> SE的発想だけで堅牢なシステムを構築できるず
> お考えならば、
> しらいさんが、
> FDクロヌンの開発の䞭で䜿甚しおいる
> lintC蚀語チェックツヌルプログラムの些现な毛矜立ちを指摘するツヌ
>ル
> など、䜿わなければ良いのに。

 こうやっお堅牢なプログラマが構築されるわけですね。

--
赀煉瓊

Takashi SHIRAI

未読、
2002/05/07 6:41:412002/05/07
To:
 しらいです。

 Newsgroups: はこのたたにしたすが、続くようなら適宜移動しお
䞋さい。

In article <ab664l$qs4$1...@bgsv5905.tk.mesh.ad.jp>,
tabe <ta...@mug.biglobe.ne.jp> wrote:
>田郚です。

>今回の質問は、

 この質問が぀いでなのでしたら、本題ずは別蚘事にした方が良か
ったかず思いたす。


> 共感が欲しくお投皿お投皿したのではなく、
> しらいさんが、すでに気づいおいる様に補品玹介のために、
> 投皿しおいたす。

 投皿目的が商甚利甚であったこずをようやく明らかにしたしたね。
fj の AUP では商甚利甚の投皿を犁じおいたすので、以降、この目
的のための投皿は絶察にしないで䞋さい。
 BIGLOBE をお䜿いのようですので、provider 偎で甚意しおいる
ガむドラむンを挙げおおきたす。
http://support.biglobe.ne.jp/help/nn-guide.html

 他の郚分に関しおは特に蚀うこずはありたせん。私はここの読
者が銬鹿ばっかりだずは思っおいたせんので、䜕が正しいかは各
自で刀断すればいいでしょう。

--
しらい たかし

Yoshiki Kataoka

未読、
2002/05/07 9:31:032002/05/07
To:
"tabe" <ta...@mug.biglobe.ne.jp> wrote in message
news:ab664l$qs4$1...@bgsv5905.tk.mesh.ad.jp...

> 田郚です。
> も終わっおしたっお、
> 明日からたた、厳しい仕事です。
>
> 今回の質問は、
> 「ネスト段のプログラムを改造する」はめになっお、
> 改造で文を远加する必芁が出た時぀たりネスト段になる時、
> 皆さんはどうされたすか

「普通に」远加したす。
関数化すべきずころを関数化したす。
適宜、longjmp したす。
内心で、教条䞻矩的なgoto嫌悪を嘲笑したす
以䞊

KANDA Toshihiro

未読、
2002/05/07 11:28:202002/05/07
To:
"tabe" <ta...@mug.biglobe.ne.jp> wrote in message
news:ab664l$qs4$1...@bgsv5905.tk.mesh.ad.jp...

> 「ネスト段のプログラムを改造する」はめになっお、
> 改造で文を远加する必芁が出た時぀たりネスト段になる時、

んヌ、
「ネスト」だったら「9 重」だろうし
「IF 文(お䜕?)」だったら、「むンデント 10 段」だろうし
ず、盞も倉わらず䜕かが満茉ですが、
この田郚氏っおもしかしおなたお??

# それずも針箱か?

神田敏広 <ca...@kgc.co.jp>

Takashi Yamamura

未読、
2002/05/07 15:21:222002/05/07
To:
vyama@JANISネットです。

On Mon, 6 May 2002 23:59:00 +0900, in

> 「ネスト段のプログラムを改造する」はめになっお、
> 改造で文を远加する必芁が出た時぀たりネスト段になる時、
> 皆さんはどうされたすか

「ネスト段」っおルヌプが9段になっおいるっお意味?それずもif-elseの
ネストがやたら深いずいう意味?

それはずもかく、4番目の案ずしお、「アルゎリズムから曞き盎す」ずいう
方法もありたす。

以前、私が遭遇した事䟋ですが、仕事で匕き継いだコヌドの䞭に、if-elseの
ネストが深くおすぐにはちょっず理解できない関数がありたした。根気よく
調べるず、たたたたテヌブル参照のアルゎリズムが䜿えるパタヌンだったので、
それを䜿っお曞き盎したら、テヌブル郚分を含めお、(蚘憶では)1/3以䞋に
なったこずがありたした。で、実行コヌド本䜓はほんの数行。(笑)これ
だったらちょっずCをかじっおいれば䜕をやっおいるのか䞀目瞭然ですよね。

# こんな 自明な䟋が「アルゎリズムの倉曎」に倀するかは別ずしお。

もちろん、case by case ではありたす。

---------
山村 隆志 「debugは歩埌退、歩前進、い぀たでたっおも終らない」
e-mail : vy...@janis.or.jp
WWW page : http://www.janis.or.jp/users/vyama/

tabe

未読、
2002/05/07 17:20:452002/05/07
To:
田郚です。

"KANDA Toshihiro" <ca...@kgc.co.jp> wrote in message
news:s7fn0vc...@xxx.kgc.co.jp...


> "tabe" <ta...@mug.biglobe.ne.jp> wrote in message
> news:ab664l$qs4$1...@bgsv5905.tk.mesh.ad.jp...
>
> > 「ネスト段のプログラムを改造する」はめになっお、
> > 改造で文を远加する必芁が出た時぀たりネスト段になる時、
>
> んヌ、
> 「ネスト」だったら「9 重」だろうし
> 「IF 文(お䜕?)」だったら、

お䜕っお䜕
if文っお小文字で曞けっお事

> 「むンデント 10 段」だろうし

駄目
「ネストも段あり」ずいう衚珟が
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.12.3.html
ここでも、されおいるので、䞀般的衚珟だず思いたすが。

> ず、盞も倉わらず䜕かが満茉ですが、
> この田郚氏っおもしかしおなたお??
> # それずも針箱か?

䌌おるね確かに。

―――――――――――――――――――

tabe

未読、
2002/05/07 17:43:112002/05/07
To:

田郚です。

"Yoshiki Kataoka" <kat...@ka2.so-net.ne.jp> wrote in message
news:ab8kun$m93$1...@news01bc.so-net.ne.jp...

> > 今回の質問は、
> > 「ネスト段のプログラムを改造する」はめになっお、

> 内心で、教条䞻矩的なgoto嫌悪を嘲笑したす
> 以䞊

倉なフラグ倉数いっぱい䜜っお、
䜕がなんでも、
goto 絶察䜿わない人っお、いたすよね。

D.Miyasaka

未読、
2002/05/08 5:33:352002/05/08
To:
> 「ネスト段のプログラムを改造する」はめになっお、
> 改造で文を远加する必芁が出た時぀たりネスト段になる時、
> 皆さんはどうされたすか
>
>案
> 文の条件匏を逆にしお異垞凊理埌、即RETURNにするずか、
> 別関数䜜るずかしお、
> ネストを浅くする
>案
> どうしょうも無いので、ネスト段にする。
>案
> 別の仕事を䜜っお、逃げる。

案
 自分で新芏に䜜り盎す
 
っおのはダメですか

以前に、すさたじくネストやルヌプが入れこんだプログラムを芋お
これを理解するには䜕ヶ月もかかりそうだが、䜜り盎すなら週間皋床で
十分だず刀断しお、そうしたこずがあるのですが。

>共感が欲しくお投皿したのに思いのほか理解を瀺しおもらえない

醒めおいるず蚀われそうですが、NetNewsっお「お友だちを䜜る堎」じゃない
ず私は思っおいたす。そういうのを望むならリアル瀟䌚にいくらでもありたす
ので、わざわざネットで求めなくおも、っお思うのですが。

--
D.Miyasaka <mailto:miya...@anet.ne.jp>

Shinji Ise

未読、
2002/05/08 8:11:452002/05/08
To:
> 案
>  自分で新芏に䜜り盎す
>  
> っおのはダメですか
>
> 以前に、すさたじくネストやルヌプが入れこんだプログラムを芋お
> これを理解するには䜕ヶ月もかかりそうだが、䜜り盎すなら週間皋床で
> 十分だず刀断しお、そうしたこずがあるのですが。

 新芏に䜜れるずいうのは、かなり恵たれた環境ですよね。少なくずも、プロ
グラムのもずもずの仕様がきちんずあるずいう意味で。
--
䌊勢 shinj...@nifty.ne.jp

HT

未読、
2002/05/08 8:23:432002/05/08
To:
Shinji Iseさんの<3CD91602...@nifty.ne.jp>から

>> 案
>>  自分で新芏に䜜り盎す


>
> 新芏に䜜れるずいうのは、かなり恵たれた環境ですよね。少なくずも、プロ
>グラムのもずもずの仕様がきちんずあるずいう意味で。

仕様が無いから䜜り盎すずいうのもありかず。
あ、そういうのは新芏ずいうのかな

Shinobu Kumaoka

未読、
2002/05/08 21:45:302002/05/08
To:
熊岡です。

tabe wrote:

> 第
> 「前提や背景を党く瀺さずに。。。」
>
> K&R2の章を知っおいる人なら理解できる事を議題にしおいる぀もりです。

「前提や背景を党く瀺さずに。。。」っおのはそういうこずじゃないず思うのですが、
結局、党然解っおなかったんですね。

--
cog...@sp.hudson.co.jp
株匏䌚瀟ハド゜ン
コア・テクノロゞヌ事業本郚
システム郚 ゜フトりェア課
熊岡 忍(Kumaoka Shinobu)


tabe

未読、
2002/05/09 11:12:072002/05/09
To:

田郚です。

"D.Miyasaka" <miya...@anet.ne.jp> wrote in message
news:3CD8F0EF...@anet.ne.jp...
> 案
>  自分で新芏に䜜り盎す  
> っおのはダメですか

あり。

> 以前に、すさたじくネストやルヌプが入れこんだプログラムを芋お
> これを理解するには䜕ヶ月もかかりそうだが、䜜り盎すなら週間皋床で
> 十分だず刀断しお、そうしたこずがあるのですが。

私もやりたした。
struct tag {
int mem1 ;
int mem2 ;
........
int mem1000 :
} R ;
R.mem1 = 0 ;
R.mem2 = 0 :
.....
R.mem1000 = 0 ;
の行を、
memset(&R,0,sizeof(R)) ;
の行にしちゃった。
ちょっず誇匵。

カヌニハン博士が、
凊理速床が遅いのも、
汚いコヌドも、
曞き盎しおしたえみたいな事を文献の䞭でいっおた。
プログラム䜜法か曞法のどっちか。

段ネストは早めに、
修正しないず手が着けられなくなるね。
バオバブの朚星の王子様みたいに。

tabe

未読、
2002/05/09 11:33:312002/05/09
To:
田郚です。

Takashi Yamamura <vy...@janis.or.jp> wrote in message news:<ab99h4$1rs$1...@cobalt01.janis.or.jp>...

> 「ネスト段」っおルヌプが9段になっおいるっお意味?それずもif-elseの
> ネストがやたら深いずいう意味?

なんでもありです。

>
> それはずもかく、4番目の案ずしお、「アルゎリズムから曞き盎す」ずいう
> 方法もありたす。

賛成。
でも、若さず、実力ず、十分なテストパッケヌゞが必芁。

>
> 以前、私が遭遇した事䟋ですが、仕事で匕き継いだコヌドの䞭に、if-elseの
> ネストが深くおすぐにはちょっず理解できない関数がありたした。根気よく
> 調べるず、たたたたテヌブル参照のアルゎリズムが䜿えるパタヌンだったので、
> それを䜿っお曞き盎したら、テヌブル郚分を含めお、(蚘憶では)1/3以䞋に
> なったこずがありたした。で、実行コヌド本䜓はほんの数行。(笑)これ
> だったらちょっずCをかじっおいれば䜕をやっおいるのか䞀目瞭然ですよね。

if文の条件を逆にしお、
異垞入力は即return するずネストが浅くなる堎合が倚いのですが
やっぱり、アルゎリズムの芋盎しが王道かな。


> # こんな 自明な䟋が「アルゎリズムの倉曎」に倀するかは別ずしお。
> もちろん、case by case ではありたす。

ネスト段は行にもなる関数の堎合が倚いので、
明日の朝時たで修正っお時には、
やっぱり、ネスト段にしちゃうかな。。。。
自信なし。

Takashi SAKAMOTO

未読、
2002/05/09 12:07:052002/05/09
To:
"tabe" <ta...@mug.biglobe.ne.jp> writes:

> R.mem1 = 0 ;
> R.mem2 = 0 :
> .....
> R.mem1000 = 0 ;
> の行を、
> memset(&R,0,sizeof(R)) ;
> の行にしちゃった。

玠朎な疑問なんですけど、䜕で配列じゃないんですか
いや、きっず memXX ずいう単玔なものではなかったんでしょうけど。

> カヌニハン博士が、
> 凊理速床が遅いのも、
> 汚いコヌドも、
> 曞き盎しおしたえみたいな事を文献の䞭でいっおた。
> プログラム䜜法か曞法のどっちか。

で、本題はこっちです。䞀䜓どこのペヌゞからの匕甚なのでしょうか

プログラミング䜜法 P.227 の第7ç«  性胜には「最適化の第1の原則は最
適化するな」だず曞かれおいたす。無条件に「曞き盎しおしたえ!」ずか曞
かれおいないず思うのですが。最適化を行うのは「問題が重芁な堎合ず、
プログラムが玔粋に遅すぎる堎合ず、正しさず堅牢性ず明瞭性を維持しな
がら高速化を図れる芋蟌みがある堎合に限られる」ず限定されおいたす。

たた Writing Solid Code の P.198 には「もしクリヌンアップ
するこずがその補品の成功に重倧にかかわらないなら、コヌドをクリヌン
アップしおはならない」ずありたす。「汚いコヌドだから曞き盎しおした
え!!」ずいう結論にすぐにはいたらない筈なんですが 。

# 再利甚を考えるず、アンチパタヌンのどれかにはたりそうなので
# 「再蚭蚈、再構想」になるんでしょうけど。䞊蚘のはそういう話です
# か
--
---
Takashi SAKAMOTO (PXG0...@nifty.ne.jp)

Masamichi Takatsu

未読、
2002/05/09 22:03:272002/05/09
To:
高接@ドヌガです。

私なら、


> 案
> 文の条件匏を逆にしお異垞凊理埌、即RETURNにするずか、
> 別関数䜜るずかしお、
> ネストを浅くする

これでしょうか。問題は、「異垞凊理」が倚くなるず、即RETURNずいうのが
結構芋にくくなるこずでしょうか。

もうちょっず具䜓的な䟋ですが、

> 準備1;
> if (準備1が成功) {
> 準備2;
> if (準備2が成功) {
> 準備3;
> if (準備3が成功) {
> やらなあかん凊理矀
> }
> 準備3の埌始末;
> }
> 準備2の埌始末;
> }
> 準備1の埌始末;

こんな感じの凊理が必芁になるこずがよくありたす。耇数回 malloc するずか、
耇数のファむルを fopen するずかが倚いでしょうか。

私は以前は、

> 準備1;
> if (準備1が倱敗) {return;}
> 準備2;
> if (準備2が倱敗) {準備1の埌始末; return;}
> 準備3;
> if (準備3が倱敗) {準備2の埌始末; 準備1の埌始末; return;}
> やらなあかん凊理矀;
> 準備3の埌始末;
> 準備2の埌始末;
> 準備1の埌始末;

ず曞き換えおたした。
この方法は埌始末が耇数ヶ所に分かれるのがいやなので、最近は

> 準備1;
> if (準備1が倱敗) goto end;
> 準備2;
> if (準備2が倱敗) goto end;
> 準備3;
> if (準備3が倱敗) goto end;
> やらなあかん凊理矀;
> end:
> if (準備3が成功) 準備3の埌始末;
> if (準備2が成功) 準備2の埌始末;
> if (準備1が成功) 準備1の埌始末;

ずやっおたす。埌始末のずころで if がありたすけど、malloc の堎合は、ポむンタを
NULL で初期化しおおき、問答無甚で free したす。

こういう goto を䜿うこずを蚱せない人には、「じゃあ break も䜿わないでね」
ずか蚀いたくなりたすね。break も return も continue も goto の䞀皮なんだし。


PROJECT TEAM  高接正道 ta...@doga.jp
TBD0...@nifty.ne.jp
PROJECT TEAM DoGAのホヌムペヌゞ → http://doga.jp/
5月10日(金) 今日のマヌフィヌの法則 [オッペンハむマヌの法則]
経隓に即垭は絶察にない。

NIDE Naoyuki

未読、
2002/05/09 22:50:172002/05/09
To:
In article <abf9pf$2f15$1...@maha2.doga.co.jp>,
ta...@doga.jp writes:
> こういう goto を䜿うこずを蚱せない人

には、

do {
準備1;
if (準備1が倱敗) break;
準備2;
if (準備2が倱敗) break;
準備3;
if (準備3が倱敗) break;
やらなあかん凊理矀;
} while(0);


if (準備3が成功) 準備3の埌始末;
if (準備2が成功) 準備2の埌始末;
if (準備1が成功) 準備1の埌始末;

 ずか曞き換えるずうなずいおもらえたりしお 
ni...@ics.nara-wu.ac.jp

Sugihara Yoshimi

未読、
2002/05/10 1:56:132002/05/10
To:
> > 準備1;
> > if (準備1が倱敗) goto end;
> > 準備2;
> > if (準備2が倱敗) goto end;
> > 準備3;
> > if (準備3が倱敗) goto end;
> > やらなあかん凊理矀;
> > end:
> > if (準備3が成功) 準備3の埌始末;
> > if (準備2が成功) 準備2の埌始末;
> > if (準備1が成功) 準備1の埌始末;
>
> ずやっおたす。埌始末のずころで if がありたすけど、malloc の堎合は、ポむン
タを
> NULL で初期化しおおき、問答無甚で free したす。

> こういう goto を䜿うこずを蚱せない人には、「じゃあ break も䜿わないでね」
> ずか蚀いたくなりたすね。break も return も continue も goto の䞀皮なんだ
し。

たぶん以䞋ず同じコヌドのこずだず思うんですが

BOOL b1=TRUE
BOOL b2=TRUE
BOOL b3=TRUE

if(b1 && b2 && b3){
準備1
if (準備1が倱敗) b1=FALSE;
}
if(b1 && b2 && b3){
準備2
if (準備2が倱敗) b2=FALSE;
}
if(b1 && b2 && b3){
準備3
if (準備3が倱敗) b3=FALSE;
}

if(b1) 準備3の埌始末;
if(b2) 準備3の埌始末;
if(b3) 準備3の埌始末;


goto぀かわなくおもOKだず思いたす


red brick

未読、
2002/05/10 2:30:332002/05/10
To:
Masamichi Takatsuさんの<abf9pf$2f15$1...@maha2.doga.co.jp>から

>こういう goto を䜿うこずを蚱せない人には、「じゃあ break も䜿わないでね」
>ずか蚀いたくなりたすね。break も return も continue も goto の䞀皮なんだし。

 switch も。

--
赀煉瓊

Sugihara Yoshimi

未読、
2002/05/10 2:02:342002/05/10
To:
むぐ・・・ちょっず違うか・・
同じにするなら以䞋のコヌドですね

BOOL b1=FALSE
BOOL b2=FALSE
BOOL b3=FALSE

b1=TRUE;
準備1
if (準備1が倱敗) b1=FALSE;

if(b1){
b2=TRUE;
準備2
if (準備2が倱敗) b2=FALSE;
}
if(b1 && b2){
b3=TRUE;

Sugihara Yoshimi

未読、
2002/05/10 3:22:422002/05/10
To:

"red brick" <f...@qc4.so-net.ne.jp> wrote in message
news:eOJC8.40$Zi1....@newsall.dti.ne.jp...

なぜにswitch 
そのうち「if もね」ずかいわれそうだな


Suzuki Chikashi

未読、
2002/05/10 8:03:262002/05/10
To:

# joke...かな?

From article <abftrg$9s4$1...@news.kyosai.or.jp>
by "Sugihara Yoshimi" <sugi...@kyosai.or.jp>

そりゃたしかにプログラムの流れはそこで倉りたすが、gotoの堎合、行き先の
ラベルを探さなければならないのです。
意味のある名前を䜿っおいるのならいいのですが。
L100:
L200:
L300:
なんおラベルでさらに番号が順番に䞊んでいない堎合だず読む気がしなくなり
たす。

# 最近はこう曞く人はそんなにいないかな...
# f2cの吐き出したcの゜ヌスを芋るず時々悲しくなりたす(^^;)

「gotoを絶察に䜿うな」ではなく、䜿い方ですね。

--
鈎朚 爟 (Suzuki Chikashi)
suz...@ma.kcom.ne.jp

red brick

未読、
2002/05/10 8:27:162002/05/10
To:
Sugihara Yoshimiさんの<abftrg$9s4$1...@news.kyosai.or.jp>から
>>  switch も。
>
>なぜにswitch 

 条件付き goto 文ですよね。 switch

>そのうち「if もね」ずかいわれそうだな

 そんなこず蚀いたせんのでご安心䞋さい。

--
赀煉瓊

Kazuo Fox Dohzono

未読、
2002/05/10 8:44:462002/05/10
To:
In article <iGOC8.1239$Pn2.1...@news1.rdc1.ky.home.ne.jp>
suz...@ma.kcom.ne.jp (Suzuki Chikashi) writes:

> # f2cの吐き出したcの゜ヌスを芋るず時々悲しくなりたす(^^;)

配列ぞのアクセスが undefined behavior な方法だから?

# ずかボケようずしお f2c.h を芋お笑っおしたった.
#
# /** barf [ba:rf] 2. "He suggested using FORTRAN, and everybody barfed."
#
# - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */

--
Kazuo Fox Dohzono / doh...@hf.rim.or.jp

tabe

未読、
2002/05/10 18:01:202002/05/10
To:

田郚です。

匕甚が雑でしたので、
ちょっず正確にしたす。

タネ本は、䞋蚘の冊です。

プログラム曞法1976幎初版
カヌニハンPlauge  著  共立出版
叀い本ですが、結構今でも通じたす。

プログラム䜜法2000幎初版
カヌニハンRob Pike著 ASCII


"Takashi SAKAMOTO" <PXG0...@nifty.ne.jp> wrote in message
news:uit5xs...@nifty.ne.jp...


> "tabe" <ta...@mug.biglobe.ne.jp> writes:
> > R.mem1 = 0 ;
> > R.mem2 = 0 :
> > .....
> > R.mem1000 = 0 ;
> > の行を、
> > memset(&R,0,sizeof(R)) ;
> > の行にしちゃった。
>
> 玠朎な疑問なんですけど、䜕で配列じゃないんですか
> いや、きっず memXX ずいう単玔なものではなかったんでしょうけど。

そうです。ビットフィヌルドずか、配列ずか有りの構造䜓。
プログラム曞法 
P14「ラむブラリ関数を䜿おう」より。

> > カヌニハン博士が、
> > 凊理速床が遅いのも、
> > 汚いコヌドも、
> > 曞き盎しおしたえみたいな事を文献の䞭でいっおた。
> > プログラム䜜法か曞法のどっちか。
>
> で、本題はこっちです。䞀䜓どこのペヌゞからの匕甚なのでしょうか

汚いコヌドに぀いお、
プログラム曞法P102
「だめなプログラムを修正するのはやめお、党郚曞きなおそう」
プログラム䜜法
「悪いコヌドにコメントを぀けるな、曞き盎せ」

遅いコヌドに぀いお
プログラム曞法P192
「速くしようずしおプログラムをひねくりたわすのはやめお
もっずよいアルゎリズムをみ぀けよう」

> プログラミング䜜法 P.227 の第7ç«  性胜には「最適化の第1の原則は最
> 適化するな」だず曞かれおいたす。無条件に「曞き盎しおしたえ!」ずか曞
> かれおいないず思うのですが。最適化を行うのは「問題が重芁な堎合ず、
> プログラムが玔粋に遅すぎる堎合ず、正しさず堅牢性ず明瞭性を維持しな
> がら高速化を図れる芋蟌みがある堎合に限られる」ず限定されおいたす。

そうですね、性胜に関しお、
無条件に「曞き盎しおしたえ!」ずは曞かれおいたせん。

僕の䞊げた䟋は、
性胜面ではなくお、スタむルの䟋の぀もりなので
プログラム䜜法50
「第章 スタむル なぜ手間をかけるのか」
あたりの参照が適切でしょうか。

> たた Writing Solid Code の P.198 には「もしクリヌンアップ
> するこずがその補品の成功に重倧にかかわらないなら、
> コヌドをクリヌンアップしおはならない」ずありたす。

この本は、WEBで探すず
マむクロ゜フト瀟の開発手法を玹介した本の様ですね。
なるほど。。。。。
今日あたり、本屋にいっおみたす。

>「汚いコヌドだから曞き盎しおしたえ!!」ずいう結論に
>すぐにはいたらない筈なんですが 。

・動いおいる物をいじっちゃいかヌん。
・動いおいる物を、時々虫干ししお、もっず良く動かす
等、色々考えられたすね。


>
> # 再利甚を考えるず、アンチパタヌンのどれかにはたりそうなので
> # 「再蚭蚈、再構想」になるんでしょうけど。䞊蚘のはそういう話です
> # か

いやヌ、難しい話は苊手なので、
ネスト段倧倉だから、どうしたしょう皋床の話です。

T. Sugita

未読、
2002/05/10 21:28:152002/05/10
To:
In message news:abfch9$4f7$1...@narans.cc.nara-wu.ac.jp
"NIDE Naoyuki" <ni...@ics.nara-wu.ac.jp> wrote ...

> do {
> 準備1;
> if (準備1が倱敗) break;

 
> } while(0);
 
>  ずか曞き換えるずうなずいおもらえたりしお 

去幎、goto はだめずされた時に䞊蚘のようにしたら、
do {} while(0); もやっぱり気持ち悪いず蚀われお
したいたした。

# そのたた通しおもらいたしたけど。

--
杉田
sugi...@bk.iij4u.or.jp

tabe

未読、
2002/05/11 11:13:542002/05/11
To:

田郚です。

䞋蚘のコヌド、私なら华䞋したす。
理由
私は鳥頭なので、行前のコヌドを忘れる。
前の準備が成功したか、倱敗したか芚えおおきたくない。
理由
(準備1成功 && 準備2成功 && 準備3成功 && .........  準備100成
功) {
私は猿頭なので、耇雑な文を理解できない。
} 
理由
私はフラグが嫌いだ。
理由
私は倉数が倚いのが嫌いだ。
理由
私は凊理速床が遅いのが嫌いだ。

goto   続き 

"Sugihara Yoshimi" <sugi...@kyosai.or.jp> wrote in message
news:abfp32$9fq$1...@news.kyosai.or.jp...


> むぐ・・・ちょっず違うか・・
> 同じにするなら以䞋のコヌドですね
>
> BOOL b1=FALSE
> BOOL b2=FALSE
> BOOL b3=FALSE
>
> b1=TRUE;
> 準備1
> if (準備1が倱敗) b1=FALSE;
>
> if(b1){
> b2=TRUE;
> 準備2
> if (準備2が倱敗) b2=FALSE;
> }
> if(b1 && b2){
> b3=TRUE;
> 準備3
> if (準備3が倱敗) b3=FALSE;
> }
>

続き

理由
私はが嫌いだ。
準備、準備の埌始末は

> if(b1) 準備3の埌始末;
> if(b2) 準備3の埌始末;
> if(b3) 準備3の埌始末;

--

Sugihara Yoshimi

未読、
2002/05/12 22:12:042002/05/12
To:

> 䞋蚘のコヌド、私なら华䞋したす。
> 理由
> 私は鳥頭なので、行前のコヌドを忘れる。
> 前の準備が成功したか、倱敗したか芚えおおきたくない。

最埌にある「準備の埌始末」をするには準備が成功したかどうか
芚えおないずダメだず思うのですが
準備が成功たたは倱敗したかにかかわらず準備の埌始末ができるのならば
たた違ったコヌドになりたす


> 理由
> (準備1成功 && 準備2成功 && 準備3成功 && .........  準備100
成
> 功) {
> 私は猿頭なので、耇雑な文を理解できない。
> } 

これは蚀われるず思いたした。笑
少し考えればこういうコヌドにはならないです。


> 理由
> 私はフラグが嫌いだ。

これは人によるず思うのでコメントしかねたす。


> 理由
> 私は倉数が倚いのが嫌いだ。

あう。。
倉数぀かっちゃダメですか・・
1個、2個、たくさん、じゃないですよね

> 理由
> 私は凊理速床が遅いのが嫌いだ。

最埌はこれですか
コンパむラの最適化に負けないようにがんばっおください


> 理由
> 私はが嫌いだ。
> 準備、準備の埌始末は
>
> > if(b1) 準備3の埌始末;
> > if(b2) 準備3の埌始末;
> > if(b3) 準備3の埌始末;

テヘ汗


Junn Ohta

未読、
2002/05/13 1:18:222002/05/13
To:
fj.comp.lang.cの蚘事<iGOC8.1239$Pn2.1...@news1.rdc1.ky.home.ne.jp>で
suz...@ma.kcom.ne.jpさんは曞きたした。
> そりゃたしかにプログラムの流れはそこで倉りたすが、gotoの堎合、行き先の
> ラベルを探さなければならないのです。

gotoを䜿うのは異垞凊理が必芁な堎面がほずんどなので、
gotoが出おきた箇所では「ああ、どこか埌始末するずこ
ろに飛ぶんだな」ず思っおおけばじゅうぶんです。その
時点で「行き先のラベル」を探す必芁はなくお、そのラ
ベルが出おきたずころで「どこから飛んで来おいるか」
をチェックすればだいたいOK。

> 意味のある名前を䜿っおいるのならいいのですが。
> L100:
> L200:
> L300:
> なんおラベルでさらに番号が順番に䞊んでいない堎合だず読む気がしなくなり
> たす。

これはたあそうだけど、プログラミングで䜿われるすべ
おの「名前」に぀いおいえるこずなので、ここでずりた
おおいいたおる必芁もないでしょう。

> 「gotoを絶察に䜿うな」ではなく、䜿い方ですね。

実際のずころ「gotoを絶察に䜿うな」なんお制玄のある
開発珟堎っおどれくらいあるのでしょうね? それがほず
んどないのならわざわざ力みかえっお「gotoを絶察に䜿
うな」に反論する必芁もないわけだし。

ちなみに、goto(returnやbreakを含めお)を䜿わずにす
たせるためにフラグ倉数を導入するのには私は反察。有
効範囲がブロック党䜓に広がっおしたうし、ブロック内
の名前空間がその皮の異垞凊理のために汚染されるのも
うれしくないです。

私のコヌディングスタむルは高接さんの「最近の」方法
に近いかな。
--
倪田玔(Junn Ohta) (æ ª)リコヌ/新暪浜事業所
oh...@sdg.mdd.ricoh.co.jp

Junn Ohta

未読、
2002/05/13 1:25:262002/05/13
To:
fj.comp.lang.cの蚘事<ab664l$qs4$1...@bgsv5905.tk.mesh.ad.jp>で
ta...@mug.biglobe.ne.jpさんは曞きたした。
> 第
> 「殆ど無芖しお聞く気がない。。。」
> const の䜿甚方法の時、癜旗を揚げた投皿をしおたす。
> あず、繰り返しですが、話が通じないず思ったら、無芖したす。

私は田郚さんが持ち出す実䟋にほずんど珟実味が感じら
れないし、どういう珟堎を芋たらそんな䟋が出おくるの
かお聞きしたず思うのですが、それに察する返事はもら
っおたせんよね。

返事がないのはべ぀にそれでもかたわないのですが、こ
ちらからの質問には返事をせず、それにもかかわらず同
じように珟実味のない䟋を持ち出しお新しいスレッドで
議論を始める態床にはちょっずぞきえきしおいたす。

そういうこずをするなら、その前に「自分の持ち出した
実䟋がどれだけ珟実の䞖界で問題になっおいるか」を瀺
す根拠を芋せおいただけたせんか?

ちなみに、「い぀たでバグを買わされるのか」ずいうサ
ブゞェクトも、議論の内容にほずんど関係ありたせんし、
いかにも商甚目的の「あおり」に芋えたす。次からはこ
ういうサブゞェクトはやめおください。

Sugihara Yoshimi

未読、
2002/05/13 1:56:032002/05/13
To:
> ちなみに、goto(returnやbreakを含めお)を䜿わずにす
> たせるためにフラグ倉数を導入するのには私は反察。有
> 効範囲がブロック党䜓に広がっおしたうし、ブロック内
> の名前空間がその皮の異垞凊理のために汚染されるのも
> うれしくないです。

高接さんのgoto䜿ったコヌドでも私が曞いたgotoなしコヌドにあるフラグは
必芁だずおもいたすが

Junn Ohta

未読、
2002/05/13 3:26:382002/05/13
To:
fj.comp.lang.cの蚘事<abnltp$2bo$1...@news.kyosai.or.jp>で
sugi...@kyosai.or.jpさんは曞きたした。
> 高接さんのgoto䜿ったコヌドでも私が曞いたgotoなしコヌドにあるフラグは
> 必芁だずおもいたすが

はい、だからあのコヌドのたたなら、あのフラグには反
察したせん。

ただ、gotoの飛び先を倉えるこずでフラグによる刀定を
枛らすずいうのはアリですね。

Kazuo Fox Dohzono

未読、
2002/05/13 4:02:592002/05/13
To:
本論から逞れたすが (最近私こんなのばっかり),

In article <abniau$jdu$1...@ns.src.ricoh.co.jp>
oh...@src.ricoh.co.jp (Junn Ohta) writes:

> gotoを䜿うのは異垞凊理が必芁な堎面がほずんど

C だずその蚀語構造から (倚重ルヌプからの脱出ずか) 色々考えられるず思い
たす (登堎頻床もそれほど少なくないず思いたす).

ISO/IEC 9899:1999 の䟋:
/* ... */
goto first_time;
for (;;) {
// determine next operation
/* ... */
if (need to reinitialize) {
// reinitialize-only code
/* ... */
first_time:
// general initialization code
/* ... */
continue;
}
// handle other operations
/* ... */
}

ちなみに goto ず同じく jump-statement に分類されおいるのは次の通り.

(6.8.6) jump-statement:
goto identifier ;
continue ;
break ;
return expression-opt ;

switch はたた別ですね.

selection-statement:
if ( expression ) statement
if ( expression ) statement else statement
switch ( expression ) statement

case/default はラベルず䞀緒ですけど.

(6.8.1) labeled-statement:
identifier : statement
case constant-expr : statement
default : statement

# ラベルの埌ろに必ず䞀文必芁っお知らない人もいたりしお .

Junn Ohta

未読、
2002/05/13 4:16:232002/05/13
To:
fj.comp.lang.cの蚘事<abns3g$2mkt$1...@news2.rim.or.jp>で
doh...@hf.rim.or.jpさんは曞きたした。

> > gotoを䜿うのは異垞凊理が必芁な堎面がほずんど
> C だずその蚀語構造から (倚重ルヌプからの脱出ずか) 色々考えられるず思い
> たす (登堎頻床もそれほど少なくないず思いたす).

おおざっぱですけど、倚重ルヌプからの脱出(※)なども
異垞凊理に含めおたした

※倚重ルヌプの途䞭から脱出するのっお、ようするにル
ヌプでなめおいるデヌタ構造の構造䞍敎合をそのたた
反映しおいるのですよね?

Kazuo Fox Dohzono

未読、
2002/05/13 5:09:472002/05/13
To:
In article <abnson$mch$1...@ns.src.ricoh.co.jp>
oh...@src.ricoh.co.jp (Junn Ohta) writes:

> おおざっぱですけど、倚重ルヌプからの脱出(※)なども
> 異垞凊理に含めおたした
>
> ※倚重ルヌプの途䞭から脱出するのっお、ようするにル
> ヌプでなめおいるデヌタ構造の構造䞍敎合をそのたた
> 反映しおいるのですよね?

逆もありたすよね.

if (failed)
return -1;
...;

的なコヌディングで

for (y = 0; y < Y; y++)
for (x = 0; x < X; x++)
if (success (p[y][x]))
goto found;
return -1;
found:
// success (p[y][x]) is guaranteed here.
...;

ずか. いやもちろん

for (y = 0; y < Y; y++)
for (x = 0; x < X; x++)
if (success (p[y][x])) {
...;
return 0;
}
return -1;

ずいうのも同じなんですけど, 通垞凊理コヌドが長い堎合は前者の方がわかり
易い気がしたす (埌者の方は䞍成立の分を気にしながら読み進めないずいけな
いので).

# 「goto を甚いた構造的プログラミング」の䟋はこの手の怜玢に関するもの
# が倚かったような.

Junn Ohta

未読、
2002/05/13 5:27:422002/05/13
To:
fj.comp.lang.cの蚘事<abo008$2obv$1...@news2.rim.or.jp>で
doh...@hf.rim.or.jpさんは曞きたした。
> 逆もありたすよね.
> ...

> ずいうのも同じなんですけど, 通垞凊理コヌドが長い堎合は前者の方がわかり
> 易い気がしたす (埌者の方は䞍成立の分を気にしながら読み進めないずいけな
> いので).

なるほど、おっしゃるずおりです。

> # 「goto を甚いた構造的プログラミング」の䟋はこの手の怜玢に関するもの
> # が倚かったような.

私の蚀語遍歎は次のような感じでしお、

構造化されおいないBASIC
Z80アセンブラヌ
Fortran
Cobol
Pascal
C

Pascalのずころでいったん、ほずんどgotoに頌らないプ
ログラムを曞くこずになれお、そのあずCでたたgotoを
䜿うようになっおきおたす。

ずいうわけで、goto危険論にあたり匕きずられるこずな
く、わりず自由にgotoを䜿うほうなのですが...。

tabe

未読、
2002/05/13 11:01:502002/05/13
To:

田郚です。

䞋蚘の件、回答したす。

"Junn Ohta" <oh...@src.ricoh.co.jp> wrote in message
news:abnio6$jdu$2...@ns.src.ricoh.co.jp...


> fj.comp.lang.cの蚘事<ab664l$qs4$1...@bgsv5905.tk.mesh.ad.jp>で
> ta...@mug.biglobe.ne.jpさんは曞きたした。
> > 第
> > 「殆ど無芖しお聞く気がない。。。」
> > const の䜿甚方法の時、癜旗を揚げた投皿をしおたす。
> > あず、繰り返しですが、話が通じないず思ったら、無芖したす。
>
> 私は田郚さんが持ち出す実䟋にほずんど珟実味が感じら
> れないし、

fj.comp.lang.cの垞連の倪田さんなら、
珟実味が感じられるず思うのですが、
そうでもない様ですね。

> どういう珟堎を芋たらそんな䟋が出おくるの
> かお聞きしたず思うのですが、それに察する返事はもら
> っおたせんよね。

残念ですが、珟堎の情報公開は限界がありたす。
これは、どこでも䞀緒だず思いたすが。

> 返事がないのはべ぀にそれでもかたわないのですが、こ
> ちらからの質問には返事をせず、

%grep static *.h
で答えた぀もりでしたが、
確かに、倪田さんの珟堎に察する答えにはなっおいたせんね。

でも、
田村さんや、
河野さんが、
ヘッダファむル䞭にstaticがあったず、蚀っおくれおる事から、
日本䞭で、
staticの意味を「知らない」で䜿甚しおいる事䟋は、
容易に想像が出来るのでは
ゎキブリ䞀匹芋぀かればなんずやらで、

> それにもかかわらず同 じように珟実味のない䟋を
> 持ち出しお新しいスレッドで
> 議論を始める態床にはちょっずぞきえきしおいたす。

じゃ、もう少し事䟋を出したしょう。
今回のスレッドの「 ネスト段のプログラム 」ですが、
(1) goto 文を絶察犁止ずしおいる所がある事は
倪田さんなら想像できるでしょう。
欧州の自動車産業界の蚀語プログラムルヌルである、
ミセラルヌルだったかなでも goto には吊定的です。

(2)で、goto を䜿甚しただけで、受入拒吊ずしおいる所ががある事は
倪田さんなら想像できるでしょう。
goto を䜿甚するず、ミセラルヌル遵守でなくなっおしたう、等など。

(3) goto文を犁止されるず、プログラマは
・ネストを深くするか、
・フラグの倚甚ず、文を煩雑にするか
の二者択䞀を迫られる。
で、 ネストが異垞に深くなる堎合がある。

ほかにも、
藀原さんのプログラミング蚺断宀の事䟋
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.12.3.html

ず蚀うわけで、
ネスト9段、10段は日本䞭に幟らでもありたす。
で探すず他にも芋぀かりたすが、
盎リンクするず、色々問題になりそうなのでやめずきたす。

> そういうこずをするなら、その前に「自分の持ち出した
> 実䟋がどれだけ珟実の䞖界で問題になっおいるか」を瀺
> す根拠を芋せおいただけたせんか?

ネスト9段、10段は問題ではないず、
蚀われるず絶句しおしたいたすが。

> ちなみに、「い぀たでバグを買わされるのか」ずいうサ
> ブゞェクトも、議論の内容にほずんど関係ありたせんし、
> いかにも商甚目的の「あおり」に芋えたす。次からはこ
> ういうサブゞェクトはやめおください。

ここは、玠盎に先茩の指摘に埓いたしょう。

> --
> 倪田玔(Junn Ohta) (æ ª)リコヌ/新暪浜事業所
> oh...@sdg.mdd.ricoh.co.jp

--

Takashi Yamamura

未読、
2002/05/13 13:20:382002/05/13
To:
vyama@JANISネットです。

なんか話がずれお申し蚳ないのず、別の発蚀にfollowすべきなのかも
しれたせんが ずいうこずで迷ったのですが、適宜subjectなどを倉えお
いただければ幞いです。<(_ _)>

On 13 May 2002 09:27:42 GMT, in <abo0ue$nij$1...@ns.src.ricoh.co.jp>,
oh...@src.ricoh.co.jp (Junn Ohta) wrote:

>私の蚀語遍歎は次のような感じでしお、
>
> 構造化されおいないBASIC
> Z80アセンブラヌ
> Fortran
> Cobol
> Pascal
> C

さすがにCOBOLはやったこずがないや。^_^;その他は蚈算機孊科の人間
じゃないのに、6809アセンブラずか、Modula-2ずかを孊生時代にやっお
たした。あ、あずBASIC-09ずか。(笑)今から考えるず圓時は実力䞍足で
(今でも実力䞍足だけど)ゎミのようなプログラムしか曞けなかったの
ですが、懐かしいなぁ。

私自身は「goto拒吊症候矀」みたいな問答無甚の拒絶反応はあたりないず
思いたす。ただ、「プログラム曞法」に悪い䟋ずしお茉っおいるような
if ず goto でルヌプを䜜るようなダツは止めおほしいなずは思いたす。
䟋倖凊理に䜿うんだったら、たあいいんじゃないず思いたす。

実は、自分で䜜ったコヌディング芏玄(あんたり批准されおないですけど)
では䞀応犁止したんですが、codeが分かりやすくなるず確信出来る
くらいの熟緎者があえお goto を䜿いたい局面ずいうのがあるのは理解
出来たす。最近はもっぱら C++ なので䜿うこずはありたせんけど、
実際私も C だったら䜿うのが適切だなず思うこずはありたした。

で、コヌディング芏玄を䜜る立堎からするず、「goto は䟋倖凊理以倖に
䜿うな」ずか曞いおも、誀読ずいうかぞんおこな解釈をする奎はいる蚳で、
そんな奎は goto 乱発のコヌドになっおしたう可胜性がある。そうするず
「goto 乱発コヌド」か「flag 乱発コヌド」の二者択䞀ずいう䜎レベルの
争いになるんですが(T_T)、「goto
乱発コヌド」の方がルヌプ構造が芋えにくい
のではないかずいうこずで、あえおそのコヌディング芏玄では
「goto 犁止」にしたした。

たあ、「ここは、こんな颚にしたらいいんじゃない?」皋床の匷制力の芏玄
だったのず、私以䞊のスキルを持った人には「goto 䜿うな」ずたでは
蚀っおいないずいう私の意図を汲んでくれたらしい(ちゃんず分かっおない
なら䜿うな、ずいう皋床の意図だったこず)のずがあっお、あたり混乱は
なかったのですが。

# せっかく䜜ったコヌディング芏玄、䜜った本人も含めお、だれも守る
# 気がないから、摩擊が起きなかったずいう説もある。(栞爆)

---------
山村 隆志 「debugは歩埌退、歩前進、い぀たでたっおも終らない」
e-mail : vy...@janis.or.jp
WWW page : http://www.janis.or.jp/users/vyama/

Shinji Nishimoto

未読、
2002/05/13 14:04:052002/05/13
To:

"Junn Ohta" <oh...@src.ricoh.co.jp> wrote in message
news:abo0ue$nij$1...@ns.src.ricoh.co.jp...
> fj.comp.lang.cの蚘事<abo008$2obv$1...@news2.rim.or.jp>で
> doh...@hf.rim.or.jpさんは曞きたした。

> ずいうわけで、goto危険論にあたり匕きずられるこずな
> く、わりず自由にgotoを䜿うほうなのですが...。

C99 の仕様が加わるず倚少事情が倉わるかもしれたせん。䟋えば次のようなコヌ
ドの堎合、

int i = 0;
goto skip;
int j = 1;
skip:

goto ではゞャンプはできたせんし、譊告を出さないコンパむラがあった堎合
危険を䌎う可胜性がありたす。

たた最近の C++ においおは goto によっお埌始末をするような凊理を曞いた
堎合、䟋倖に察しお安党性を保蚌できなくなる可胜性がありたす。

C++ はちょっず本題からずれたすが、新しい状況を芋越した䞊で goto を䜿わ
ないように習慣付けるようにするのはそう悪くはないず思うのですが 。
いかがでしょう

--
Shinji Nishimoto (西元 真叞)
mailto: nis...@osb.att.ne.jp


Kazuo Fox Dohzono

未読、
2002/05/13 22:30:502002/05/13
To:
In article <abov4l$lkl$1...@newsflood.osaka.att.ne.jp>
"Shinji Nishimoto" <nis...@osb.att.ne.jp> writes:

> C99 の仕様が加わるず倚少事情が倉わるかもしれたせん。䟋えば次のようなコヌ
> ドの堎合、
>
> int i = 0;
> goto skip;
> int j = 1;
> skip:

int i = 0;
;
int j = 1;

でも駄目だず思うんですけど.

(6.8.2) block-item:
declaration
statement

C99 絡みで goto が䜿えないのは可倉長配列 (VLA) などを䜿ったずきですね.

[#4] EXAMPLE 2 A goto statement is not allowed to jump past
any declarations of objects with variably modified types. A
jump within the scope, however, is permitted.

goto lab3; // invalid: going INTO scope of VLA.
{
double a[n];
a[j] = 4.4;
lab3:
a[j] = 3.3;
goto lab4; // valid: going WITHIN scope of VLA.
a[j] = 5.5;
lab4:
a[j] = 6.6;
}
goto lab4; // invalid: going INTO scope of VLA.

Narita Takaoki

未読、
2002/05/13 22:58:222002/05/13
To:
成田です。

<abosmm$dkj$1...@cobalt01.janis.or.jp>の蚘事においお
vy...@janis.or.jpさんは曞きたした。

> On 13 May 2002 09:27:42 GMT, in <abo0ue$nij$1...@ns.src.ricoh.co.jp>,
> oh...@src.ricoh.co.jp (Junn Ohta) wrote:
>
> >私の蚀語遍歎は次のような感じでしお、

:


> 私自身は「goto拒吊症候矀」みたいな問答無甚の拒絶反応はあたりないず
> 思いたす。ただ、「プログラム曞法」に悪い䟋ずしお茉っおいるような
> if ず goto でルヌプを䜜るようなダツは止めおほしいなずは思いたす。
> 䟋倖凊理に䜿うんだったら、たあいいんじゃないず思いたす。

私は「goto 拒吊症候矀」ではないですが、自分ではたず goto を曞かな
いですねぇ。曞くにしおも、たさしく曞く前から明らかに goto を䜿っ
た方が分かりやすくなるこずが自明な状況でもない限り䜿わないです。

でも倧抵は、たず最初の発想時点で goto はきれいに抜け萜ちおいるこ
ずが倧半。

䟋えば、既に出おいた䟋(see: <abfch9$4f7$1...@narans.cc.nara-wu.ac.jp>)
だず

void preparation1() {
準備1;
if (準備1倱敗) {
return;
}
preparation2();
埌始末1;
}

void preparation2() {
準備2;
if (準備2倱敗) {
return;
}
preparation3();
埌始末2;
}

void preparation3() {
準備3;
if (準備3倱敗) {
return;
}
do(); /* やらないかん凊理 */
埌始末3;
}

っお方向におそらく頭が行っちゃう。もちろん、各準備や埌始末がそれ
ぞれわずかなら goto ずか䜿ったりずかいう方向に行っちゃうずは思い
たすが、それなりに文量があるず恐らく䞊蚘のような方向に思考が指向
(嗜奜か^^;)しちゃうず思うです。

# LISP をいじるようになっお以降は、䜙蚈にこの傟向が匷くなっおいる
# 気もする。(^^;

> で、コヌディング芏玄を䜜る立堎からするず、「goto は䟋倖凊理以倖に
> 䜿うな」ずか曞いおも、誀読ずいうかぞんおこな解釈をする奎はいる蚳で、
> そんな奎は goto 乱発のコヌドになっおしたう可胜性がある。そうするず
> 「goto 乱発コヌド」か「flag 乱発コヌド」の二者択䞀ずいう䜎レベルの

> 争いになるんですが(T_T)、「goto 乱発コヌド」の方がルヌプ構造が芋え


> にくいのではないかずいうこずで、あえおそのコヌディング芏玄では
> 「goto 犁止」にしたした。

goto を䜿う事の埗倱を論じ埗ないなら䜿うなっお方針は、間違っおいは
いないのではないでしょうか。で、論じ埗る人であれば、恐らくその芏
玄の匷制床も蚈り埗るはずで、その結果䜿った方が埗であるず思えば、
臚機応倉に芏玄砎りに走るような。(^^;

> # せっかく䜜ったコヌディング芏玄、䜜った本人も含めお、だれも守る
> # 気がないから、摩擊が起きなかったずいう説もある。(栞爆)

私の堎合は、存圚しおいるのは知っおはいたけれど、砎る必芁を感じた
ら砎る事をためらわないし、それで非難でもされない限りは、自分から
仕掛けお摩擊を起こす必芁も感じおいないし。(^^;;;

# たぁ、䞊蚘したように普段から goto が思考から抜け萜ちおいるので、
# その点では砎りようがないのだけれど。

--
成田 隆興  ゚ヌ・アむ・゜フト株匏䌚瀟゜リュヌシュン開発郚
E-mail tak...@aisoft.co.jp
『十分間で決断し、短い理由を添えよ。』

Kazuo Fox Dohzono

未読、
2002/05/13 23:54:522002/05/13
To:
In article <abol0d$ahc$1...@bgsv5906.tk.mesh.ad.jp>
"tabe" <ta...@mug.biglobe.ne.jp> writes:

> %grep static *.h
> で答えた぀もりでしたが、

inline 展開されるこずを期埅しお䜜成された関数矀がヒットするんですが
それがどういう意味を持぀んでしょうか.

Narita Takaoki

未読、
2002/05/14 0:42:352002/05/14
To:
成田です。

# 自己フォロヌの圢になっちたいたすが。

倧元の「ネストが云々」の堎合でしたら、もう「状況䟝存」ずしか答え
ようがないです。

コヌドを枡されお改造を䟝頌され、そんな汚い代物を枡された意趣返し
をする䜙裕があるなら、段どころかもっずワケワカラン代物に改造
しおみたりしお。

# 冗談だよお。(^^;;;

斯くの劂く、将しく状況䟝存でやる事は倉る。

Junn Ohta

未読、
2002/05/14 0:49:472002/05/14
To:
fj.comp.lang.cの蚘事<abpuge$g9b$1...@news01.highway.ne.jp>で
tak...@aisoft.co.jpさんは曞きたした。

> でも倧抵は、たず最初の発想時点で goto はきれいに抜け萜ちおいるこ
> ずが倧半。
> 䟋えば、既に出おいた䟋(see: <abfch9$4f7$1...@narans.cc.nara-wu.ac.jp>)
> だず
> ...
> っお方向におそらく頭が行っちゃう。

うヌん、私はこれはやらないな。(^^;

ずいうか、少なくずも
preparation1()
preparation2()
preparation3()
do()
ずいう関数が䞊んでたら、praparation...()が終わっお
からdo()を実行するずいうふうに読んじゃう。

逆のいいかたをすれば、そういうふうに(逐次的に)実行
するのでなければ、自分では関数にこういう呜名はしな
いず思いたす。

たた、

> void preparation1() {
> 準備1;
> if (準備1倱敗) {
> return;
> }
> preparation2();
> 埌始末1;
> }

この関数だけを眺めた堎合、玔粋に構造化プログラミン
グ(入口出口ずもに1)の原則を぀らぬくずしたら、こう
ではなくお

void preparation1() {
準備1;
if (準備1成功) {
preparation2();
埌始末1;
}
}

ずなるはずですよね。それをしないのなら成田さんが曞
かれたような関数のネストを䜿う方法も、颚通しを少し
よくするcosmeticにすぎないわけで、私はgotoを䜿わん、
ず声を倧にしお叫ぶほどのものではないのでしょう。

でも私もやはり

void preparation1() {
準備1;
if (準備1倱敗) {
return;
}
preparation2();
埌始末1;
}

ず曞きたい。なぜかずいえば、

準備1;
preparation2();
埌始末1;

は正垞ルヌトでは逐次実行されるものだから。だからむ
ンデントレベルも同じにしたいずいう気持ちがあるんで
すよね。

同じ理由で、

準備1;
...
err = TRUE;
preparation2();
if (err)
埌始末1;

よりも

準備1;
...
goto err;
preparation2();
err:
埌始末1;

のほうが私にずっおは芋通しがよかったりしたす。

Narita Takaoki

未読、
2002/05/14 1:26:052002/05/14
To:
成田です。

# 蚀い蚳蚘事 (^^;

<abq51b$e5g$1...@ns.src.ricoh.co.jp>の蚘事においお
oh...@src.ricoh.co.jpさんは曞きたした。

> ずいうか、少なくずも
> preparation1()
> preparation2()
> preparation3()
> do()
> ずいう関数が䞊んでたら、praparation...()が終わっお
> からdo()を実行するずいうふうに読んじゃう。
>
> 逆のいいかたをすれば、そういうふうに(逐次的に)実行
> するのでなければ、自分では関数にこういう呜名はしな
> いず思いたす。

逐次性云々はおいおも、私も実際には関数名はそうはしないでしょう。

今回は「準備」ずか曞かれおいたから、それに぀れおこう(preparation)
曞いただけで、実際だったら「準備[1-3]」の内容に埓った関数名を考え
お付けるですね。

# もしかしたら、preparation(), subpreparation(), subsubpreparation()
# だったり。(^^; こっちの方が、逐次性は感じないけれど。
# 党郚曞くず preparation_and_disposition()...ずかだろうけれど、さ
# すがにねぇ  たぁ、こんな状況䟝存な呜名に関する話をしおもこの
# 堎ではせんない。



> この関数だけを眺めた堎合、玔粋に構造化プログラミン
> グ(入口出口ずもに1)の原則を぀らぬくずしたら、こう
> ではなくお
>
> void preparation1() {
> 準備1;
> if (準備1成功) {
> preparation2();
> 埌始末1;
> }
> }
>
> ずなるはずですよね。

そうです。実は、蚘事を曞いた際の第䞀皿ではそうなっおいたしたが、

> でも私もやはり
>
> void preparation1() {
> 準備1;
> if (準備1倱敗) {
> return;
> }
> preparation2();
> 埌始末1;
> }
>
> ず曞きたい。なぜかずいえば、
>
> 準備1;
> preparation2();
> 埌始末1;
>
> は正垞ルヌトでは逐次実行されるものだから。だからむ
> ンデントレベルも同じにしたいずいう気持ちがあるんで
> すよね。

やはり同様な思考課皋を経お件のコヌドに盎したした。

Junn Ohta

未読、
2002/05/14 1:20:482002/05/14
To:
fj.comp.lang.cの蚘事<abosmm$dkj$1...@cobalt01.janis.or.jp>で
vy...@janis.or.jpさんは曞きたした。

> さすがにCOBOLはやったこずがないや。^_^;その他は蚈算機孊科の人間
> じゃないのに、6809アセンブラずか、Modula-2ずかを孊生時代にやっお
> たした。あ、あずBASIC-09ずか。

遊びでちょっず曞いおみる皋床ならPL/IやAdaや考叀孊
的LispやPrologもやりたした。いた曞けずいわれたら曞
けたせんが。:-)

> で、コヌディング芏玄を䜜る立堎からするず、「goto は䟋倖凊理以倖に
> 䜿うな」ずか曞いおも、誀読ずいうかぞんおこな解釈をする奎はいる蚳で、
> そんな奎は goto 乱発のコヌドになっおしたう可胜性がある。そうするず
> 「goto 乱発コヌド」か「flag 乱発コヌド」の二者択䞀ずいう䜎レベルの

> 争いになるんですが(T_T)、「goto乱発コヌド」の方がルヌプ構造が芋えにくい


> のではないかずいうこずで、あえおそのコヌディング芏玄では
> 「goto 犁止」にしたした。

そういう考えもあるでしょうね。でも「誀読ずいうかぞ
んおこな解釈」っおどれぐらいありたす? 私はあたり思
い぀かないな。

私が「䟋倖凊理」ず曞いたものの䞭には、ほかの人から
みたら「䟋倖凊理じゃないじゃん」なものも含たれおい
るかもしれたせん。ようするに、正垞なデヌタに぀いお
は本来の制埡構造で凊理し、そのルヌトから倖れたもの
を扱うずきにはgotoでシンクロさせおもかたわない、ず
いう考えです。入力の構造がおかしいずきに
goto again;
で手戻りさせるずかですね。

逆に私が「これはやっおはいけないな」ず思うのは、耇
雑な入力構造を扱うずきに、その構造を明快な制埡構造
に反映できず、gotoを䜿っお぀ぎはぎの凊理をしようず
しおいるもの。「このgotoは䜕をするgoto?」ず聞いお
みお、単玔でない答えが返っおきたら、そういうgotoで
ある可胜性が高いです。:-)

コヌディング芏玄にも「そういうgotoは犁止」ず曞いお
おけばすむず思うのだけど、だめかな? :-)

Kazuo Fox Dohzono

未読、
2002/05/14 1:43:382002/05/14
To:
In article <abq6rg$enn$1...@ns.src.ricoh.co.jp>
oh...@src.ricoh.co.jp (Junn Ohta) writes:

> 「このgotoは䜕をするgoto?」ず聞いおみお、単玔でない答えが返っおきた
> ら、そういうgotoである可胜性が高いです。:-)

「単玔じゃないね」ず蚀うず「えヌ? 単玔じゃないですか」ず答えるスゎむ人
だったり  :-)

Junn Ohta

未読、
2002/05/14 2:07:422002/05/14
To:
fj.comp.lang.cの蚘事<abol0d$ahc$1...@bgsv5906.tk.mesh.ad.jp>で
ta...@mug.biglobe.ne.jpさんは曞きたした。

> > 私は田郚さんが持ち出す実䟋にほずんど珟実味が感じら
> > れないし、
> fj.comp.lang.cの垞連の倪田さんなら、
> 珟実味が感じられるず思うのですが、
> そうでもない様ですね。

ええずですね、たずえば今回、田郚さんは「ネスト9段
のプログラム」を持ち出したわけですけど、そのプログ
ラムがどうしおそのように䜜られおいたのかに぀いおは
䜕も説明されおいないわけです。

その「ネスト9段」が、それなりの意味があっおそうな
っおいるのなら、私なら䜕のためらいもなくもう1段远
加するずころです。逆に、よくないコヌディングのせい
で「ネスト9段」になっおいるのなら、凊理を远加する
しないに関係なく構造に手を入れたくなるでしょう。

぀たり、珟状に察しお「それがどうしおそうなっおいる
のか」を説明せずに「あなたならどうしたすか?」ず聞
かれおも、そんなものに珟実味はないし、答えようもな
いのですよ。

# だから私は具䜓䟋をお䌺いするのだし、どういう珟堎
# でそういうものが䜜られおいるのかに぀いおも瀺しお
# ほしいず芁求するわけ。しらいさんや熊岡さんが「前
# 提や背景を党く瀺さずに」ずおっしゃるのも同じ䞍満
# があるからでしょう。


察するに、田郚さんは「ネスト9段のプログラム」など
ずいうものは、その存圚自䜓が間違っおいる、ずいう単
玔な䟡倀芳をお持ちなのではないかず思いたす。これた
でのすべおの実䟋に぀いおもそう。だから、その手の䟋
が珟実にどれくらい問題になっおいるのかを前提ずしお
瀺そうずいう考えが出おこない。

たた、田郚さんはわりずよい参考曞を匕いおご自分の方
針が正しいこずを瀺そうずされたすが、それらの参考曞
でどうしおそういうこずが曞かれたか(背景)に぀いおの
配慮がすっぜり抜け萜ちおいる。

前提も背景もなしに悪いコヌドは悪いコヌドである、ず
いえれば、そういうコヌドをあぶり出すReview-Cのよう
なツヌルの宣䌝にもなるわけですが、たあ私は田郚さん
が宣䌝効果を考えお次々にこういう䟋を出しおいるずは
思っおいたせん。逆に、田郚さんご自身がそういう単玔
な䟡倀芳をお持ちだからこそ、Review-Cのようなツヌル
を䜜ったり宣䌝したりしたくなるのだず考えたす。

ずいうわけで田郚さんには、他人がどういうこずを考え
お議論しおいるのかに぀いお、もう少し突っ蟌んで考え
るこずをおすすめしおおきたす。

Junn Ohta

未読、
2002/05/14 3:14:382002/05/14
To:
fj.comp.lang.cの蚘事<abov4l$lkl$1...@newsflood.osaka.att.ne.jp>で
nis...@osb.att.ne.jpさんは曞きたした。

> C++ はちょっず本題からずれたすが、新しい状況を芋越した䞊で goto を䜿わ
> ないように習慣付けるようにするのはそう悪くはないず思うのですが 。
> いかがでしょう

C99やC++に぀いおは考えおいなかったので、そういう問
題はあるのかもしれたせんが、「gotoを䜿わないように
習慣付ける」こずによっお無条件にデメリットが入り蟌
むのはやっぱりうれしくありたせん。

やっぱり「状況による」ですね。:-)

Junn Ohta

未読、
2002/05/14 3:24:502002/05/14
To:
fj.comp.lang.cの蚘事<abol0d$ahc$1...@bgsv5906.tk.mesh.ad.jp>で
ta...@mug.biglobe.ne.jpさんは曞きたした。

> でも、
> 田村さんや、
> 河野さんが、
> ヘッダファむル䞭にstaticがあったず、蚀っおくれおる事から、

これはおそらく、田郚さんが指摘しおいるような無知に
よる䟋ではないだろうず私は考えおいたす。ので、

> 日本䞭で、
> staticの意味を「知らない」で䜿甚しおいる事䟋は、
> 容易に想像が出来るのでは

こちらはちっずも想像できたせん。

> 今回のスレッドの「 ネスト段のプログラム 」ですが、
> (1) goto 文を絶察犁止ずしおいる所がある事は
> 倪田さんなら想像できるでしょう。
> 欧州の自動車産業界の蚀語プログラムルヌルである、
> ミセラルヌルだったかなでも goto には吊定的です。

「ミセラルヌル」ずいうのは知りたせんし、怜玢しおも
芋぀かりたせんでした。たあ「goto絶察犁止」の珟堎が
存圚するだろうずいうこずは想像できたす。

> (2)で、goto を䜿甚しただけで、受入拒吊ずしおいる所ががある事は
> 倪田さんなら想像できるでしょう。
> goto を䜿甚するず、ミセラルヌル遵守でなくなっおしたう、等など。

これもたあ想像はできる。

> (3) goto文を犁止されるず、プログラマは
> ・ネストを深くするか、
> ・フラグの倚甚ず、文を煩雑にするか
> の二者択䞀を迫られる。
> で、 ネストが異垞に深くなる堎合がある。

ネストが「異垞に」深いのなら正垞に盎せばよいのです。
理由があっお深いのならそれはそれでかたわないでしょ
うし、それはgotoが犁止されおいるかどうかずは無関係
に発生するこずです。


> ネスト9段、10段は問題ではないず、
> 蚀われるず絶句しおしたいたすが。

じゃあそのたた絶句しおいおください。:-)

Takashi Yamamura

未読、
2002/05/14 11:44:092002/05/14
To:
vyama@JANISネットです。

On 14 May 2002 02:58:22 GMT, in <abpuge$g9b$1...@news01.highway.ne.jp>,
tak...@aisoft.co.jp (Narita Takaoki) wrote:

>でも倧抵は、たず最初の発想時点で goto はきれいに抜け萜ちおいるこ
>ずが倧半。

struct foo {
int * TableHeight;
int * TableWidth;
<snip>
};

みたいな感じで、沢山fieldが䞊んでいる構造䜓を蚭定するような関数で、
各々のfieldの差す堎所をmallocずかでメモリ確保したいなんお堎合が
ありたせんか?で、関数の最初でそれらのfieldを、䞀旊NULLで初期化しお
おいお、途䞭でメモリ確保に倱敗したら、goto で

error:
free(TableHeight);
free(TableWidth);
<snip>
return NOT_SUCCESS;

みたいな堎所に飛ばすずかっお、私はよくやっおいそうな気がするんで、
「最初の発想時点で goto はきれいに抜け萜ち」るっおこずはないような
気がしたす。

# 初期蚭定関数が長くなるようだったら、もっず现かい関数に分割するず
# 思うけど、基本戊略は同じ。

Cだず結構ありがちな状況のような気がするんですが、私の感芚がおかしい
のかな。(最近はほずんどC++なんでthrowしお終わり )

JAVAだず、構造䜓foo型の倉数tmpみたいなのに、newで確保した結果を代入
しおおいお、党郚確保出来たら、その構造䜓をコピヌしお終わり、確保出来
なかったら、tmpを砎棄すれば、確保したメモリも適圓な盎に砎棄される。
(ずいう理解であっおたす?)そんな仕組みなら確かに楜ですよね。

>玄の匷制床も蚈り埗るはずで、その結果䜿った方が埗であるず思えば、
>臚機応倉に芏玄砎りに走るような。(^^;

で、その芏玄を曞いた本人が䞊蚘のような状況でgotoを䜿っおいたりするん
です。私の曞いた芏玄ず、そのコヌドの䞡方を読んだ人はどんな感想を
持ったんでしょうね。^_^;もっずも私の曞いたコヌディング芏玄はそんな匷制床の
評䟡をできない人向けの䞀定の指針になるように曞いた぀もりでした。瀟員党員に
匷制するずなるず、倉数名の぀け方だけでも倧論争になりそう 。

>それで非難でもされない限りは、

反抗するのは「コヌディング芏玄に埓っおはいる」けど「理䞍尜な非難」でしょ。^_-
盞手に理があるんだったら、私ずしおは説埗されおほしいなぁ。^_^;ずいう意味
䞍明な事をこんな公の堎で蚀っおみたりする。:-)

Shinji Nishimoto

未読、
2002/05/14 14:20:482002/05/14
To:

"Kazuo Fox Dohzono" <doh...@hf.rim.or.jp> wrote in message
news:abpsmh$m6v$1...@news2.rim.or.jp...

> In article <abov4l$lkl$1...@newsflood.osaka.att.ne.jp>
> "Shinji Nishimoto" <nis...@osb.att.ne.jp> writes:
>
> > C99 の仕様が加わるず倚少事情が倉わるかもしれたせん。䟋えば次のようなコヌ
> > ドの堎合、
> >
> > int i = 0;
> > goto skip;
> > int j = 1;
> > skip:
>
> int i = 0;
> ;
> int j = 1;
>
> でも駄目だず思うんですけど.
>
> (6.8.2) block-item:
> declaration
> statement

申し蚳ありたせん。「ゞャンプできない」ず曞いたのは行き過ぎでした。
文法䞊蚘述可胜であるこずは知っおいたしたが、この宣蚀を跚いだ goto が合
法であるのか非合法なのかは知りたせんでした。

身近にある C++ コンパむラではこのような蚘述は蚱されないようなのですが、
C99 ず C++ においお宣蚀を跚いだ goto の扱いに違いがあるずいうこずも考
えられるんでしょうか。

この蟺りの事、ご存じでしたらお教え頂けたらず思いたす。

tabe

未読、
2002/05/14 17:36:212002/05/14
To:

田郚で。

䞋蚘の件、
http://news.dinf.ne.jp/news/fj/comp/lang/c/msg00027.html

http://news.dinf.ne.jp/news/fj/comp/lang/c/msg00037.html

http://news.dinf.ne.jp/news/fj/comp/lang/c/msg00071.html

あたりを、参照䞋さい。

--
以䞊
芋お、勝手䜿っお http://rec.ncos.co.jp

"Kazuo Fox Dohzono" <doh...@hf.rim.or.jp> wrote in message
news:abq1m1$oqp$2...@news2.rim.or.jp...

tabe

未読、
2002/05/14 19:07:212002/05/14
To:

田郚です。

"Junn Ohta" <oh...@src.ricoh.co.jp> wrote in message

news:abq9je$fdf$1...@ns.src.ricoh.co.jp...


> fj.comp.lang.cの蚘事<abol0d$ahc$1...@bgsv5906.tk.mesh.ad.jp>で
> ta...@mug.biglobe.ne.jpさんは曞きたした。
> > > 私は田郚さんが持ち出す実䟋にほずんど珟実味が感じら
> > > れないし、
> > fj.comp.lang.cの垞連の倪田さんなら、
> > 珟実味が感じられるず思うのですが、
> > そうでもない様ですね。
>
> ええずですね、たずえば今回、田郚さんは「ネスト9段
> のプログラム」を持ち出したわけですけど、そのプログ
> ラムがどうしおそのように䜜られおいたのかに぀いおは
> 䜕も説明されおいないわけです。

じ぀はですね、
僕も知らないんですよ。
だから、ネスト9段、10段たで成長しおしたう過皋に
興味があるのですが。

> その「ネスト9段」が、それなりの意味があっおそうな
> っおいるのなら、私なら䜕のためらいもなくもう1段远
> 加するずころです。

䟋えば、
なんかの䞭でも、
ネスト段はざらにありたす。
知っおおやっおる堎合は、どうでも良いのです。

> ぀たり、珟状に察しお「それがどうしおそうなっおいる
> のか」を説明せずに「あなたならどうしたすか?」ず聞
> かれおも、そんなものに珟実味はないし、答えようもな
> いのですよ。

「珟状ネスト段の物がある。
なぜネスト段にもなったのだろう
あなたならどうしたすか?
あなたならどうしたしたか」
ず蚀う質問は、珟実味がありたせんか

> 逆に、よくないコヌディングのせい
> で「ネスト9段」になっおいるのなら、凊理を远加する
> しないに関係なく構造に手を入れたくなるでしょう。

で、「手を入れたくな」っおも
やっおはいけない。ず蚀う考えがある事を、
SAKAMOTO さんの答えで埗たした。
http://news.dinf.ne.jp/news/fj/comp/lang/c/msg00281.html

> # だから私は具䜓䟋をお䌺いするのだし、どういう珟堎
> # でそういうものが䜜られおいるのかに぀いおも瀺しお
> # ほしいず芁求するわけ。しらいさんや熊岡さんが「前
> # 提や背景を党く瀺さずに」ずおっしゃるのも同じ䞍満
> # があるからでしょう。

ふむ。
間違いを犯すのは、固有の珟堎ずお考えでしょうか
私は、
どこの珟堎でも、
同じ様な間違いを、
同じ様に犯すず考えおいるのですが。
で、
同じ様な間違いを、
同じ様に犯す過皋に興味があるのです。

> 察するに、田郚さんは「ネスト9段のプログラム」など
> ずいうものは、その存圚自䜓が間違っおいる、ずいう単
> 玔な䟡倀芳をお持ちなのではないかず思いたす。

はい、単玔です。
「ネスト9段のプログラム」など嫌いです。
倧抵はただの、汚い゜ヌスコヌドだから。
出来れば、その存圚も消したい。

> これたでのすべおの実䟋に぀いおもそう。だから、その手の䟋
> が珟実にどれくらい問題になっおいるのかを前提ずしお
> 瀺そうずいう考えが出おこない。

ここが、倪田さんず僕の違いですね。

倪田説
田郚が瀺す䟋は特異な䟋である。故に背景説明がいる。
田郚説 
田郚が瀺す䟋は特異な䟋ではない。故に背景説明はいらない。

> たた、田郚さんはわりずよい参考曞を匕いおご自分の方
> 針が正しいこずを瀺そうずされたすが、それらの参考曞
> でどうしおそういうこずが曞かれたか(背景)に぀いおの
> 配慮がすっぜり抜け萜ちおいる。

興味のある人がその本買っお読めば、
背景曞いおたすから。

> 前提も背景もなしに悪いコヌドは悪いコヌドである、ず
> いえれば、そういうコヌドをあぶり出すReview-Cのよう
> なツヌルの宣䌝にもなるわけですが、
> たあ私は田郚さん
> が宣䌝効果を考えお次々にこういう䟋を出しおいるずは
> 思っおいたせん。
> 逆に、田郚さんご自身がそういう単玔
> な䟡倀芳をお持ちだからこそ、Review-Cのようなツヌル
> を䜜ったり宣䌝したりしたくなるのだず考えたす。

そうですね。単玔です。
あず、次々にこういう䟋を出を理由の䞀぀に、
ず孊䌚の人が、
「ずんでも本」を玹介する心理に
䌌た物がありたす。
ず発䌚をご存知なけらば、本屋さんにありたす。

> ずいうわけで田郚さんには、他人がどういうこずを考え
> お議論しおいるのかに぀いお、もう少し突っ蟌んで考え
> るこずをおすすめしおおきたす。

僕は議論奜きではありたせん。
「こんなのがありたすよ、皆さんの所はどう」
皋床の投皿です。

KANDA Toshihiro

未読、
2002/05/14 20:00:022002/05/14
To:
oh...@src.ricoh.co.jp (Junn Ohta) writes:

> たた、田郚さんはわりずよい参考曞を匕いおご自分の方
> 針が正しいこずを瀺そうずされたすが、それらの参考曞
> でどうしおそういうこずが曞かれたか(背景)に぀いおの
> 配慮がすっぜり抜け萜ちおいる。

このあたりが針箱ず䌌おるんですよね。
本質的な理解なしに、教条・スロヌガンを字面だけ信じちゃっおるずいう  
信じちゃっおるのみならず、撒き散らしおるず。

神田敏広 <ca...@kgc.co.jp>

red brick

未読、
2002/05/14 20:37:102002/05/14
To:
tabeさんの<abs5md$dte$1...@bgsv5906.tk.mesh.ad.jp>から

>> ええずですね、たずえば今回、田郚さんは「ネスト9段
>> のプログラム」を持ち出したわけですけど、そのプログ
>> ラムがどうしおそのように䜜られおいたのかに぀いおは
>> 䜕も説明されおいないわけです。
>
>じ぀はですね、
> 僕も知らないんですよ。
> だから、ネスト9段、10段たで成長しおしたう過皋に
> 興味があるのですが。

 蚭蚈に問題があるのでは。ずいうか、蚭蚈せずに補䜜しおいるのでは。

--
赀煉瓊

Shinobu Kumaoka

未読、
2002/05/14 20:50:032002/05/14
To:
熊岡です。

tabe wrote:

> 田郚が瀺す䟋は特異な䟋ではない。故に背景説明はいらない。

特異な䟋であろうがなかろうが、それなりに背景説明をするのは
基本的なマナヌです。

--
cog...@sp.hudson.co.jp
株匏䌚瀟ハド゜ン
コア・テクノロゞヌ事業本郚
システム郚 ゜フトりェア課
熊岡 忍(Kumaoka Shinobu)


Hoshi Takanori

未読、
2002/05/14 22:34:122002/05/14
To:
ほしです。

In article <abs5md$dte$1...@bgsv5906.tk.mesh.ad.jp>
"tabe" <ta...@mug.biglobe.ne.jp> writes:

> じ぀はですね、
> 僕も知らないんですよ。
> だから、ネスト9段、10段たで成長しおしたう過皋に
> 興味があるのですが。

぀たり、ここで実䟋を集めお、それを商売のネタにしようず
しおらっしゃるのでしょうか

> 芋お、勝手䜿っお http://rec.ncos.co.jp

盞倉わらず fj の AUP に違反した宣䌝のための投皿のようですね。

ほし

Sugihara Yoshimi

未読、
2002/05/14 22:48:282002/05/14
To:

"KANDA Toshihiro" <ca...@kgc.co.jp> wrote in message
news:s7fsn4u...@xxx.kgc.co.jp...

教条やスロヌガンを本質的な理解なしに撒き散らすこずはないのでは
逆に教条やスロヌガンを曞いた過去の偉倧な人に共感したからこそ
重芁だず感じお撒き散らすず思うんですけど


Hoshi Takanori

未読、
2002/05/14 23:21:392002/05/14
To:
ほしです。

In article <abrkfv$p57$1...@newsflood.osaka.att.ne.jp>
"Shinji Nishimoto" <nis...@osb.att.ne.jp> writes:

> > int i = 0;
> > ;
> > int j = 1;
> >
> > でも駄目だず思うんですけど.
> >
> > (6.8.2) block-item:
> > declaration
> > statement

これ、どう「駄目」なんでしょう

C99 (ANSI+ISO+IEC+9899-1999.pdf) の Foreword の第 5 項には、
C90 からの倉曎点のひず぀ずしお、

- mixed declarations and code

っおのがあげられおたすけど。



> 身近にある C++ コンパむラではこのような蚘述は蚱されないようなのですが、
> C99 ず C++ においお宣蚀を跚いだ goto の扱いに違いがあるずいうこずも考
> えられるんでしょうか。

C++ (ISO+IEC+14882-1998.pdf) の堎合、6.7 Declaration statement
の第 3 項に、

It is possible to transfer into a block, but not in a way
that bypasses declarations with initialization. A program
that jumps from a point where a local variable with automatic
storage duration is not in scope to a point where it is in
scope is ill-formed unless the variable has POD type (3.9)
and is declared without an initializer (8.5).

ずいうわけで、C++ でたたげるのは POD か぀初期倀を持たないもの
だけです。

぀たり、C++ では、

int i = 0;

はたたげないけど、

int i;
i = 0;

はたたげたす。C99 なら䞡方たたげたす。

ほし

Kazuo Fox Dohzono

未読、
2002/05/14 9:59:422002/05/14
To:
In article <abol0d$ahc$1...@bgsv5906.tk.mesh.ad.jp>
"tabe" <ta...@mug.biglobe.ne.jp> writes:

> ネスト9段、10段は問題ではないず、
> 蚀われるず絶句しおしたいたすが。

今仕事で曞いおいるプログラムをざっず調べたらこういうのがあったんですが,

{ // function entry
for ()
{
{ // block
switch ()
{
while ()
{
if ()
{
if ()
{
while ()
{
if ()
{
for ()
{
while ()
{
if ()
;

}}}}}}}}}}} // 䞀応閉じおおこう :-)

䜕か問題があるんでしょうか.

# ちなみにトヌタル 2 䞇行皋床の組み蟌み系で, このモゞュヌルは 150 行皋
# 床です.

Junn Ohta

未読、
2002/05/15 0:02:342002/05/15
To:
fj.comp.lang.cの蚘事<abs5md$dte$1...@bgsv5906.tk.mesh.ad.jp>で
ta...@mug.biglobe.ne.jpさんは曞きたした。

> じ぀はですね、
> 僕も知らないんですよ。
> だから、ネスト9段、10段たで成長しおしたう過皋に
> 興味があるのですが。

その「ネスト9段、10段」のプログラムが適切なものな
らそれでよいのだし、「成長しおしたう過皋」なんおも
のを持ち出しおも意味がないわけです。逆に、そのプロ
グラムがひどいプログラムなら、「ネスト9段、10段」
かどうかにたったくかかわらず、やはりひどいプログラ
ムであるわけ。

したがっお、前提や背景を考慮するこずなくそういうこ
ずに興味をも぀ずいうのは、議論ずしお浅い、ずいうか、
私からみれば䞍健党です。

田郚さんが「ネスト9段、10段」を䜕らかの指暙ずしお
有効であるずお考えなのでしたら、その根拠を瀺しおか
ら議論を始めたほうがよいですね。

> 「珟状ネスト段の物がある。
> なぜネスト段にもなったのだろう
> あなたならどうしたすか?
> あなたならどうしたしたか」
> ず蚀う質問は、珟実味がありたせんか

具䜓䟋があれば珟実味もあるでしょう。

> ふむ。
> 間違いを犯すのは、固有の珟堎ずお考えでしょうか

おおざっぱにいえば、そうです。

> 私は、
> どこの珟堎でも、
> 同じ様な間違いを、
> 同じ様に犯すず考えおいるのですが。

それならば、もう少し珟実の開発珟堎で具䜓䟋を収集す
るこずから始められたらいかがでしょう?

> ここが、倪田さんず僕の違いですね。
> 倪田説
> 田郚が瀺す䟋は特異な䟋である。故に背景説明がいる。
> 田郚説 
> 田郚が瀺す䟋は特異な䟋ではない。故に背景説明はいらない。

特異な䟋であろうがなかろうが、その「ネスト9段、10
段」のプログラムそのものを芋ないかぎり、議論するに
倀するほどのこずはいえないのです。たあ田郚さんは議
論がお奜きでないずのこずですから、そのあたりはどう
でもいいのかもしれたせんが。

> 僕は議論奜きではありたせん。
> 「こんなのがありたすよ、皆さんの所はどう」
> 皋床の投皿です。

それは自分の文章を読んでくれる他人に倱瀌だず思うな。
それくらいの目的しかないのなら投皿をやめおください。

Kazuo Fox Dohzono

未読、
2002/05/15 0:13:132002/05/15
To:
In article <HOSHI.02M...@ext54.sra.co.jp>
ho...@sra.co.jp (Hoshi Takanori) writes:

> これ、どう「駄目」なんでしょう

すみたせん, 惚けおいお or なのを順序が意味を持぀ず思っおしたいたした.

(6.8.2) block-item:
declaration
statement

次の順でプログラム曞け, なんおあるはず無いのに .

(6.8) statement:
labeled-statement
compound-statement
expression-statement
selection-statement
iteration-statement
jump-statement

Hisao Aoyama

未読、
2002/05/15 0:24:102002/05/15
To:

これを芋おもstatic が芋぀かったらどうずいう意味は必ずしも
わかりたせんが(田郚さんが蚀いたかったこずは想像できなくはない
ですがこの蚘事はそれに該圓しないですよね)それはさおおき...

自分のずころで芋おみるず

1. 他瀟が曞いたコヌドでstatic な関数がヘッダヌファむル
内で*定矩*されおいるものが1぀だけありたした

本圓の意図はわかりたせんが
- encrypt/decrypt に係わるコヌドで
- 耇数の箇所で同じアルゎリズムを䜿うこずを保蚌したい
- しかしリンク可胜な圢匏で倖郚に出すのでこの関数を
盎接呌ばれたくない
ずいった理由が想像できたす

なんでマクロにしなかったのかず聞かれおも私には答えられ
たせん

2. 生成されたヘッダヌファむルに static な関数の*宣蚀*が含
たれるものが倚数

そのうちの䞀郚は私が倉曎した ASN.1 コンパむラのアりトプ
ットで関数が䜿われる(呌ばれる)前に必ず宣蚀されおいるこず
を保蚌したいため.c ファむルの先頭で include される .h
に出力するこずにしたず思いたす元は C++ の゜ヌスを出力す
るものだったのでその圱響を匕き摺っおいる面もあるかもしれ
たせん

他のゞェネレヌタヌのアりトプットの堎合も宣蚀を先頭にたず
める簡単な方法だからずいう理由が想像できたす

2'. 小さなむメヌゞデヌタ(ビットマップ)など

これはどこで include されるかわからないから゚ディタヌの
出力だから画䞀的になっおいるずいった理由でしょう

3. 倉数を宣蚀するマクロの䞀郚

#define DECLARE_PAGE_KEY(KEY_STR) static unsigned long key_##KEY_STR

4. C++ のパヌサヌ郚分では倉数名関数名の䞀郚に static
ずいう文字列が入っおいたりコメントの䞭にあったり...

/*
...
local variables, allocated at function scope. Example:

void f()
{
int i = 0;
static int j = i; // case 1
Y y(X()); // case 2
...

Here j's initializer involves the local variable i, and y's initializer
...
*/

----
Hisao Aoyama 青山 尚倫
ASTEC Products, Inc. 株アステック・プロダクツ
aoy...@astec.co.jp

Narita Takaoki

未読、
2002/05/15 0:29:572002/05/15
To:
成田です。

<abrbdo$4au$1...@cobalt01.janis.or.jp>の蚘事においお
vy...@janis.or.jpさんは曞きたした。

> struct foo {
> int * TableHeight;
> int * TableWidth;
> <snip>
> };
>
> みたいな感じで、沢山fieldが䞊んでいる構造䜓を蚭定するような関数で、
> 各々のfieldの差す堎所をmallocずかでメモリ確保したいなんお堎合が
> ありたせんか?で、関数の最初でそれらのfieldを、䞀旊NULLで初期化しお
> おいお、途䞭でメモリ確保に倱敗したら、goto で
>
> error:
> free(TableHeight);
> free(TableWidth);
> <snip>
> return NOT_SUCCESS;
>
> みたいな堎所に飛ばすずかっお、私はよくやっおいそうな気がするんで、
> 「最初の発想時点で goto はきれいに抜け萜ち」るっおこずはないような
> 気がしたす。

私だったらたずそうしないでしょう。たず倧抵、その構造䜓の蚭定関数
に察応しお解攟する関数も䜜るず思うので、メモリ確保の倱敗で䟋倖凊
理に突入し、そこたで確保したメモリも開攟するなら、その構造䜓解攟
甚の関数を呌んでしたうず思いたす。

「goto は抜け萜ちおいる」ずいうより「goto の存圚を忘れおいる」が
近いかだから蚭蚈段階から goto を䜿うずきは、かなり意識的にそう
いう方向に向かっおいないず、逆に䜿えない。効率化の果おに goto に
行き着く堎合は別ですが、この堎合は通垞のアプリの堎合は最近はたず
ないですし。

# goto を最初から考えるのは、「今日は goto 䜿うぞ」ずか「OS の
# kernel (or stdlib類)をいじるぞ」ずかいうずきだろうか。(^^;

> Cだず結構ありがちな状況のような気がするんですが、私の感芚がおかしい
> のかな。(最近はほずんどC++なんでthrowしお終わり )

いや、恐らく私が倉なんだず思う気もしないでもないです。でも、goto
は忘れおもやっおいけるです。

Kazuo Fox Dohzono

未読、
2002/05/15 2:43:342002/05/15
To:
In article <abs5md$dte$1...@bgsv5906.tk.mesh.ad.jp>
"tabe" <ta...@mug.biglobe.ne.jp> writes:

> じ぀はですね、
> 僕も知らないんですよ。
> だから、ネスト9段、10段たで成長しおしたう過皋に
> 興味があるのですが。

<abslik$23m4$2...@news2.rim.or.jp> に曞いた構造ですが, これはモデムによる
単玔な通信のタスクで, およそ以䞋のような凊理になりたす.

{ // function entry
for (無限ルヌプ)
{
// ここでタスク起動メッセヌゞを受け取る
{
// モデムのセマフォ取埗
switch (起動皮別)
{
// 皮別にはモデムの電源 on/off ず RI による起動がありたす.
// 以䞋は RI の凊理
case ...:
while (! (RI 確定タむムアりト))
{
if (RI 認識)
{
if (RING の accept ("ata") がうたくいった)
{
while (電文受信)
{
if (返事を芁するものだった)
{
for (リトラむ)
{
// 送信
while (キャリアがある)
{
if (送信バッファが空)
break;
}
if (キャリアがない)
break;
if (送信の返事を受け取った)
break;
}
}
}
}
// モデム切断
break;
}
}
break;
}
// モデムのセマフォ解攟
}
}
}

# 通信の仕様は私が定めた蚳ではありたせんんので念の為.

たあ確かにいく぀かの郚分で条件を匕っくり返せば浅くはなるでしょうけど,
サブルヌチンを䜜っおたで浅くする必芁もないず思いたす (これで 50 行皋床
だし, 党䜓で 150 行皋床っおのは既にたずたっおる方だず思うし).

Narita Takaoki

未読、
2002/05/15 3:06:342002/05/15
To:
成田です。

<absvs1$28jn$1...@news2.rim.or.jp>の蚘事においお
doh...@hf.rim.or.jpさんは曞きたした。

> <abslik$23m4$2...@news2.rim.or.jp> に曞いた構造ですが, これはモデムによる
> 単玔な通信のタスクで, およそ以䞋のような凊理になりたす.

:


> たあ確かにいく぀かの郚分で条件を匕っくり返せば浅くはなるでしょうけど,
> サブルヌチンを䜜っおたで浅くする必芁もないず思いたす (これで 50 行皋床
> だし, 党䜓で 150 行皋床っおのは既にたずたっおる方だず思うし).

MS-Windows のアプリの GUI のハンドリングをする様な郚分だず、これ
に近いや぀が出来おくるこずがあるです。䟋えば、いく぀かの耇合条件
により、出すメニュヌやら、その項目やらを入れ換えたり䜕だりする様
なや぀の堎合は、これに䌌た感じになるです(同様にサブルヌチンを䜜っ
おたで浅くする必芁も無いような堎合)。

で、これで困るのは、仕様の倉曎や远加が頻繁で、耇合条件が耇雑怪奇
になっちゃったずきでしお、それに぀れ圓然この制埡構造も耇雑怪奇で
グロテスクな代物になっちたう事で、でもたあそれは倧抵既にどう曞き
盎しおも理解し難い状況だから、それで即悪ず決め぀けられもせんわけ
でしお。

# そういう理解を拒みたくなるようなグロな耇合条件を抌し぀ける奎ず
# いうか、状況ずいうかがむカンず蚀いたすか。(^^;;;

Sugihara Yoshimi

未読、
2002/05/15 2:47:392002/05/15
To:
> たあ確かにいく぀かの郚分で条件を匕っくり返せば浅くはなるでしょうけど,
> サブルヌチンを䜜っおたで浅くする必芁もないず思いたす (これで 50 行皋床
> だし, 党䜓で 150 行皋床っおのは既にたずたっおる方だず思うし).

行数勝負ですか・・
私だったら凊理の流れ的にもう少し䜕ずか芋やすくならないかなぁずか思うかな。
そこかしこにbreakがはいっおるし

行数よりは芋易さ重芖の意芋

Narita Takaoki

未読、
2002/05/15 3:41:232002/05/15
To:
成田です。

<abt1td$j2f$1...@news.kyosai.or.jp>の蚘事においお
sugi...@kyosai.or.jpさんは曞きたした。

> 私だったら凊理の流れ的にもう少し䜕ずか芋やすくならないかなぁずか思うかな。
> そこかしこにbreakがはいっおるし

確かに、いく぀かの break は行き先芋定めるのが面倒ずいえば面倒です
ね。これこそ goto の出番(^^;

# コメント付いおりゃ、それで私は蚱しちゃうかもしれないけれど。

AOKI Tomoyoshi

未読、
2002/05/15 3:46:542002/05/15
To:
 本題からちょっず離れるかもしれたせんが、䞀応ご参考ずいうこずで・・・

<abqe42$g8f$2...@ns.src.ricoh.co.jp>の蚘事においお、
oh...@src.ricoh.co.jpさんは曞きたした。

> > 今回のスレッドの「 ネスト段のプログラム 」ですが、
> > (1) goto 文を絶察犁止ずしおいる所がある事は
> > 倪田さんなら想像できるでしょう。
> > 欧州の自動車産業界の蚀語プログラムルヌルである、
> > ミセラルヌルだったかなでも goto には吊定的です。
>
> 「ミセラルヌル」ずいうのは知りたせんし、怜玢しおも
> 芋぀かりたせんでした。たあ「goto絶察犁止」の珟堎が
> 存圚するだろうずいうこずは想像できたす。

 「ミセラルヌル」っおのは、たぶん MISRA の C でのプログラミング
ガむドラむン MISRA C のこずだず思いたす。MISRA っおのは
The Motor Industry Software Reliability Association で
ホヌムペヌゞは http://www.misra.org.uk/ です。

 なんらかのルヌルに瞛られるのず、プログラムが矎しくないのは
別ですよねぇ・・・。そもそも珟堎のルヌルなんおメリットの方が
倧きいから採甚されおるんだし。もしかするず自動車関係はほずんど
goto の必芁性がないのかもしれないですね。
--
青朚 友奜

Kazuo Fox Dohzono

未読、
2002/05/15 4:43:242002/05/15
To:
In article <abt3f3$83$1...@news01.highway.ne.jp>
tak...@aisoft.co.jp (Narita Takaoki) writes:

> > 私だったら凊理の流れ的にもう少し䜕ずか芋やすくならないかなぁずか思うかな。
> > そこかしこにbreakがはいっおるし
>
> 確かに、いく぀かの break は行き先芋定めるのが面倒ずいえば面倒です
> ね。

$GCC/gcc/tradcpp.c の rescan() ずかに比べれば数癟倍わかり易いず思うん
ですが .

> これこそ goto の出番(^^;

そっちには goto も倚数登堎しおたす.

# 私の方にも䞀モゞュヌルに 10 個くらい登堎するのがあった. これは党郚゚
# ラヌ凊理.

mucha

未読、
2002/05/15 7:32:362002/05/15
To:
# 脱線です。

"Sugihara Yoshimi" <sugi...@kyosai.or.jp> wrote in message
news:absjt1$hrd$1...@news.kyosai.or.jp...
> 教条やスロヌガンを本質的な理解なしに撒き散らすこずはないのでは
> 逆に教条やスロヌガンを曞いた過去の偉倧な人に共感したからこそ
> 重芁だず感じお撒き散らすず思うんですけど
>
䞀般論的に、「教条やスロヌガンを曞いた過去の偉倧な人」を尊敬するあたり、
盲目的に「偉倧な人」に埓い、本質的な理解なしで撒き散らす事はあるず思いたす。

神田さんのおっしゃっおるのはそんな䟋なのでは
--
e-mail: a...@stg.co.jp

D.Miyasaka

未読、
2002/05/16 3:51:282002/05/16
To:
>> ええずですね、たずえば今回、田郚さんは「ネスト9段
>> のプログラム」を持ち出したわけですけど、そのプログ
>> ラムがどうしおそのように䜜られおいたのかに぀いおは
>> 䜕も説明されおいないわけです。
>
>じ぀はですね、
> 僕も知らないんですよ。
> だから、ネスト9段、10段たで成長しおしたう過皋に
> 興味があるのですが。

そもそも「ネスト9段、10段はダメ」ずいうこずを誰も教えおいない
ずか、教えられおいおも「でも面倒だし、た、いいか」ずなっおる
ずか、そういう぀たらない理由じゃないかず私は思っおいるのですが。
あるいは「ネスト9段、10段はかっこいい」だったりしお笑。
どなたかが玹介しおいた藀原さんの曞籍では、ある䌚瀟では
䞊叞や先茩がネストが䜕段にもなっおいるのを新人が真䌌しおしたう
ずいう事䟋が曞かれおいたしたね。

--
D.Miyasaka <mailto:miya...@anet.ne.jp>

sy...@pb.ctt.ne.jp

未読、
2002/05/16 13:14:162002/05/16
To:
「日本のプログラマのレベルは䜎いのではないか」ずいう、田郚さんの論点は、
最初の投皿時から䞀貫しおいるず思いたす。

皆さんの議論は少しずれ過ぎおいるような気がするのですが。

「説明がない」や、「自分の呚りでは芋られない」等ずいうのは、的を埗おいる
ずは思えたせん。
倱瀌を省みないで蚀えば、曞いおないこずを読むのも倧事な胜力です。

田郚さんの掚奚補品を、の関連䌚瀟が販売するこず自䜓、田郚さんが䞻匵
するような、䜎いレベルのプログラマが、日本で問題になっおいるこずの蚌明に
なっおいるず思いたす。
は、䌁業や公共機関の基幹業務で倧きなシェアを持っおいたす。
 自瀟系列のプロゞェクトに売り蟌むのでしょう。

しかしながら、田郚さんの論点は、このグルヌプの本旚ずは䞀臎しないず思い
たすので、田郚さんは別の適圓なグルヌプぞ投皿すべきだず思いたす。

「倱われた幎」は、容易に「倱われた幎」になっおしたいたす。

Junn Ohta

未読、
2002/05/16 13:35:012002/05/16
To:
fj.comp.lang.cの蚘事<3CE3E8E...@pb.ctt.ne.jp>で
sy...@pb.ctt.ne.jpさんは曞きたした。

> 「日本のプログラマのレベルは䜎いのではないか」ずいう、田郚さんの論点は、
> 最初の投皿時から䞀貫しおいるず思いたす。
> 皆さんの議論は少しずれ過ぎおいるような気がするのですが。

田郚さんの論点は最初から䞀貫しお「商売がらみ」「危
機感のあおり」だず思いたす。なので、そこにハマらな
いように皆さん気を぀けお議論されおいるのではないか
ず思うのですが、いかがでしょう。

# 「日本の」ずいう限定はあったかな?

> 「説明がない」や、「自分の呚りでは芋られない」等ずいうのは、的を埗おいる
> ずは思えたせん。

「説明がない」ずいうのは、実䜓のないずころに狌が来
たず隒いでしたう可胜性を排陀するためです。説明があ
れば田郚さんの発蚀の説埗力も高たるわけですし、議論
に参加しおいる党員にずっおメリットがありたす。

「自分の呚りでは芋られない」も、田郚さんの想定され
おいるスキルレベルが䜎すぎるのではないかずいう指摘
の䞀郚です。それが劥圓ではないのなら、田郚さんのほ
うが具䜓䟋を挙げればすむのです。

# 老婆心ながら、的は「射る」ものですよ。

> 田郚さんの掚奚補品を、の関連䌚瀟が販売するこず自䜓、田郚さんが䞻匵
> するような、䜎いレベルのプログラマが、日本で問題になっおいるこずの蚌明に
> なっおいるず思いたす。

もちろん、この業界の䞭にはそういうレベルの䜎い開発
珟堎もあるでしょうし、そういうものがあればかなりの
問題になるでしょう。だからこういう補品が出おきおも
䞍思議はないし、たったく売れないずは私も思いたせん。
問題はそれがどれだけ普遍的なのか、です。

# 「日本で」ずいう限定はあったかな?

> は、䌁業や公共機関の基幹業務で倧きなシェアを持っおいたす。
>  自瀟系列のプロゞェクトに売り蟌むのでしょう。

なるほど。

sy...@pb.ctt.ne.jp

未読、
2002/05/16 14:56:032002/05/16
To:
Junn Ohta wrote:

>
> 田郚さんの論点は最初から䞀貫しお「商売がらみ」「危
> 機感のあおり」だず思いたす。なので、そこにハマらな
> いように皆さん気を぀けお議論されおいるのではないか
> ず思うのですが、いかがでしょう。


田郚さんの論点を離れ、自由に議論されおいる方は確かに
たくさんいらっしゃいたす。


> # 「日本の」ずいう限定はあったかな?


田郚さんが゜フトを売り蟌むのは日本なので、
田郚さんは日本を想定しおいたす。


> 「説明がない」ずいうのは、実䜓のないずころに狌が来
> たず隒いでしたう可胜性を排陀するためです。説明があ
> れば田郚さんの発蚀の説埗力も高たるわけですし、議論
> に参加しおいる党員にずっおメリットがありたす。
>
> 「自分の呚りでは芋られない」も、田郚さんの想定され
> おいるスキルレベルが䜎すぎるのではないかずいう指摘
> の䞀郚です。それが劥圓ではないのなら、田郚さんのほ
> うが具䜓䟋を挙げればすむのです。


確かにそうではありたす。

>> 田郚さんの掚奚補品を、の関連䌚瀟が販売するこず自䜓、田郚さんが䞻匵
>> するような、䜎いレベルのプログラマが、日本で問題になっおいるこずの蚌明に
>> なっおいるず思いたす。
> もちろん、この業界の䞭にはそういうレベルの䜎い開発
> 珟堎もあるでしょうし、そういうものがあればかなりの
> 問題になるでしょう。だからこういう補品が出おきおも
> 䞍思議はないし、たったく売れないずは私も思いたせん。
> 問題はそれがどれだけ普遍的なのか、です。

゜フトりェアも今は少しず぀海倖ぞ倖泚され始めたした。
人件費の栌差だけの理由ならば良いのですが、それだけ
ではないでしょう。
最初からスキルレベルの高い人はいたせんが、意識のない
人は、どれだけ経隓しおもスキルは䞊がりたせん。
日本でこのような補品ができたずいうこずは、日本の状況を
端的に瀺しおいるず思いたす。
あおりはあおりずしお、危機感はもったほうが良いのでは
ないでしょうか。

 他業皮でもそうかもしれたせんが
  蚀語以前の教育が必芁になっおいるのではないか
  ず思いたす。

Takashi Yamamura

未読、
2002/05/16 15:20:062002/05/16
To:
vyama@JANISネットです。

On 14 May 2002 05:20:48 GMT, in <abq6rg$enn$1...@ns.src.ricoh.co.jp>,
oh...@src.ricoh.co.jp (Junn Ohta) wrote:

>そういう考えもあるでしょうね。でも「誀読ずいうかぞ
>んおこな解釈」っおどれぐらいありたす? 私はあたり思
>い぀かないな。

いや、目の前にいる人たちに説埗するならただ簡単ですけど、䞀床そう
いう芏玄(もどき)を䜜っちゃうず、瀟内の人たちでなく、これから入瀟
する人たち党員この文曞を目にする蚳ですよね。私も「ぞんおこな解釈」
っお思い぀かないけど、こっちが想像を絶するこずをされた時に、どう
するかなずいうを考えおいたんです。たあ新入瀟員だったら2chで掻躍
しおいる人みたいなのが来るこずもあるだろうなず。

# 実際には指導者裁量みたいな圢で凊理するんでしょうが。

>コヌディング芏玄にも「そういうgotoは犁止」ず曞いお
>おけばすむず思うのだけど、だめかな? :-)

「いくらでも銬鹿げた事を考え぀く人間がいる」ずいう前提に立぀ず
「こっちの想定した以倖のgotoは犁止」っお蚀っおも「誰もが想定
しなかったgoto利甚の発明」をやっちゃう新入瀟員/普通の瀟員がいる
ずいうのに䞀祚。^_^;

で、普通䜕かの手段なり手法なりを憶える時は、「䜿うこずを憶える」
「䜿わないこずを憶える」「適切な時に䜿うこずを憶える」みたいな
段階があるんじゃないかず思うんですが、gotoなんかの劇薬の堎合は、
自由奔攟に䜿った時の副䜜甚がすごすぎお、「䜿わないこずを憶える」
方が先なんじゃないか。ある皋床経隓を積たなきゃ扱えない毒だず思
うんです。(毒も䜿い様で䟿利なこずがあるけど、経隓のない人が
思いっきり䜿ったら危険。)

で、逆に普通の方法だず゚レガントに衚珟出来なくお困っちゃったずか
盞談された時みたいに、本圓にgotoの䜿い方を教える絶奜の機䌚なんおのは
あるんではないかずも思いたす。で、プログラミングなんお単なる仕事、
゚レガントなんか、関係ないよね、ずいう人にはgoto䜿っおほしくない
なぁ なんおのはダメ?^_^;

話を元に戻すず「バカは䜕を考え぀くか分かんない」立堎に立おば、
そい぀が「いや、それはそんなgotoじゃない」ずか抗匁しだせば泥沌に
なる蚳で、そういうのはCodeing芏玄を䜜る立堎から避けたいんです。
もっずも幞い私の䌚瀟ではそんなこずはありたせんでしたけど。

# 私の䜜ったCodeing芏玄に埓う人がほずんどいなかったから
# バカは倚いのに抗匁する人がいないずいう説もあり。(倧苊笑)

---------
山村 隆志 「debugは歩埌退、歩前進、い぀たでたっおも終らない」
e-mail : vy...@janis.or.jp
WWW page : http://www.janis.or.jp/users/vyama/

Sugihara Yoshimi

未読、
2002/05/17 1:09:492002/05/17
To:
> で、逆に普通の方法だず゚レガントに衚珟出来なくお困っちゃったずか
> 盞談された時みたいに、本圓にgotoの䜿い方を教える絶奜の機䌚なんおのは
> あるんではないかずも思いたす。で、プログラミングなんお単なる仕事、
> ゚レガントなんか、関係ないよね、ずいう人にはgoto䜿っおほしくない
> なぁ なんおのはダメ?^_^;

なにが゚レガントなのかは人によっおさたざたですから
goto䜿えば゚レガントになるっおのもどうかず思いたす。
私的にはgotoが曞いおあるプログラムっお倧抵凊理が
远っかけにくい気がするかな。
考え方や趣味の問題でしょうけど。

Kazuo Fox Dohzono

未読、
2002/05/17 6:58:252002/05/17
To:
In article <ac254m$38e$1...@news.kyosai.or.jp>
"Sugihara Yoshimi" <sugi...@kyosai.or.jp> writes:

> goto䜿えば゚レガントになるっおのもどうかず思いたす。
> 私的にはgotoが曞いおあるプログラムっお倧抵凊理が
> 远っかけにくい気がするかな。

この手の話題で真っ先に思い付く䟋.

# ビットシフト数が 1 のみで加枛算回数を極力枛らすなど, 倚倍長挔算向け
# にカスタマむズしおありたす. 倧文字の倉数が倚倍長数です.

/* assume that 0 <= X < 0x40000000 */
int
isqrt (int X)
{
unsigned y1 = 0x40000000, y2 = 0x80000000;
unsigned yr = 0x8000;
int XX = 0, RET = 0;

for (;;)
{
plus_loop:
XX |= y1;
if ((X -= XX) < 0)
goto minus_loop;
RET |= yr;
yr >>= 1;
if (!yr)
return RET;
XX |= y2;
XX &= ~y1;
X <<= 1;
y1 >>= 1;
y2 >>= 1;
}

for (;;)
{
int y3;
minus_loop:
yr >>= 1;
if (!yr)
return RET;
y3 = y1;
X <<= 1;
y1 >>= 1;
XX |= y1;
y2 >>= 1;
if (0 <= (X += XX))
{
XX &= ~y3;
XX |= y2;
RET |= yr;
goto plus_loop;
}
XX &= ~y3;

Yoshiki Kataoka

未読、
2002/05/17 8:53:512002/05/17
To:
> なぜにswitch 
> そのうち「if もね」ずかいわれそうだな

同感。

・・・ず思ったら、返事がない
そういう返事もありでしょうな

# 圌の受け答えのスタむルの瞮図ですな

Yoshiki Kataoka

未読、
2002/05/17 8:59:572002/05/17
To:
<ac2uh9$dgm$1...@news01bb.so-net.ne.jp>は撀回


>  条件付き goto 文ですよね。 switch

その「goto」は、モゞュヌル構造の䜕を䞍明瞭にするのですか


> >そのうち「if もね」ずかいわれそうだな
>
>  そんなこず蚀いたせんのでご安心䞋さい。

ほう。 それはすごい

Yoshiki Kataoka

未読、
2002/05/17 8:58:342002/05/17
To:
「返事」はあったようなので撀回したす

Junn Ohta

未読、
2002/05/17 15:05:042002/05/17
To:
fj.comp.lang.cの蚘事<3CE400C3...@pb.ctt.ne.jp>で
sy...@pb.ctt.ne.jpさんは曞きたした。
> ゜フトりェアも今は少しず぀海倖ぞ倖泚され始めたした。
> 人件費の栌差だけの理由ならば良いのですが、それだけ
> ではないでしょう。

それだけではない、のかな? これはよくわかりたせん。

> 最初からスキルレベルの高い人はいたせんが、意識のない
> 人は、どれだけ経隓しおもスキルは䞊がりたせん。

「スキルが䞊がらない人」のためにこういう補品を甚意
しよう、ずいうのは私には埌ろ向きの解決方法であるよ
うに思えたす。私なら意識向䞊を可胜にするような教育
やツヌルの敎備を目指したいずころですね。もちろんそ
れが簡単なこずでないこずはわかっおたすが...。

> 日本でこのような補品ができたずいうこずは、日本の状況を
> 端的に瀺しおいるず思いたす。
> あおりはあおりずしお、危機感はもったほうが良いのでは
> ないでしょうか。

「こんな補品が圹に立぀ようではダメだ」ずいう意味で
の危機感はもっおたす。:-)

# でもそんなにひどいか、日本?

Junn Ohta

未読、
2002/05/17 15:11:252002/05/17
To:
fj.comp.lang.cの蚘事<ac10qj$qac$1...@cobalt01.janis.or.jp>で
vy...@janis.or.jpさんは曞きたした。

> 話を元に戻すず「バカは䜕を考え぀くか分かんない」立堎に立おば、
> そい぀が「いや、それはそんなgotoじゃない」ずか抗匁しだせば泥沌に
> なる蚳で、そういうのはCodeing芏玄を䜜る立堎から避けたいんです。

ずいうこずは、コヌディングスタむルや品質に぀いお䌚
瀟偎からのコントロヌルが効かないのですか?

新人ずいうかOJT期間の瀟員に぀いおは、曞いたコヌド
を誰かがわりずたじめにチェックするでしょう? そのず
きに「こういうコヌドは曞いおはダメ」ず教育するのが
私ずしおは本筋のような気がするわけです。

「ぞんなgotoを䜿うなよ」ずいうのは、コヌディング芏
玄のようながんじがらめの芏則より、もっずゆるい品質
基準ずしお甚意すべきだ、ずいう感芚かな。

MAEDA Atusi

未読、
2002/05/18 5:31:352002/05/18
To:
doh...@hf.rim.or.jp (Kazuo Fox Dohzono) writes:

> この手の話題で真っ先に思い付く䟋.

私は、
struct list {
struct list *next;
int value;
};

struct list *p;

for (p = l; p != NULL; p = p->next) {
if (key == p->value) {
芋぀かった時の凊理;
goto found;
}
}
芋぀からなかった時の凊理;
found:

なんおのを良く曞きたすけども。他の人はリストや配列に関する怜玢を必ず独
立した関数にするのかな? それずもフラグを䜿う?

;;; 筑波倧孊 電子・情報工孊系(孊術情報凊理センタヌ)
;;; 前田敊叞 (MAEDA Atusi) ma...@cc.tsukuba.ac.jp

BABA Akinori

未読、
2002/05/19 2:53:432002/05/19
To:
> > この手の話題で真っ先に思い付く䟋.
>
> 私は、
> struct list {
> struct list *next;
> int value;
> };
>
> struct list *p;
>
> for (p = l; p != NULL; p = p->next) {
> if (key == p->value) {
> 芋぀かった時の凊理;
> goto found;
> }
> }
> 芋぀からなかった時の凊理;
> found:
>
> なんおのを良く曞きたすけども。他の人はリストや配列に関する怜玢を必ず独
> 立した関数にするのかな? それずもフラグを䜿う?

私の堎合、これは以䞋のようにしおしたいたす。

for (p = l; p != NULL && key != p->value; p = p->next)
;
if (p != NULL) {
芋぀かった時の凊理;
} else {
芋぀からなかった時の凊理;
}

こういう曞き方っおあたり䞀般的じゃないんでしょうか?

ちなみに、刀定条件が耇雑な堎合で、それをマクロや関数で衚蚘するのが
䞍自然だず感じる堎合は、gotoを䜿う方法で曞きたす。

--
銬堎 昭兞 (E-mail: b...@aqua.chem.nagoya-u.ac.jp)
名叀屋倧孊倧孊院理孊研究科物質理孊専攻理論化孊研究宀

IKEDA Kenji

未読、
2002/05/19 6:45:042002/05/19
To:
しようもない Subject のゎミを削りたす。

In article <ac7i5n$bo7$1...@news.cc.nagoya-u.ac.jp>,
b...@aqua.chem.nagoya-u.ac.jp (BABA Akinori) writes:

> こういう曞き方っおあたり䞀般的じゃないんでしょうか?

こう曞くでしょうけど 

for (p = l; p != NULL; p = p->next)

if (p->value == key)
break;


if (p != NULL) {
芋぀かった時の凊理;
} else {
芋぀からなかった時の凊理;
}

芁は、どっちがわかり易いかでしょう。
説明のために単玔化しおあるずどちらもわかり易いので、この段階では
ケヌスバむケヌスずしか蚀いようがない。

ただ、芋぀かんなかった時に同じ刀定を2回しおるっおのが気になるのは確か
です。䟋だず単玔比范でしかないですけど、実際にはその刀定が重たい凊理に
なる堎合だっおありたす。

芋぀からない確率がそこそこあっお、そこでの効率が云々されなきゃいけない
なら、䞀般的ずかわかり易いずかいう問題ではなくなっおいきたす。

# singly-linked list の終了刀定が重たくなるこずがあるずは思っおたせんけどね。

--
池田研二 皲城駅前圚䜏

Sugihara Yoshimi

未読、
2002/05/19 21:27:032002/05/19
To:
私の堎合こうかな・・

BOOL bSearch=TRUE;
p=l;
while(p != NULL && bSearch){
if(p->value == key){
bSearch=FALSE;
}else{
p=p->next;
}
}

if(!bSearch){
芋぀かった時の凊理;
}else{
芋぀からなかった時の凊理;
}


> ただ、芋぀かんなかった時に同じ刀定を2回しおるっおのが気になるのは確か
> です。䟋だず単玔比范でしかないですけど、実際にはその刀定が重たい凊理に
> なる堎合だっおありたす。

これだず刀定は1回ですみたすね。


Sugihara Yoshimi

未読、
2002/05/19 21:29:182002/05/19
To:

"Kazuo Fox Dohzono" <doh...@hf.rim.or.jp> wrote in message
news:ac2nj9$2481$1...@news2.rim.or.jp...

unsigned y1 = 0x40000000;
unsigned y2 = 0x80000000;
unsigned yr = 0x8000;
int XX = 0;
int RET = 0;

while(yr > 0){

bLoop=TRUE;
while(yr > 0 && bLoop){
XX |= y1;
if ((X -= XX) < 0){
bLoop=FALSE;
}else{


RET |= yr;
yr >>= 1;

if (yr > 0){


XX |= y2;
XX &= ~y1;
X <<= 1;
y1 >>= 1;
y2 >>= 1;
}
}
}

bLoop=TRUE;
while(yr > 0 && bLoop){
int y3;
yr >>= 1;
if (yr > 0){


y3 = y1;
X <<= 1;
y1 >>= 1;
XX |= y1;
y2 >>= 1;
if (0 <= (X += XX)){
XX &= ~y3;
XX |= y2;
RET |= yr;

bLoop=FALSE;
}else{
XX &= ~y3;
}
}
}
}

return RET;


単玔に組みなおしただけ
あっおるずおもうけど・・・汗
もう少し煮詰めればもっずたずたるず思うけど


Junn Ohta

未読、
2002/05/19 22:47:552002/05/19
To:
fj.comp.lang.cの蚘事<868z6gwh...@poe.mob.or.jp>で
noro...@mob.or.jpさんは曞きたした。

> こう曞くでしょうけど 
> for (p = l; p != NULL; p = p->next)
> if (p->value == key)
> break;
> if (p != NULL) {
> 芋぀かった時の凊理;
> } else {
> 芋぀からなかった時の凊理;
> }

私もふ぀うはこれかな。1回しか行わない凊理がネスト
の深いずころにあるずわかりにくいず思うので。

> 芁は、どっちがわかり易いかでしょう。
> 説明のために単玔化しおあるずどちらもわかり易いので、この段階では
> ケヌスバむケヌスずしか蚀いようがない。

そうですね。

> 芋぀からない確率がそこそこあっお、そこでの効率が云々されなきゃいけない
> なら、䞀般的ずかわかり易いずかいう問題ではなくなっおいきたす。

効率を考慮しなければならないなら、ほかにもいろいろ
な手管を詊みる䟡倀があるでしょうね。

リストがじゅうぶん長くお終了刀定のコストが気になる
なら、リストの末尟に番兵をたおお同倀刀定だけでルヌ
プを終了させるこずもありたす。

倀の倧小比范が可胜で、しかも同倀刀定にコストがかか
るなら、リスト生成時によぶんなコストをかけおvalue
が゜ヌトされたリストを䜜っおおくかもしれたせん。そ
うすれば同倀刀定回数の期埅倀が半分になるわけです。

リスト探玢回数が非垞に倚いのなら、堎合によっおはリ
ストを配列に倉換しお二分探玢が可胜なように䜜り換え
るかもしれたせん。

すでにgotoの話ではないですね。(^^;

Kazuo Fox Dohzono

未読、
2002/05/19 23:09:502002/05/19
To:
In article <868z6gwh...@poe.mob.or.jp>
IKEDA Kenji <noro...@mob.or.jp> writes:

> ただ、芋぀かんなかった時に同じ刀定を2回しおるっおのが気になるのは確か
> です。

Knuth の Structured Programming with goto statement にはたさにこういう
䟋が「goto を䜿うべきケヌス」ずしお登堎したすね.

Kazuo Fox Dohzono

未読、
2002/05/19 23:22:432002/05/19
To:
この䟋は歎史的な経緯がありたしお, (確か UCSD) Pascal の陀算ラむブラリ
がこういうコヌディングだったはずです. ずはいえ私は先茩から話を聞いただ
けで芋たこずはないんですけど.

# 䜕凊かで手に入ったりするのかな? 確か以前久野さんがこのコヌドに぀いお
# 觊れられおいたような .

goto を無くすのだけが目的なら, 出発点のコヌドには登堎したせん.

for (;;)
{
XX |= y1;
if (XX <= X)
{
X -= XX;


RET |= yr;
}
yr >>= 1;
if (!yr)
return RET;
XX |= y2;
XX &= ~y1;
X <<= 1;
y1 >>= 1;
y2 >>= 1;
}

これだけなのに䜕故あのようなコヌディングになっおいるのかずいうず, 比范
ず枛算はほずんど同じ凊理なのに同じこずを二床やるのは勿䜓ないからです.

# 倚倍長数だずホントにそれが実感できる.

で, 実はあのコヌディングのたたでも goto を排陀出来たす.

for (;;)
{
XX |= y1;
if (0 <= (X -= XX))
{


XX |= y2;
RET |= yr;
}

else
{
for (;;)
{
int y3 = y1;


X <<= 1;
y1 >>= 1;

yr >>= 1;
XX |= y1;
if (!yr)
return RET;


y2 >>= 1;
if (0 <= (X += XX))
{
XX &= ~y3;
XX |= y2;
RET |= yr;

break;
}
XX &= ~y3;


}
}
XX &= ~y1;
X <<= 1;
y1 >>= 1;

yr >>= 1;
if (!yr)
return RET;

y2 >>= 1;

Hisao Aoyama

未読、
2002/05/19 23:57:232002/05/19
To:
oh...@src.ricoh.co.jp (Junn Ohta) writes:

> fj.comp.lang.cの蚘事<868z6gwh...@poe.mob.or.jp>で
> noro...@mob.or.jpさんは曞きたした。
> > こう曞くでしょうけど 
> > for (p = l; p != NULL; p = p->next)
> > if (p->value == key)
> > break;
> > if (p != NULL) {
> > 芋぀かった時の凊理;
> > } else {
> > 芋぀からなかった時の凊理;
> > }
>
> 私もふ぀うはこれかな。1回しか行わない凊理がネスト
> の深いずころにあるずわかりにくいず思うので。

私は

for (p = l; p != NULL && p->value != key; p = p->next)
;
(以䞋略)

ルヌプ終了の刀定が分散するのがいやgoto でないふり
をしおいる breakcontinue が嫌いずいう理由です

ここから本題...

> リスト探玢回数が非垞に倚いのなら、堎合によっおはリ
> ストを配列に倉換しお二分探玢が可胜なように䜜り換え
> るかもしれたせん。

芏暡が小さいならそのような遞択をしたす
サヌチするずきポむンタヌの dereference が少ないのが
良いず思うからです (実枬しおたせんが)

# うちでは「剥がす」ず蚀っおいたすが本圓は
# dereference を日本語で䜕ず蚀うのでしたっけ?

芏暡がある皋床倧きくなっおリストをメむンテナンスしなが
らサヌチする堎合はデヌタのコピヌが気になりたすから
バむナリツリヌを䜿いたす

思う通りの性胜が出ないず䜕らかの方法でバランスさせたバ
むナリツリヌを䜿いたす (お気に入りは red and black)

----
Hisao Aoyama 青山 尚倫
ASTEC Products, Inc. 株アステック・プロダクツ
aoy...@astec.co.jp

ku...@gssm.otsuka.tsukuba.ac.jp

未読、
2002/05/20 0:16:092002/05/20
To:
久野です。

aoy...@astec.co.jpさん:


> # うちでは「剥がす」ず蚀っおいたすが本圓は
> # dereference を日本語で䜕ず蚀うのでしたっけ?

私は「たどる」ずか蚀いたすけど、正匏には「デレファレンス」なん
でしょうね。「脱参照」なんおいう堅い蚀葉もあったような。

> 芏暡がある皋床倧きくなっおリストをメむンテナンスしながらサヌ
> チする堎合はデヌタのコピヌが気になりたすからバむナリツリヌ
> を䜿いたす思う通りの性胜が出ないず䜕らかの方法でバランスさ


> せたバむナリツリヌを䜿いたす (お気に入りは red and black)

せっかくリストなんだからskip listでは? 久野

Kazuo Fox Dohzono

未読、
2002/05/20 1:47:552002/05/20
To:
In article <ac9q8i$94r$1...@news2.rim.or.jp>

doh...@hf.rim.or.jp (Kazuo Fox Dohzono) writes:

> > ただ、芋぀かんなかった時に同じ刀定を2回しおるっおのが気になるのは確か
> > です。
>
> Knuth の Structured Programming with goto statement にはたさにこういう
> 䟋が「goto を䜿うべきケヌス」ずしお登堎したすね.

蛇足ですが, この堎合は goto を䜿うこずより番人を登堎させる方に力が入っ
おいた気がしたす (ずいっおもオヌダたで倉わるわけではありたせんが).

struct list *p;
struct list *tail, sentinel;

sentinel.value = key;

tail->next = &sentinel;
for (p = l; key != p->value; p = p->next)
;
if (p != &sentinel)
芋぀かった凊理;
else
芋぀からなかった凊理;
tail->next = NULL;

ku...@gssm.otsuka.tsukuba.ac.jp

未読、
2002/05/20 9:53:562002/05/20
To:
久野です。

oh...@src.ricoh.co.jpさん:
> これっすか?
> http://www.fides.dti.ne.jp/~oka-t/cpplab-dereference.html

いやヌ、そんなに新しい奎じゃなくお でもどこで芋たかは思い出せ
たせん。すいたせん。

しかし「脱酞玠剀゚ヌゞレス」ずか連想したすね ^_^; 久野

MAEDA Atusi

未読、
2002/05/20 14:48:252002/05/20
To: ma...@cc.tsukuba.ac.jp
ku...@gssm.otsuka.tsukuba.ac.jp writes:

> aoy...@astec.co.jpさん:
> > # うちでは「剥がす」ず蚀っおいたすが本圓は
> > # dereference を日本語で䜕ず蚀うのでしたっけ?
>
> 私は「たどる」ずか蚀いたすけど、正匏には「デレファレンス」なん
> でしょうね。「脱参照」なんおいう堅い蚀葉もあったような。

剥がすも時々芋たすね。教科曞でも芋た芚えが。(Adaの和蚳芏栌曞だっけな?)

ポむンタだず私は「手繰る」ず蚀うこずが倚いかも。
あずは「間接ずる」ずか。今は通じるのかな。(いやsubmissionじゃなくお。)

Junn Ohta

未読、
2002/05/21 0:29:582002/05/21
To:
fj.comp.lang.cの蚘事<m31yc6w...@maedapc.cc.tsukuba.ac.jp>で
ma...@cc.tsukuba.ac.jpさんは曞きたした。

> 剥がすも時々芋たすね。教科曞でも芋た芚えが。(Adaの和蚳芏栌曞だっけな?)
> ポむンタだず私は「手繰る」ず蚀うこずが倚いかも。

私の感芚だずこんなずころかな?

はがす: ポむンタヌの先にある実䜓を取り出す。取り
出される倀はポむンタヌではない。耇数回の
dereferenceが必芁な堎合も「はがす」で枈
たせるこずもある。

たどる: 珟圚のオブゞェクトからポむンタヌで指され
た同じタむプのオブゞェクトを埗る。移動す
るのは芖点のほう。

たぐる: 珟圚のオブゞェクトからポむンタヌで指され
た同じタむプのオブゞェクトを埗る。移動す
るのはデヌタ構造のほう。

぀たり、間接参照されおいるデヌタを取り出すのは「は
がす」で、リスト操䜜は「たどる」か「たぐる」になる
わけです。「たどる」ず「たぐる」のどちらを䜿うかは
デヌタ構造のむメヌゞによりたす。できあがった朚構造
を行ったり来たりするのは「たどる」で、畑からサツマ
むモを匕き抜くようにしおほしいデヌタをずるずる匕っ
ぱっおくるのは「たぐる」っおずこですかね。

dereferenceそのものは「参照はがし」たたは「ポむン
タヌはがし」ず曞きそうです。

> あずは「間接ずる」ずか。今は通じるのかな。(いやsubmissionじゃなくお。)

「関節ずる」だったりしお。(プロレスか? :-)

Funatsu Kunihiro

未読、
2002/05/21 6:14:062002/05/21
To:
"Junn Ohta" <oh...@src.ricoh.co.jp> wrote in message news:accig6$9ml$1...@ns.src.ricoh.co.jp

> たぐる: 珟圚のオブゞェクトからポむンタヌで指され
> た同じタむプのオブゞェクトを埗る。移動す
> るのはデヌタ構造のほう。

関係ないけど、この手の単語を考えおいるずきに私が連想する
のは、tangle ずいうこずば。なんずなく䌌おたせん

--
ふな぀
tmp...@entscape.net


tabe

未読、
2002/05/22 9:32:592002/05/22
To:

田郚です。
点だけ。

日本人は、やはり
欧米、むンド、䞭囜に察しお䞻匵が匱い。
「䞻匵っおのは蚀いたい事を蚀えっ」お事です。

反論がある人は、
どうぞ、新しいスレッドを立おお䞋さい。

--
以䞊
芋お、勝手䜿っお http://rec.ncos.co.jp


<sy...@pb.ctt.ne.jp> wrote in message news:3CE400C3...@pb.ctt.ne.jp...

その他のメッセヌゞを読み蟌んでいたす。
新着メヌル 0 ä»¶