トップページ⇒tech
75コメント26KB

藤原本『Cプログラミング診断室』を斬る

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。NGNG
どこがいけないんでしょうか。
厨房のボクにわかりやすく教えて下さい。

ここで読めます。
http://www.pro.or.jp/~fuji/mybooks/cdiag/
0002名無しさん@お腹いっぱい。NGNG
タイトルと内容に差がありすぎ。
0003名無しさん@お腹いっぱい。NGNG
かなり前にヒマな時に読んだ。
まぁまぁいいけど。ちょっと変と思ったとゆーことを覚えている。
まぁ、タダなんで、いっかーなんて思ったことを思い出したりする。
しかし、どこがちょっと変だったかは、もう1度読まないと言えない
ので、面倒なので、どーでもいーです。
どの技術本にも言えることだが、それがすべてだと思ってしまうと
大海を知らないカエルになってしまうので、気をつけようと、
また心に刻む、冬の寒くて眠い午後でした。
0004名無しさん@お腹いっぱい。NGNG
藤原本をちょっとでも誉めると
大学在学中で世間知らずのバカが召喚されるから注意ね。
0005名無しさん@お腹いっぱい。NGNG
いけないってこともないと思うが、
書いてることは
・ちゃんと構造化しよう
・車輪の再発明はダメ
程度なんだよ。基本中の基本。

それが出来てない大噴飯モノの「実例」を
俎板に乗せてガスガス切ってるのがウリなんだろうな。
00061NGNG
>>5
うんうん、かなり古い本だから、ちょっと現状とはあわない
所はあるかもしれないけど、ボクは結構いい本だと思ったんです。
でも、2chでは、「藤原ドキュソ」という意見が多いみたいだから、
どこがいけないのかなーって思ったりして。
00071NGNG
>>4
そーゆー人たちに、どこがいけないのか教えて欲しい・・・
0008>1NGNG
大学在学中で世間知らずのバカに筋のとおった意見など求めてはいけません
0009名無しさん@お腹いっぱい。NGNG
俺が藤原本で学んだことは「プログラマの生産性には数十倍の格差がある」
ってこと。俺はこれをモチベーションにしてがんばってきた。
実際他の職種と比べるとこれは凄いことだと思う。これを教えてくれた藤
原本には感謝している。
0010この程度NGNG
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=960626832&st=88&to=91
0011名無しさん@お腹いっぱい。NGNG
初心者には役に立つ。そして、業界には初心者ばかりってことね。
00121NGNG
技術的な誤りとか、ドキュソな精神論とかはないのかにゃー。
初心者のボクは信じてもよいのでしょうか?
0013名無しさん@お腹いっぱい。NGNG
マジレス。
藤原本の一番の問題点は、悪い点を指摘する痛快さから、
信者を作ってしまうことにある。
#内容的に古い等もあるが、些細な事だろう。

痛い信者は、既存の、或いは他人の正しく動いている部分にまで、
「ここはこうした方が良い」と感じてたら、ソースに手を入れてしまう。
その理由が、「関数が長過ぎる」や「変数名がわかりにくい」や
「標準関数にある」だったりする。
それが時に不必要なバグを招き、
プロジェクトを混乱させ、
バージョン管理を台無しにする。

読み物としては面白い。
(ただし、書いてある事は普通に学べば自然に身についている内容)
面白いが、「他人の欠点を探す」癖をつけない事が肝心。
著者が悪例をけなしているのは、単にそういう趣旨の連載だったからであり、
読者に「欠点を探す」癖をつけさせるためではない。
0014名無しさん@お腹いっぱい。NGNG
>大学在学中で世間知らずのバカに筋のとおった意見など求めてはいけません

同感。
こういうのはプロになったら、先輩や同僚からボコにされるから
ほっときゃいいんです。
0015名無しさん@お腹いっぱい。NGNG
>>9

>「プログラマの生産性には数十倍の格差がある」

うーん、ずいぶんと控え目な意見ですね(笑)
もっと差がありますよ
0016名無しさん@お腹いっぱい。NGNG
藤原本を馬鹿にするやつはレベル低い馬鹿ばかりだよな
欠点があるなら指摘してみろ

>>13
>痛い信者は、既存の、或いは他人の正しく動いている部分にまで、
>「ここはこうした方が良い」と感じてたら、ソースに手を入れてしまう。

痛い信者じゃなくても、悪いのは直すべきだろ?おまえ大学在学のバカ?

>同感。
>こういうのはプロになったら、先輩や同僚からボコにされるから
>ほっときゃいいんです。

