バッドノウハウについて語るスレ
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
NGNGあげるもよし、「お前、バッドノウハウって言いたいだけちゃうんかと」と異議を唱えるのも
よし、あるいは「ハッドノウハウとどう向き合うべきか?」という話をするのもよいのでは
ないかと思います。
バッドノウハウの定義などについては>>2以降で
0433名無しさん@お腹いっぱい。
NGNG0434名無しさん@お腹いっぱい。
NGNGそれは「腐っている」んじゃなくて「面倒」って言うんだよ。
「腐っている」とは別の話だ。
0435名無しさん@お腹いっぱい。
NGNG英語で読め。日本語だと読める訳ないだろあんなもん。
0436名無しさん@お腹いっぱい。
NGNG0437名無しさん@お腹いっぱい。
NGNG> Cの型宣言は腐ってるだろ。俺、いまだにsignal(3)のプロトタイプ宣言理解できないし。
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
これのどこが難しいんだ?なんてね。
0438名無しさん@お腹いっぱい。
NGNG広まらないで終わったローカルな手法>バッドノウハウ
よって、S式はバッドノウハウ。
それもキング・オブ・バッドノウハウ。
これほど長いあいだ試され続け、数多くの信者と宣教師を
生み出し、それでもなお広まらずに終わった手法も珍しい。
0439名無しさん@お腹いっぱい。
NGNG0440名無しさん@お腹いっぱい。
NGNGc-b, c-n, c-p, c-f > グッドノウハウ
なのか?
0441名無しさん@お腹いっぱい。
NGNG0442名無しさん@お腹いっぱい。
NGNG0443名無しさん@お腹いっぱい。
NGNGコード拡張すれば良かったのに。
0444名無しさん@お腹いっぱい。
NGNGそれでもまだだめだということなのだろうか……
0445名無しさん@お腹いっぱい。
NGNGおれのCに対する知識はおいとくとして、
その矢印がバッドノウハウだってことはどうなんですか?
最近のJavaやC#を見る限り、明らかにバッドノウハウだと
思うけど。
0446名無しさん@お腹いっぱい。
NGNG0447名無しさん@お腹いっぱい。
NGNGhttp://d.hatena.ne.jp/apkz/20040311#p4
0448名無しさん@お腹いっぱい。
NGNGvoid(*)(int) signal(int signum, void(*)(int) sighandler);
これの方が直感的に綺麗と感じると思うけどどうだろう。
0449名無しさん@お腹いっぱい。
NGNGやっぱり識別子は綺麗に別れてたほうが絶対に見やすいと思うね。
0450名無しさん@お腹いっぱい。
NGNG0451名無しさん@お腹いっぱい。
NGNGttp://www.pro.or.jp/~fuji/computerbooks/c/c.modula2.html
0452名無しさん@お腹いっぱい。
NGNGそこのリンク先。
組版ルールの複雑さとは関係なく、それを記述するための言語仕様の汚さが
TeX がバッドノウハウと言われる理由だと思うのだが、
この人はわかってるのかしらん。なんなんだよあの四則演算は。
だからこそ LaTeX やら EJB やらのクサいものにフタをするマクロ集を使うわけだし、
これらですらグッドラッパーになりえてないだろう。
0453名無しさん@お腹いっぱい。
NGNG0454名無しさん@お腹いっぱい。
NGNG0455名無しさん@お腹いっぱい。
NGNG> http://d.hatena.ne.jp/apkz/20040311#p4
「Chicago Rule」には萎えるな。「組版ルール」とか、すっとんきょなこと書
いてるし。実際にManualを手にとって読んだこともなく書いてるのがありあり
とわかる。所詮「バッドノウハウ」と騒いでるのは教祖も含めてこの程度か。
0456名無しさん@お腹いっぱい。
NGNGC の型宣言は、俺も腐ってると思うけどなぁ。変数だけなら右から
左に読めば意味が通るんだが、関数ポインタがからむと右に行ったり
左に行ったりする必要があるし、まして
自分自身を返す関数
が記述できないあたり根本的に ad hoc な設計という感じがする。
0457名無しさん@お腹いっぱい。
NGNGそれぐらいなら相互再帰でいいんじゃないの?
0458名無しさん@お腹いっぱい。
NGNG記述できるけど関数を返せないというだけなのでは?
0459名無しさん@お腹いっぱい。
NGNG0460名無しさん@お腹いっぱい。
NGNG0461名無しさん@お腹いっぱい。
NGNGtypedef func (*func)(func);
もしくは上で挙げられてる改良C構文に従えば
typedef func (*)(func) func;
0462名無しさん@お腹いっぱい。
NGNGad-hocじゃないって。設計だってきちんとしてるんだよ。コンパイラが簡単に
なるように変数宣言の構文をそのまま型宣言にも使ったのさ。パーサが同じで
すむからね。
そのために見にくくなってるんだけど、同じ見難さは変数宣言のときにだって
あるわけで、演算子の優先順位とかは最低わかってないと混乱する。でも、他
の言語だって演算子の優先順位とかleft/right associativeかどうか、なんか
は理解してないと、つまらないミスは避けられないよ。
0463名無しさん@お腹いっぱい。
NGNG> コンパイラが簡単になるように変数宣言の構文をそのまま型宣言にも
> 使ったのさ。
当時の計算機環境・開発者がかけられる手間を前提とすると「うまい工夫」
だと思うが、今になってみると……という一例だと思われ。計算機や開発者
に対して最適化された設計は、往々にしてユーザに対しては最適化されない
定めにある。
0464名無しさん@お腹いっぱい。
NGNG0465名無しさん@お腹いっぱい。
NGNGあいまいになりそうだし、言語的にも処理系も難しくなる。
(っていうかポインタのある言語でそれは可能なのかな?)
そういうのは否定しておいて、void*でやり取りするように
するってのは、C的で正しいと思うね。素人は。
0466名無しさん@お腹いっぱい。
NGNG0467名無しさん@お腹いっぱい。
NGNG> だと思うが、今になってみると……という一例だと思われ。計算機や開発者
30年近くも前の設計をつかまえて何あたりまえのこと言ってんだよ、ボケ。
ANSI Cの最初の規格化がはじまったのだって既に20年前だ。
0468名無しさん@お腹いっぱい。
NGNG例えば、MLなんかの最高級な型システムを持つ言語とかって
Cだと人為的に意識されてコード中に記述されてる部分まで、
処理系が賢くならなければならないわけだけど、そういうのって
今の処理系できてるの?
アドホックなCを批判することは誰にでも出来るけど、
代わりのものを用意するってのは並大抵のことじゃないよね。
Cと同程度の表現力しかない言語なら、結局C,C++に落ち着くだろうし。
0469名無しさん@お腹いっぱい。
NGNG関数ポインタと変数ポインタの間でキャストしちゃダメだよ。
大抵の処理系だと変数ポインタと関数ポインタは同じサイズ
だから問題ないけど、C++ の多重継承・仮想継承・仮想関数
が絡むと、致命的にまずいことになる。
0470名無しさん@お腹いっぱい。
NGNG落ち着けよ。別に「C の型宣言腐ってる」と言われたところで、
467 の人格否定されてるわけじゃないんだし。
歴史的事情があるのは重々承知してるし、代替もないから俺も
今でも C/C++ 使って仕事してるわけで。ただ、これから言語を
設計してくれと言われたら (というか仕事でスクリプト言語
書いてるけど)、俺は C の型宣言は採用しないという程度の話だ。
0471名無しさん@お腹いっぱい。
NGNG0472名無しさん@お腹いっぱい。
NGNG>ANSI Cの最初の規格化がはじまったのだって既に20年前だ。
この例で言えば、20年も経ってるのにまだCが生きていることが問題だということだ。
つまり、ソフトウェアは一般的に言って当初の想像よりもはるかに長生きするため
このような問題は必然的に生ずると言える。
0473名無しさん@お腹いっぱい。
NGNGCじゃなくてもいい奴にはJavaとかC++使ってるんだからそれでよかろう。
0474名無しさん@お腹いっぱい。
NGNGC++ だと C の問題を全て引きずってるから、解決しないような気が。
Java と並べるなら C# かねぇ。
0475名無しさん@お腹いっぱい。
NGNGとりとめのない文章をどうにかしてよ。
「定めにある」とか「生ずると言える」とかは分かったから、言いたいことは何なの?
煽りじゃなくて疑問。
0476463=469=470=474
NGNG> 463=472?
違うけど。
0477名無しさん@お腹いっぱい。
NGNG色々仕方無いんじゃないの?関数型言語はともかく、Cみたいな言語では、
typedef int (*pf)(void);
typedef int (*)(void) pf;
の2候補よりいい方法って思い付かんよ。
0478名無しさん@お腹いっぱい。
NGNG0479名無しさん@お腹いっぱい。
NGNG0480名無しさん@お腹いっぱい。
NGNG0481名無しさん@お腹いっぱい。
NGNG>Cと同程度の表現力しかない言語なら、結局C,C++に落ち着くだろうし。
そして、(代替物の出来にかかわらず)↑の様になってしまうのがバッドノウハウなわけで…
0482名無しさん@お腹いっぱい。
NGNG0483名無しさん@お腹いっぱい。
NGNG混じってない。
0484名無しさん@お腹いっぱい。
NGNGそんな無理して関数宣言と同じにしなくても、専用構文用意すれば良いじゃん。
同じようにしなければいけないと思ってしまうことが、バッドノウハウのもと。
たとえば、int hogehoge(char *, int)なら
typedef func<int>(char *, int) *pf;
とか関数が多言語風に、
typedef (char *, int) -> int *pf;
とか。
0485名無しさん@お腹いっぱい。
NGNG本気で言ってる?
0486名無しさん@お腹いっぱい。
NGNG勢いがないとムリポ。宗教改革があるまでラテン語が使われた
わけだし。いやラテン語のどこに問題があったかは知らないけど。
0487名無しさん@お腹いっぱい。
NGNGちょっと話が逸れるが、最近の C++ 処理系だと
boost::function<int (char*, int)> f;
とか書けるよね。
0488名無しさん@お腹いっぱい。
NGNGOSじゃすまないだろ。
ハードウェアが非ノイマン型にならないかぎり
Cは置き換えられない。
そして織田信長の出番がッッッ!!!
0489名無しさん@お腹いっぱい。
NGNG0490名無しさん@お腹いっぱい。
NGNGなるほど。奥が深いねぇ。
0491名無しさん@お腹いっぱい。
NGNG「こういうものをつくりたい!だけどこれはCじゃ本質的に作れない」
という状況にならないとCに取って代わる言語は出てこないと思う。
現状じゃ「これはCで作れる。ただCだと面倒なんで○○で作る」
というのがほとんどだろうから、結局Cが生き残っている。
0492名無しさん@お腹いっぱい。
NGNGでも、年々 C が使われるの範囲は狭まってる。Web アプリケーションの類とか
とてもじゃないが C で書く気はないわけで。
もちろん、今後もハードウェア寄りの部分や、OS に近い部分では C/C++ が
当面使われ続けると思うけど。
0493名無しさん@お腹いっぱい。
NGNG今でもWebアプリをCで書くことあるよ。
Perlじゃ遅い || Javaの開発経験者が少ない => C言語
ということはある。
とはいえ、一般的には>>492のような感じだろうな。
0494名無しさん@お腹いっぱい。
NGNG0495名無しさん@お腹いっぱい。
NGNGJavaでOKな程度の性能であれば、mod_perlで解決のような気もしないでもないが。
0496名無しさん@お腹いっぱい。
NGNG0497名無しさん@お腹いっぱい。
NGNG近視眼的に言語の仕様を見て得意げにバッドノウハウとラベリングするわけですか.
今のままだと,バッドノウハウってのは
「頭の悪い人の,頭の悪い人による,頭の悪い人のためのレッテル張り」
になっちゃうよ? そもそもバカってのは自分の頭で考えることをしないし,
単純なレッテル張りが好きだからな.
0498名無しさん@お腹いっぱい。
NGNG0499名無しさん@お腹いっぱい。
NGNG3行目以降、最初からそうじゃなかったの?
0500名無しさん@お腹いっぱい。
NGNG「アンチバッドノウハウ派」と「バッドノウハウを揶揄する人」だ。
0501名無しさん@お腹いっぱい。
NGNGドキュメントからfacilityを探してsyslog.confを編集する度に
ムカついているけど、syslogはバッドノウハウに入るかな?
0502名無しさん@お腹いっぱい。
NGNG0503名無しさん@お腹いっぱい。
NGNG0504名無しさん@お腹いっぱい。
NGNG0505名無しさん@お腹いっぱい。
NGNGなんか一人ごっつの「出世させよー」を思い出した。
0506名無しさん@お腹いっぱい。
NGNGうーん、微妙だな。バッドノウハウと言えるほどの「格」がない。
その点 sendmail.cf や .procmailrc の奇天烈さは、文句なし。
0507名無しさん@お腹いっぱい。
NGNG0508名無しさん@お腹いっぱい。
NGNG0509名無しさん@お腹いっぱい。
NGNG0510名無しさん@お腹いっぱい。
NGNG> このスレには2種類の住人が居る。
もう1種類忘れてないか?「教祖様」だ!
0511名無しさん@お腹いっぱい。
NGNG0512名無しさん@お腹いっぱい。
NGNGノウハウだよな」なんていう状況になりませんように。そうなったら鬱だ。
0513名無しさん@お腹いっぱい。
NGNGそれ、漏れかも。。
0514名無しさん@お腹いっぱい。
NGNG・使いにくいインタフェースだな!
とかなら同僚に言ってOK?
0515名無しさん@お腹いっぱい。
NGNG0516北斗の拳
NGNG0517名無しさん@お腹いっぱい。
NGNG謙遜してみせればさらにグッド。
0518名無しさん@お腹いっぱい。
NGNG0519名無しさん@お腹いっぱい。
NGNGつまらんからアウト。
0520名無しさん@お腹いっぱい。
NGNG0521名無しさん@お腹いっぱい。
NGNGそれじゃ、syslog の代わりにどうすればいい?
0522名無しさん@お腹いっぱい。
NGNGsendmail.cf があのような構文にならざるを得ない
rfc2822 や MIME にもかなり問題あると思うが……
0523名無しさん@お腹いっぱい。
NGNG書きゃいいと思ってんだよ。
0524名無しさん@お腹いっぱい。
NGNGsendmail.cfなどの変態的な設定記述がバッドなのは、
可読なテキストであることとあまり関係ないと思うがどうか。
0525名無しさん@お腹いっぱい。
NGNG> このスレには2種類の住人が居る。
> 「アンチバッドノウハウ派」と「バッドノウハウを揶揄する人」だ。
両方とも「奥が深い症候群」のせいなので(苦笑),結局のところ
このスレには1種類の住人しかいないことになりますな.
0526名無しさん@お腹いっぱい。
NGNG> 結局、アラン・クーパーからのパクリだろ。
アラン・クーパーの本については、アマゾンのカスタマーレビューが
面白いよ。ま、バッドノウハウも、何をいまさらって感じなんだけどな。
052748
NGNGMTA がそんなもん気にするからいけない。
余計なところに comment を許したままの RFC2822 もどうかと思うが。
0528名無しさん@お腹いっぱい。
NGNG0529名無しさん@お腹いっぱい。
NGNGどこにでもS式を持ち込もうとするLisp厨の分別のなさも何とかならねーかな?
0530名無しさん@お腹いっぱい。
NGNGS式でなんとかなるよ。
0531名無しさん@お腹いっぱい。
NGNG単に好みの問題なんじゃないかと思うが。けど、選択肢というか代替がないと
辛いのも事実か。
0532名無しさん@お腹いっぱい。
NGNG■ このスレッドは過去ログ倉庫に格納されています