藤原の本読まないやつや批判するやつはプロになれないし
糞プログラムしかつくれないやつだろ(藁
0017名無しさん@お腹いっぱい。NGNG
大学在学って言葉にこだわるのはナゼ?
0018名無しさん@お腹いっぱい。NGNG
藤原信者というわけではないが、あの本は読んだ。痛いコーディングが笑えるな。

>>13
>痛い信者は、既存の、或いは他人の正しく動いている部分にまで、
>「ここはこうした方が良い」と感じてたら、ソースに手を入れてしまう。
>その理由が、「関数が長過ぎる」や「変数名がわかりにくい」や
>「標準関数にある」だったりする。

もともと手を入れる必要のないプログラムであればそのまま放っておくのも手だが、
再利用しようとするときには、正しく動いていても設計やコーディングのまずさが
破綻の原因になることがあるから、適宜、既存部分を変更することはよくあるよ。

動作検証の手段を日頃から備えておけば、デグレードの可能性は低く抑えられるし
開発効率も良くなるよ。検証手段なしだと既存部分の変更は怖くてしょうがないだろうね。
0019名無しさん@お腹いっぱい。NGNG
原理主義者がいてもいいでしょう
プログラムはある意味宗教なんだから。

俺はプロテスタント系かな。。。
0020名無しさん@お腹いっぱい。NGNG
くそ長い関数を書くイタイやつは結構いるよ
そのくせ自分は長い関数をかくから、かしこいと勘違いしている馬鹿も
それが診断室ではボコボコに批判されているから
そこでかちんと来て、くそみそに言っているんだとおもう
0021名無しさん@お腹いっぱい。NGNG
>>16
>藤原の本読まないやつや批判するやつはプロになれないし
>糞プログラムしかつくれないやつだろ(藁

だったらいいんだけど、実態は、はぁーーーー(;_;)
0022名無しさんNGNG
藤原のソース美しいと思わない。
K&RやThompsonのソースに比べて饒舌って感じ。
引数8個以上ならべる関数見ると、もうC++行けって感じ。
ただ短くすればいいとかそういう問題でない。
0023名無しさん@お腹いっぱい。NGNG
>>22
s/饒舌/冗長/

じゃなくて?
0024名無しさんNGNG
饒舌でよいです。BorneShellのソース見た印象が
「寡黙」です。汚いソースを「散文」に例えると、
美しいソースは「俳句」って感じ。
藤原は散文的。
0025名無しさん@お腹いっぱい。NGNG
というか、Cの文字定数をchar型だと思いこんでる時点で
こいつダメダメじゃん。基礎も理解してないくせに、
よくもまあ初心者いじめができたもんだ。
0026名無しさん@重箱の隅NGNG
「Cプログラミング専門課程」藤原博文p.128
>文字列リテラルは無条件にconst修飾子がついているものと見なされます。

「K&R 2nd.」石晴訳 p.236
>文字列定数とも呼ばれる文字列リテラルは"..."のように2重引用符で囲まれた
>文字列である。文字列は“文字配列”の型をもち、記憶クラスはstatic(以下の
>A4節参照)であり、与えられた文字で初期化される。

言ってること違うぞ。
0027名無しさん@お腹いっぱい。NGNG
>>26
実状を見るに、const 付いてると言ってもいいんでないかい?
読者がそれを読んで、ああ、書き換えできないんだなと思えばそれでよし。

ダメ?
0028名無しさん@お腹いっぱい。NGNG
>>25
> 初心者いじめ
初心者いじめじゃないだろ?
だいたい初心者では、あんなクソでかいプログラムはつくれん
0029名無しさん@お腹いっぱい。NGNG
盲信する信者も、重箱の隅をつつく輩も、痛すぎる。
良いところだけ吸収しろって。
0030名無しさん@満腹 NGNG
同感。
こんな所でわめいてたって、時間の無駄。
酔っ払いがカーネルおじさんにからんでるのと一緒。
0031善意の通行人NGNG
>30
>酔っ払いがカーネルおじさんにからんでるのと一緒。

うまいたとえだなあ。もらい!
0032名無しさん@お腹いっぱい。NGNG
つーか、かーねる・さんだーすってカケ
003326NGNG
>>27
件の本によれば、以下のプログラムはコアを吐くらしいけど、

char *q="def"

main(){
q[1]='@';
printf("q: %s\n");
}

ちゃんと「d@f」て表示されたぞなもし。
Sun OS 5.5.1付属のccで。
0034名無しさん@お腹いっぱい。NGNG
>>33
たまたま、あなたの処理系で落ちなかっただけの話です。
0035名無しさん@お腹いっぱい。NGNG
>>33
ccでok
gccでだめだった。
0036名無しさん@お腹いっぱい。NGNG
>>35
gcc でもオプション指定によってはオッケー。
比較的古いソースでは確信犯的に>>33のように書かれているものが
あるから(rogueとかそうじゃなかったかな?)、文字列リテラルを
DATAに配置させたくなることが実際にはしばしばあって、現存する
ほとんどのCコンパイラは何らかの方法でそれをサポートしている
と思う。
VC++はDATAに置くほうがデフォルトね。
0037名無しさん@お腹いっぱい。NGNG
>36
DATAってなんすか?
ヒープの事?
0038名無しさん@お腹いっぱい。NGNG
>37 リンケージエディタでしらべてみろ
0039名無しさん@お腹いっぱい。NGNG
>>37
初期化済みのstaticデータ(記憶クラスの意味で)を格納したセグメント
のことだ。これは書込み可能なメモリ領域に配置され、上書きしても
Segmentation faultが発生しない。
無論この辺はアーキテクチャ依存の話になるが、
data@` textといった用語および大体の意味は共通的に使われている
と思うよ。
(まあMS-DOSみたいなメモリ保護のないOSでは「書込み可能」も糞も無いが)
0040名無しさん@お腹いっぱい。NGNG
>>33
藤原先生にからむんじゃねーよ
100回プログラム診断室読んでからレスしろ ボケ
おまえらがプログラマなんかやってるから業界のレベルが低いんだよ
大学在学のバカと一緒に一度ごみ箱にぽいされちゃえば?(藁
0041名無しさん@お腹いっぱい。NGNG
>1
斬る?こんな糞スレつくるな ボケ
0042名無しさん@お腹いっぱい。NGNG
AHAHA DOTCHIMO-DOTCHI BAKABAKARI.
MIGIMITE HIDARIMITE MINA OBAKA. KEKEKE.
004325NGNG
>盲信する信者も、重箱の隅をつつく輩も、

上級者ぶって他人のソースの重箱の隅をつつくことを
題材にしている輩よりは数百倍マシ。
そんな輩が、誰でも知ってるような Cの基本さえ
わかってない(少なくともこれは重箱とは思えないし)
のだから叩かれても仕方ない。
正しいコーディングスタイルを教えるのが目的ならば、
別にこういう書き方をしなくてもよいと思う。
少なくとも俺は読んでいるうちに気分が悪くなったよ。

あと、盲信する輩はイタくない(仕方ない)。
将来この筆者よりも深い知識を得た段階で、盲信で
あった事に気づけばよい。
0044名無しさん@お腹いっぱい。NGNG
みんな、あの本の態度が気に食わないだけでしょ。
誰でも知ってることしか書いてないとか言ってるけど、
「Cプログラミング診断室」が初級者を対象にした本
だから当たり前。

「Cプログラミング専門課程」がもう一段上のことを解説
した本。
0045名無しさん@お腹いっぱい。NGNG
>>44
「態度が気にくわない」というのは嫌いになる十分な理由になると思う。
それを押してまで読むべき内容のある本じゃないから。
教育的というよりは、初心者をようやく脱したレベルの人間への
受け狙いと思え、受け狙いとしても下品であるし、同じような題材ばかりで
退屈だ。
少なくとも同系統の本としては、結局「プログラム書法」の足元にも及ば
ない(C言語用じゃないが)。
0046名無しさん@お腹いっぱい。NGNG
>「態度が気にくわない」というのは嫌いになる十分な理由になると思う。

だから馬鹿だっつうの。
0047名無しさん@お腹いっぱい。NGNG
もちろん45のことだよ
0048名無しさん@お腹いっぱい。NGNG
>>45
ずばり痛いところをつかれたからだろう?
よくいるんだよな。てめえは天才のつもりで偉そうにしたいけど
誰かの忠告で、そうじゃないと指摘され、
指摘したやつを逆恨みする馬鹿
0049名無しさん@お腹いっぱい。NGNG
みんな痛いよ
0050名無しさん@お腹いっぱい。NGNG
>>33
わからん、どうしてもわからん
>printf("q: %s\n");
%sに対する引数が存在しないのに正常に出力される処理系の仕組みがわからん
005145NGNG
>>46
「だから」一言で片づけずに、なぜ馬鹿だと思うのかちゃんと
説明してみろよ。

>>48
ハハハ。そういう理由しか想像できないとは余程
洗脳されているか単なるバカのとっちかだな。
顔を洗って出直してきたらどうだ?
45に書いたと思うが、理由は「品がない」だからだよ。
似たようなクサレコードを延々と&&嬉々として貶している様には
ハッキリ云ってウンザリせずにはいられない。
俺にはそれが初心者向けの「教育目的」よりはむしろただ単に
阿呆を貶して笑いたいだけに見えるのさ。
0052他人ごとNGNG
技術板だから、技術的な面でなんか書けばぁ
00532NGNG
少なくとも1の目的は達成された。
00541NGNG
うん
0055名無しさん@お腹いっぱい。NGNG
>>51
>理由は「品がない」だからだよ。
おまえが下品だから鼻につくだけだろう。近親憎悪で。
0056名無しさん@お腹いっぱい。NGNG
それと被害妄想もあるな
>阿呆を貶して笑いたいだけに見えるのさ。
とかさ。
0057名無しさん@お腹いっぱい。NGNG
よっぽど、昔、身につまされてカチンときたんだろうねえ。<藤原批判キチガイ。
たしかに、藤原氏が出すような(あそこまではひどくないにせよ)いっちゃった
文字通りの「コード」を書く奴いるもんなぁ。
どーでもいいけどさ。
0058名無しさん@お腹いっぱい。NGNG
>>45
なんでプログラム書法と同系統なの?
あなたが言ってるようにあの本は駄目なプログラムを晒し者にして
わいわいやってる本でしょ?
それは面白いし、なんで駄目なのか分からない人にとってはためにもなるよ。
まあ時代遅れなのは事実だけど。少なくともあの当時は実践的なテクニック
だったぞ。
00598086NGNG
やはり召喚されたか。。。。
006045NGNG
>>58
プログラム書法は、駄目なプログラムの駄目な部分を指摘し、
どのようにすれば改善されるかを示し、そこからより一般的な
スタイル上の定石を導き出すといったことの繰り返しであった。

確かに「さらし者にして楽しむこと」が主目的であるかどうかと、
より深いレベルの考察および充分に教育的な配慮が行われているか、
が明白に違っているから、「同系統」とまでは呼べないかも知れない。
足元にも及ばないというのはそういうことだ。

>それは面白いし、なんで駄目なのか分からない人にとってはためにもなるよ。
エンターテイメントとしては、同質&&あまりに低レベルな「症例」の
羅列で、いい加減ウンザリするのだがな。
本気で「ためにしたい」ことが目的なら、もっとやりようはいくらでも
ある。
0061名無しさん@お腹いっぱい。NGNG
あまりにも低レベルなのはあなたのレベルが高いからでしょう。
初級者を対象にした本だということをお忘れなく。
006245NGNG
>>61
「初心者向け」は何ら免罪符にならないどころか、より高いレベルの
質が求められると俺は思っている。
0063名無しさん@お腹いっぱい。NGNG
>>62
それ、「何の」レベルかという点で話し合いにおける解釈が食い違ってると思う。
00641NGNG
>>62
で、結局、あの本で駄目と書かれてるのは、駄目なの?いいの?
やりようがどうこうじゃなくて。
0065名無しさん@お腹いっぱい。NGNG
>>64
あの当時は的確だった。今はちょっと的外れなこともある。
#しかし下げたまんま育っていくなぁ
0066名無しさん@お腹いっぱい。NGNG
この本のJava版が「リファクタリング」になるのかな?
こっちも面白いよー
0067名無しさん@お腹いっぱい。NGNG
興味を引くと言う点で一つの方法だとは思うが、
罵倒しつづけてることに不快になる人はいるだろうな。

まぁ面白いと思う人は多いからそういう方法が
あったっていい。堅い本よりは読みやすい。
0068名無しさん@お腹いっぱい。NGNG
あの本で俎上にあがった人ってこんなにいるの?
中尾竜己さんは何番かな〜?
0069名無しさん@お腹いっぱい。NGNG
Yahooのプログラム系の掲示板で、議論相手に「そんなことを言う人は破門です」と
言ってた奴を見た事ある。
藤原氏に感化されてる?(;´Д`)
0070名無しさん@お腹いっぱい。NGNG
かな〜りストレートかつ極端な例が多いからねぇ、
でも結構役に立ったよ、少なくとも自分には。

まぁ別に信者になっても良いと思うけどねぇ、
な〜んも読まんで
この例のような、恐ろしいコーディングされるよか
遥かにマシであると考えるのだが?
0071名無しさん@お腹いっぱい。NGNG
信者ぐらいのレベルがあればいいんですよ。
現実はそれ以下の人が大半なんですから。
0072名無しさん@お腹いっぱい。NGNG
ここで藤原氏批判してる人って、と学会も嫌い?
0073名無しさん@お腹いっぱい。NGNG
>>72
 藤原に対しては、さして批判的ではない。語り口がエラソーだとかは
置いとくとして。
 と学会はたまにあの冷笑的なスタンスに反吐が出そうになる。
 「と」なモノのリファレンスとしては面白いけどな、
0074名無しさん@お腹いっぱい。NGNG
友達のもっていたC言語の本が結構役にやつので、本屋にかいにいって、この本ってこの板でなんか批評されているのかな?とおもって探してみたら、けっこう有名みたいですね。ちなみに買った本とは”Cプログラミング専門課程”です。
0075>74NGNG
批判されてるのは「Cプログラミング診断室」っす。
「Cプログラミング専門課程」は普通のCの解説本。
■ このスレッドは過去ログ倉庫に格納されています