Linus「C++プログラマ ..
596:デフォルトの名無しさん
09/02/05 22:08:48
>>586
たまーに、必要になるときがあるんだわ。基本的にはそのつど宣言するのだけども。
597:デフォルトの名無しさん
09/02/05 22:09:27
>>593
C++の標準からしてそうじゃん…
stringとstringstreamとかさ
ただのchar[]に大げさな名前と機能付けて似たようなもの2つも作ってアホかと
598:デフォルトの名無しさん
09/02/05 22:10:41
vector<char>もあるぞw
599:デフォルトの名無しさん
09/02/05 22:12:09
>>598
それはバイナリ配列でしょ。
600:デフォルトの名無しさん
09/02/05 22:12:18
stringとstringstreamが同じようなものって、どういうこった。
601:デフォルトの名無しさん
09/02/05 22:13:35
C のようなバッファとサイズを渡して結果を入れてもらう関数を使うときは
vector<char> を使わざるを得ないんだよ、現状では。
そのうち string 使えるよう保証されるようになるけど。
602:デフォルトの名無しさん
09/02/05 22:14:27
stringstreamはsprintf相当のもので、std::stringはコンテナだよ。
603:デフォルトの名無しさん
09/02/05 22:17:42
>>601
奇妙な設計に見えるなぁ。
Cとの互換性のためって言うならそういうのもあるんだろうけどさ。やったことないや。
604:デフォルトの名無しさん
09/02/05 22:24:24
ガタガタぬかさずに使えや
C++に文句言ってる奴はC止まりの奴に決まってる
605:デフォルトの名無しさん
09/02/05 22:26:57
>>604
なぜかC++信者はCをよく理解してない分際で「C止まり」などと見下したことを抜かすんだよなあ
606:デフォルトの名無しさん
09/02/05 22:29:33
>>605
何を抜かすか
俺はC89の規格が決まった頃からずっとCを使っている
いわゆる両刀使いだ
607:デフォルトの名無しさん
09/02/05 22:30:17
>>603
現状の規格では string の内部バッファは連続領域とは限らない。
だから規格に厳密に従うなら、string をこの目的で使う事は出来ない。
昔は vector もそうだったが、2003年に改善された。
string も次期で改善される予定。
まあ、実際に string の内部バッファが連続領域でない実装なんて知らないけど。
data() や c_str() の実装の手間を考えると当然だろう。
608:デフォルトの名無しさん
09/02/05 22:47:44
>>607
なるほど。
609:デフォルトの名無しさん
09/02/05 23:50:52
>>590
そういえば、s.equals("")なら許せるけど、Javaとか(C++も?)
定数文字列を先に持ってくる奴が多いんだろう
C言語でも、if( 0 == p ) みたいにひっくり返す馬鹿がいるけど、
== を = と書いたことを検出できる、とか言い訳にもならない
610:デフォルトの名無しさん
09/02/05 23:55:16
>>609
javaのは、sがnullでもヌルポが発生しないってことらしい。
ダメテクニックだな。
611:デフォルトの名無しさん
09/02/05 23:56:18
ifがbool以外をとるのがダメなんだろうけどさ。
明示的にboolにキャストが必要とかすればp=0とかしようが間違えないわけで。
612:デフォルトの名無しさん
09/02/05 23:56:59
間違って=と書いた日の問題箇所特定の難しさを知らんとしたら、かなりの幸せ者だ
613:デフォルトの名無しさん
09/02/05 23:57:14
_
ミ ∠_)
/
/ \\
ウイーン Γ/了 | |
ウイーン |.@| | | ガッガッガッ
| / | . 人
|/ | < >_Λ∩
_/ | //. V`Д´)/>>610
(_フ彡 /
614:デフォルトの名無しさん
09/02/05 23:59:25
>>612
ふつー一発でわかります。
615:デフォルトの名無しさん
09/02/06 00:09:58
>>610
なるほど・・・
616:デフォルトの名無しさん
09/02/06 00:11:45
>>614
実務経験無い人は、無理にレスしなくていいよ
617:デフォルトの名無しさん
09/02/06 00:15:53
>>614
スーパーハッカーですね
618:デフォルトの名無しさん
09/02/06 00:16:53
=と==の間違えを見つけられないような人が実務やってるんですか。
619:デフォルトの名無しさん
09/02/06 00:17:25
コンパイラが指摘するだろう。
Java/C#ならエラーだし、C++だって警告くらい出すぞ。
620:デフォルトの名無しさん
09/02/06 00:23:09
>>619
そういえば、C#やjavaでも定数を左のおくスタイルの人っているけど、
ああいうのは、意味を分かってやってるのだろうか。
621:デフォルトの名無しさん
09/02/06 00:43:16
そういうまあ過去のテクニックというか文化はどこから新世代の言語に伝搬するんだろうな
622:デフォルトの名無しさん
09/02/06 00:55:16
まったくもってC++信者に説得力がない。
中規模クラス以上の開発で責任者やったこと奴いないの?
すくなくともデメリットくらい語れないと話にならない。
623:デフォルトの名無しさん
09/02/06 00:57:20
無能じゃんって罵ってればプロジェクトが収束するなら一日中罵るわw
624:デフォルトの名無しさん
09/02/06 01:00:01
警告を出さないようにコードを書くって、当たり前のことをやってない人が
実務に携わって、しかもけっこうな規模をやってるって事実のほうが怖い。
625:デフォルトの名無しさん
09/02/06 01:02:19
C++語っちゃうようなやつにもいるよね
そういう奴とは二度と一緒に仕事しないけど
626:デフォルトの名無しさん
09/02/06 01:02:36
定数を左に置くスタイルの人って、本を読んだり職場以外のコードを読んだりとかしないのかね?
627:デフォルトの名無しさん
09/02/06 01:03:11
意味わからなくてもエラーが出て安全だろ。
628:デフォルトの名無しさん
09/02/06 01:03:40
でも職場のコードよく読んでるやつのほうが一冊の本で頭よくなった気になれる奴よりまし。
629:デフォルトの名無しさん
09/02/06 01:05:18
参考になるコードなら良いけどな
俺の職場のコードは腐ってる
読めば読むほど何も考えてないことが伝わってくる
まさにウンコ
630:デフォルトの名無しさん
09/02/06 01:06:08
でも職場の代々受け継がれてるクセの濃いコードしか読んでないから、
定数を左に置くのがいいとか思っちゃうんでしょ?
631:デフォルトの名無しさん
09/02/06 01:09:04
いまえらcppファイル1000個以上、合計100万行以上のプログラムの実装・管理を
やった経験くらいはあって語ってるんだよな?
632:デフォルトの名無しさん
09/02/06 01:10:37
>>625
そんなんじゃ気が付いたら回りに誰もいなくて君一人だね
633:デフォルトの名無しさん
09/02/06 01:11:36
>>632
警告すらも理解できない奴ばかりなの?
634:デフォルトの名無しさん
09/02/06 01:13:15
>>633
現実を見ようよ
そんな立派なグラマばっかりいないから
635:デフォルトの名無しさん
09/02/06 01:15:32
こえ〜w
さすがにこええ
警告をエラーにすればいいんじゃないの?
とんでもない回避されるけどw
636:デフォルトの名無しさん
09/02/06 01:16:23
それで、
誰かLinusの書いたC++のコードを見たのか?
637:デフォルトの名無しさん
09/02/06 01:17:40
>>631
スタイルの話題になると「俺は経験で」で言い出すやついるけど、
匿名でそれやっても、論拠にならないよ。
俺がみたいくつかの大規模で世間で評価されてるプロダクトのソースは
定数を左におくスタイルは採用してない。
638:デフォルトの名無しさん
09/02/06 01:18:39
見た程度のレベルの人がなに言ってもねw
639:デフォルトの名無しさん
09/02/06 01:19:20
経験も本人談だし。
640:デフォルトの名無しさん
09/02/06 01:20:35
LinuxカーネルやGCCだってコンパイルするとボロボロ警告出てくるぜ…
641:デフォルトの名無しさん
09/02/06 01:21:13
実績ある奴の経験談と本読んだ感想が同レベルだとでも?
642:デフォルトの名無しさん
09/02/06 01:23:11
実績ある人のコードを読んだら、定数を左に置くスタイルじゃなかったから。
自称実績のある人じゃなくて、本当に実績のある人の。
643:デフォルトの名無しさん
09/02/06 01:24:29
本人連れてきて書き込ませろよ。
本当に出来る奴ならどうでもいいって言うと思うぞ。
644:デフォルトの名無しさん
09/02/06 01:26:32
まあダメな奴はコーディングルールをいくら用意しようが無駄だからな
645:デフォルトの名無しさん
09/02/06 01:27:19
本当に出来る奴は面倒ごとを機械に任せられる奴
=を書き間違ってないかのチェックなんてコンパイラに任せればいいんだから左に定数を書くのが正しい
本当に出来るならそう言うはずだ
646:デフォルトの名無しさん
09/02/06 01:27:49
>>643
そんなことはない。
定数を左のスタイルの話題は昔からある話題で有名で知ってる人は多い。
で、そのスタイルが少数派ってことは、どうでもいいじゃなくて、知ってて採用してないってこと。
647:デフォルトの名無しさん
09/02/06 01:28:35
論理学から勉強しなおせ
648:デフォルトの名無しさん
09/02/06 01:29:02
でもどうしても気持ち悪いなら無理して左に書いて生産性を落とさなくてもよい
と付け加えるのが真のプロフェッショナル
649:デフォルトの名無しさん
09/02/06 01:31:14
ワーニングですらそんなものないのに何でかたくなに否定するかね
650:デフォルトの名無しさん
09/02/06 01:31:58
定数を右に置くのは可読性のためだろ
一通り書いてテストしてる間は左に定数置いて
リリースする時に==の両辺を入れ替えてるんだよ
grepで一発だし==なら入れ替えても意味が変わる心配はない
みんなそうしてると思うんだけど
651:デフォルトの名無しさん
09/02/06 01:33:05
動いてるソースを改変するなんてバカだろ
652:デフォルトの名無しさん
09/02/06 01:34:34
つリファクタリング
653:デフォルトの名無しさん
09/02/06 01:34:45
==の両辺の入れ替えに意味の変化は一切ないから改変じゃないよ
&&の入れ替えならダメだけど==は評価順不定だから
654:デフォルトの名無しさん
09/02/06 01:34:48
有名書籍とか有名プロダクツのソースとかで、定数を左におくスタイルのやつがあったら、
これって例をだしてみればいいのに。
名前の出せない「俺がやった大規模プロジェクト」以外にもあるんでしょ?
655:デフォルトの名無しさん
09/02/06 01:35:56
if( a(1) == a(2) ){}
int a(int v){ static float s = 100; s /= v; return s;}
656:デフォルトの名無しさん
09/02/06 01:36:58
俺どっちでもいいから気にしたことないけどいくらでもあるんじゃないか?
それ縛りのコードは少ないだろうが。
657:デフォルトの名無しさん
09/02/06 01:37:23
意味が変わるかどうかではなく、手を入れることがバカだと言っている
658:デフォルトの名無しさん
09/02/06 01:37:44
653涙目w
659:デフォルトの名無しさん
09/02/06 01:38:17
>>656
こんどから注意してみてみたら?
すごい少数派だと思うよ。
660:デフォルトの名無しさん
09/02/06 01:38:55
>>655
不定だな
if( a(2) == a(1) )だとしても不定には変わりない
意味も動作も変わらない
661:デフォルトの名無しさん
09/02/06 01:40:23
>>660あきらめろ
662:デフォルトの名無しさん
09/02/06 01:40:38
戦争をワーとか言い出しそうな人が紛れ込んでるな
663:デフォルトの名無しさん
09/02/06 01:40:44
お前の思い込みなどどうでもいい
664:デフォルトの名無しさん
09/02/06 01:41:25
"".equals(s)とs.equals("")では意味も動作も違うと思うのだが
665:デフォルトの名無しさん
09/02/06 01:43:11
if(0 == 5 == 3 == 5) printf("== 5 == 3 == 5 ==\n"); /* == 5 == 3 == 5 == */
grep一発でどうやるの?
666:デフォルトの名無しさん
09/02/06 01:44:21
まさかとは思うけど
655のコードでif( a(1) == a(2) )なら偽でif( a(2) == a(1) )なら真になるとか
思ってる輩は紛れてないよな?
667:デフォルトの名無しさん
09/02/06 01:44:38
あまりいじめんなよ。
人とプログラム書いたことないんだから。
668:デフォルトの名無しさん
09/02/06 01:45:12
アホが涙目w
669:デフォルトの名無しさん
09/02/06 01:47:15
>>666
まさかとは思うけど、お前はそうじゃないと思ってるの???
幼稚園からやり直せ
670:デフォルトの名無しさん
09/02/06 01:49:11
int a(int v){ static int s; int t; t = s; s = v; return t;}
if( a(1) == a(2) ){}
if( 1 == a(1) ){}
671:デフォルトの名無しさん
09/02/06 01:50:43
>>650
そんなアホな。
エンバグが趣味なんですか?
672:デフォルトの名無しさん
09/02/06 01:51:37
左定数厨はプログラムが上から順番に実行されることも知らんのか
673:デフォルトの名無しさん
09/02/06 01:51:57
釣り宣言まだぁ?
674:デフォルトの名無しさん
09/02/06 01:53:10
コーディングルールとかコーディングスタイルってのが流行った時期があるから
メジャーなスタイルで定数を左辺に置くのもあると思うんだが、ちょっとぐぐった程度じゃでてこないな。
バカにしてるやつは若いヤツなんだろうけど、コンパイラがウンコな時代には役に立ったものだよ。
675:デフォルトの名無しさん
09/02/06 01:53:11
>>670で結論出ただろ。
676:デフォルトの名無しさん
09/02/06 01:55:38
>>670のa(1)とa(2)はどっちが先に呼ばれるかわからないから不定だな
if( a(2) == a(1) )だとしてもa(2)とa(1)のどっちが先に呼ばれるかわからないから不定だ
677:デフォルトの名無しさん
09/02/06 01:57:34
不定って言えば逃げられるとでも思ってんのかw
678:デフォルトの名無しさん
09/02/06 01:57:58
お前のプログラムの動作が不定なんだろw
679:デフォルトの名無しさん
09/02/06 01:58:14
670でa(2)が先に呼ばれるわけないだろwwwwwwwwwwwwwwwwww
もうやめとけってwwwwwwwwwwwwwwwwwww
680:デフォルトの名無しさん
09/02/06 01:58:30
>>676
不定ではあるが、「==のLHSとRHSの置換が常に等価なので置き換えても安全である」
という間抜けな主張への反証としては十分過ぎる例かと
681:デフォルトの名無しさん
09/02/06 01:58:45
コンパイラがウンコな時代とか時代背景があるならわかるんだが
今なお使っている奴はなんなんだという
682:デフォルトの名無しさん
09/02/06 01:58:54
左辺に定数置くとウォーニングでんのか?
683:デフォルトの名無しさん
09/02/06 01:59:55
左辺に定数を置いたらダメな理由が不明すぎ。
自分のスタイルと違って見づらいっていうならまだしも、かっこ悪いとか時代遅れとか? 死ねよ。
684:デフォルトの名無しさん
09/02/06 02:00:24
>>682
if (x = y) {..}
とか書くと今のコンパイラは大抵は警告を出す
が、別に比較式はif文だのwhile文だの中でしか使えないと決まっているわけではない
685:デフォルトの名無しさん
09/02/06 02:01:24
なんだ、本物のバカばっかりか
URLリンク(www.kouno.jp)
>>680
a(1) == a(2)もa(2) == a(1)もどっちも「不定」という意味で等価
どっちで書いたとしてもどっちが先に呼ばれるかわからないんだから
686:デフォルトの名無しさん
09/02/06 02:02:08
つーか
"".equals(x)
と
x.equals("")
は意味が違うだろと
前者はreceiverがStringであることが確定している式で、xがnullでもよい
後者は確定していない(nullかもしれない)
本当は、二項演算をこのような形でしか書けないJavaがよくない
687:デフォルトの名無しさん
09/02/06 02:02:11
お客に「前から動作不定だったんですよ!」って言い訳するの?
688:デフォルトの名無しさん
09/02/06 02:02:48
馬鹿はお前。言い訳になってない。
689:デフォルトの名無しさん
09/02/06 02:04:27
>>687
入れ替えようと入れ替えまいと、コンパイラのご機嫌で評価順なんていくらでも変わるんだから
遅かれ速かれ言い訳することになるだろうね
あんなコード書いてたら
690:デフォルトの名無しさん
09/02/06 02:04:35
で、grep一発の件はどうなったの?
>>665は?
691:デフォルトの名無しさん
09/02/06 02:05:55
お客に「悪いのは僕じゃない!」って言い訳するの?
692:デフォルトの名無しさん
09/02/06 02:05:56
>>685
またひどいリンク見つけてきたな
>f() + g() * h()
>
>掛け算は足し算の前に起こるということはわかっているけれど、3つの関数のうちどの関数が最初に呼ばれるかはわからない。
そんなわけねーだろwww
693:デフォルトの名無しさん
09/02/06 02:06:52
動作不定がコンパイラの機嫌だと思ってるのかよ!!!
694:デフォルトの名無しさん
09/02/06 02:07:16
入れ替えてバグが出るようなコードは
たとえ入れ替えなくてもちょっとした弾みでバグが出るんだよ
だったら入れ替えても入れ替えなくても同じじゃないか、と言ってる
695:デフォルトの名無しさん
09/02/06 02:07:36
恥ずかしすぎる。
696:デフォルトの名無しさん
09/02/06 02:08:27
>>693
機嫌だよ
極端な話、コンパイルごとに評価順変えたっていい
それが不定(unspecified)の意味
697:デフォルトの名無しさん
09/02/06 02:10:39
Javaは左辺を先に評価すると決められてる
左辺から評価するのが普通だろ
わざわざ右辺から評価する変態コンパイラがあるわけがない
698:デフォルトの名無しさん
09/02/06 02:12:35
本の知識だけで本物のコンパイラを知らない子供が不定不定って騒いでるんだな
699:デフォルトの名無しさん
09/02/06 02:17:32
規格票に不定と書いてあるんなら規格票が最優先だばかものども
700:デフォルトの名無しさん
09/02/06 02:18:57
>>698
帰れよ
701:デフォルトの名無しさん
09/02/06 02:26:32
ついに反論も出来なくなったかw
これに懲りたらもう二度と勝手に左辺と右辺を交換するなよ
評価順が変わってみんなに迷惑かけるからな
702:デフォルトの名無しさん
09/02/06 02:47:15
>>692
さすがにランダムで順番決めるわけじゃないよ。
その文章は、コンパイラが違ったり、同じコンパイラでも最適化とかのオプション次第で変わるよと言う話。
703:デフォルトの名無しさん
09/02/06 04:09:55
>>692
激ワロタww
704:デフォルトの名無しさん
09/02/06 07:36:50
おまえら if (3 == a) の件で騒いでたのか。暇だなあw
これって誰かが「こう書けば間違って(3 = a)と書いた時検出できる」って提唱して広まったんだけど、
○"=="以外では意味が無い
○"=="でも定数相手以外では意味が無い
○直感的でなく読みにくい(人間は「aが3と等しければ」と思考する、逆はあまり得意ではない)
という理由から言うほど広まらなかったんだよな。
意外に、直感的でないというのは大きい理由で、流して読んでるときにこういう箇所で「ん?」って
止まっちゃうのって結構思考の邪魔になる。
今でも頑張って「3 == a」って書いてる奴はまあ、頑固というか論理的すぎるというか形式主義
というか、要するに「感覚」より「論理」の方が大事な奴なんだろうな。
コーディングやってると「感覚」を妨げることの方がよっぽど作業効率を落とすと思うんだけどね。
705:デフォルトの名無しさん
09/02/06 07:41:50
普通は = にしても警告出るから a == 3 で全く問題ない
706:デフォルトの名無しさん
09/02/06 07:46:04
わたしも昔は、定数左派だったが、いまではコンパイラが警告出してくれるので、どちらでもよくなった。
強いて言えば、読みやすい方(例えば右側)に書いている。
if ( foo >= 0 && foo < 256 ) よりも if ( 0 <= foo && foo < 256 ) の方が、読みやすいから、
こういうときは、左に書いている。まぁ、今回の話とは関係ないことだけど。
そろそろ、C++プログラマはウンコの話に戻せよ。
707:デフォルトの名無しさん
09/02/06 07:51:15
>if ( foo >= 0 && foo < 256 ) よりも if ( 0 <= foo && foo < 256 ) の方が、読みやすいから、
こういう、数直線のイメージに拘ると称して意味不明な理屈を振り翳す奴ってよく居るよね。
前者なら「fooがゼロ以上で256未満」と素直に読めるのにね。
708:デフォルトの名無しさん
09/02/06 08:03:36
わかるなー
if ( 0 <= foo && foo < 256 ) がif ( foo >= 0 && foo < 256 ) より読みやすいとは一切思わないね
まあこっちはそこまで読みにくくもないけど、
これの否定をif ( foo < 0 || 256 <= foo ) とか書かれると最悪なんだよ
こっちに関してはif ( foo < 0 || foo >= 256 ) の方が圧倒的に読みやすいに決まってるのに
数直線にこだわる奴は数直線で思考止まってるんだよね
709:デフォルトの名無しさん
09/02/06 08:52:09
だからコーディングスタイルの話は他のスレでできるだろ。
ここはうんこのスレなんだからそれらしくだな
710:デフォルトの名無しさん
09/02/06 09:41:31
ほんと簡単な話題だとくいつきがいいよな
左定数なんておまえら何回同じ話してんだっつーの
711:デフォルトの名無しさん
09/02/06 10:47:13
自転車置場の議論ってやつだな。
URLリンク(0xcc.net)
712:デフォルトの名無しさん
09/02/06 13:09:20
C プログラマは下らない議論でしか盛り上がれないからな。
713:デフォルトの名無しさん
09/02/06 13:21:00
だな
C言語は文法が簡単なので雑談に流れやすい
C++になると言語仕様そのものが難解になるので雑談している暇がない
と言ったところか
714:デフォルトの名無しさん
09/02/06 13:28:20
C++の言語仕様が難解ってどんだけ馬鹿なんだよ。
715:デフォルトの名無しさん
09/02/06 13:36:13
C++の言語仕様が難解じゃないって言ってるってどんだけ馬鹿なんだよ
716:デフォルトの名無しさん
09/02/06 13:41:06
バカばっか
717:デフォルトの名無しさん
09/02/06 13:45:18
>>714
こういう奴にboostのソースを全部読み解けるかたずねてみたいものだ
718:デフォルトの名無しさん
09/02/06 14:02:06
boostが難解なのであってC++の言語仕様が難解なのではない
719:デフォルトの名無しさん
09/02/06 14:04:33
また言い訳始めよったか
720:デフォルトの名無しさん
09/02/06 14:15:56
boost自体のソースはきれいに出来てるじゃないか
むしろboostを使うと
721:デフォルトの名無しさん
09/02/06 14:55:10
言語仕様の話してんのに boost 持ち出すとか、どんだけ莫迦なんだろう。
722:デフォルトの名無しさん
09/02/06 14:58:20
>>713
えーと、難解だから偉い、と言っているんでしょうか?
723:デフォルトの名無しさん
09/02/06 15:17:18
>>707,708
Pythonで普段
if 256 <= a < 4096:
pass
って書いてたら、他の言語でも自然に 0 <= a && a < 256 って読み書きするし、普通に読みやすいよ。
724:デフォルトの名無しさん
09/02/06 15:18:19
brainf*ckやwhitespaceのコードを読めばわかるが
言語仕様が単純明快でも高可読性には必ずしもつながらない
725:デフォルトの名無しさん
09/02/06 15:19:40
>>708
否定するときは直感的に否定で書こうぜ。無理に or に書き直す必要は無い。
if ( !(0 <= foo && foo < 256))
726:デフォルトの名無しさん
09/02/06 15:34:44
それならまだ
if (〜)
;
else
の方が…つか、style スレでやれと。何度も。
727:デフォルトの名無しさん
09/02/06 18:08:16
>>725
Pythonは所詮スクリプト言語だし、効率なんてどうでもいい所で使うもんだからそれでもいいけどさ
if ( 0 <= foo && foo < 256 ) の書き方のもう一つの最悪な所として、柔軟性が全然ない
たとえばfooが負になることが滅多にないとすると、当然両辺の入れ替えを考えるわけだが
このまま入れ替えるとif ( foo < 256 && 0 <= foo ) という壮絶な式になってしまう
数直線にこだわるならif ( 256 > foo && foo >= 0 ) になるが、数直線としても向きが逆だし
ただ両辺を入れ替えるだけなのに全部書き直しだ
最初からif ( foo >= 0 && foo < 256 )ならそんなこと考える必要もないんだぜ
728:デフォルトの名無しさん
09/02/06 18:47:24
何が壮絶なのやら
729:デフォルトの名無しさん
09/02/06 19:08:09
>>727
>たとえばfooが負になることが滅多にないとすると、当然両辺の入れ替えを考えるわけだが
おれはそんなこと考えないから数直線で良いや。
いい加減、個人の感性の問題で、お前の感性に根拠なんて無いことを自覚しろ。
730:デフォルトの名無しさん
09/02/06 19:09:01
Cプログラマって本当に暇なんだな
731:デフォルトの名無しさん
09/02/06 19:20:37
C++って難解なんかい?
うわこれすげーおもすれー
732:デフォルトの名無しさん
09/02/06 20:06:13
>>729
おいおい…&&は偽になりやすい順に、||は真になりやすい順に並べるのが当たり前だろ
そんなことも考えずにC使うなよ
733:デフォルトの名無しさん
09/02/06 20:18:07
>>729
短絡評価(short circuit)って知ってる・・・よな?
734:デフォルトの名無しさん
09/02/06 20:58:12
比較回数減るから速くなるって言いたいんだろ、知ってるよそんなもん
だがそんなのはコンパイラが最適化の時に決めるもんであって人間様が気にすることじゃない
可読性の方が大事
735:デフォルトの名無しさん
09/02/06 21:09:32
>>734
コンパイラに期待しすぎ
736:デフォルトの名無しさん
09/02/06 21:15:47
if(0 <= a && a < 256)
のときに
0 <= a の方が
a < 256 よりも
先に評価されるのは仕様で決まっていますか?
737:デフォルトの名無しさん
09/02/06 21:17:47
>>734
ショートサーキットに反するから絶対にひっくり返してはくれないよ。
まあ、そもそもこんなところを手動最適化したところで
効果なんてたかが知れてる。
基本的に全部読みやすく書くべき。
738:デフォルトの名無しさん
09/02/06 21:23:06
>>736
それに依存した書き方がされているのが当然だから
バグ入れるなよ
739:デフォルトの名無しさん
09/02/06 21:27:54
>>734
バグニモマケズ
副作用ニモマケズ
標準ニ準拠シ
プログラマノ意図ヲ汲ンデ
空気ヲ読ンデ
適切ナ方ヲ最初ニオイテクレル
ソンナコンパイラニ 私ハナリタイ
無茶言うなよ(笑)
740:デフォルトの名無しさん
09/02/06 21:30:26
>>739
その「副作用」は意味合ってんの?
741:デフォルトの名無しさん
09/02/06 21:45:46
if ( foo >= 0 && foo < 256 ) のどこに副作用があるんだよアホか
(fooやifが変なマクロってのはなし)
742:デフォルトの名無しさん
09/02/06 21:50:45
>>741
ああ、そこは一般論の話。
変数なら副作用は無いけど、↓
「リソウノコンパイラ」なら
hoge()>piyo()&&foo()==bar()
とかにも対応しているんじゃね?
そのときはきっと
プログラマノ意図ヲ汲ンデ
副作用がおきないことを(リソウノコンパイラが)理解した上で
空気ヲ読ンデ
適切ナ方ヲ最初ニオイテクレル
ソンナコン…(ry
っていう意味。
説明不足すまそ
743:デフォルトの名無しさん
09/02/06 22:14:56
min < a && a < max みたいな上限と下限を指定する比較って
そもそもあまり書かなくない?
思い起こすと、C言語を覚えたばかりの頃はよく使っていて、
Pythonみたいな min < a < max があればいいのに、と思ったけど
今は全く使わない。
経験を積むと自然と使わなくなる書き方じゃないかなあ・・・多分
744:デフォルトの名無しさん
09/02/06 22:15:39
エラー処理とか全くやってないのか
745:デフォルトの名無しさん
09/02/06 22:22:48
入門者の頃と違って、エラー処理をちゃんと考え出すことも
そういう単純な範囲比較をしなくなる理由のひとつだろうね
もちろん単純に上限下限でくくって済むケースもあることは否定しないよ
746:デフォルトの名無しさん
09/02/06 22:31:38
>>741
bool operator&&(int a, int b){printf("バカ\n");return 0}
747:デフォルトの名無しさん
09/02/06 22:44:04
いや、沢山あるだろう・・・
748:デフォルトの名無しさん
09/02/06 22:46:49
もちろん単純に上限下限でくくって済むケースもあることは否定しないよw
749:デフォルトの名無しさん
09/02/06 22:57:18
プラスαがあっても上限下限でくくる部分はそう書くね
750:デフォルトの名無しさん
09/02/06 23:38:18
くだらないことをさも意味があるかのように話すからよってくるなって言われるんだろうな
751:デフォルトの名無しさん
09/02/06 23:59:10
>>746
それはさすがのC++でも許してない
752:デフォルトの名無しさん
09/02/07 00:26:04
>(fooやifが変なマクロってのはなし)
つ「演算子のオーバーロード」
753:デフォルトの名無しさん
09/02/07 00:43:58
DDR3は待たなくてもいいっぽいな。
URLリンク(www.age2.tv)
URLリンク(www.age2.tv)
URLリンク(www.age2.tv)
URLリンク(www.age2.tv)
754:デフォルトの名無しさん
09/02/07 00:45:01
guro
755:デフォルトの名無しさん
09/02/07 00:46:01
intとintの演算はオーバーロードできないぞ
それやるならこうしないといけない
Bar operator>=(Foo, int){/*...*/}
Bar operator<(Foo, int){/*...*/}
bool operator&&(Bar, Bar){/*...*/}
756:デフォルトの名無しさん
09/02/07 00:47:34
int が別の型に置換されるマクロかもしれないじゃないか
757:デフォルトの名無しさん
09/02/07 00:49:29
なるほどその発想はなかった
758:デフォルトの名無しさん
09/02/07 01:11:40
IsRangeとかテンプレートでつくれよこのウンコやろう
759:デフォルトの名無しさん
09/02/07 01:23:29
OrangeRange
760:デフォルトの名無しさん
09/02/07 01:28:53
Boostにintervalといううんこがあるよ
Boost Interval Arithmetic Library
URLリンク(www.boost.org)
761:デフォルトの名無しさん
09/02/07 03:16:02
#define int char
#define private public
762:デフォルトの名無しさん
09/02/07 04:16:46
C++の優れている点
◎bool型
◎文字定数がchar型 (Cだとint型)
◎namaspace
◎メンバ関数 (structスコープ内限定の関数を宣言できる)
◎inline関数
◎引数省略時の解釈。 int f( ); が int f( void ); と等しい。
Cだと引数は任意の意。
○static_cast等の新形式のキャスト (もっと短くして欲しいが…)
○デフォルト引数
○structがスコープを持つ。
Cだとstruct内にstruct等を書いてもグローバルスコープ。
△参照
△変数の宣言がブロック先頭に限定されていない
まとめると
「型・スコープがより厳密になった一方で、記述の柔軟性がUP」
ですかね。
763:デフォルトの名無しさん
09/02/07 06:24:37
for (;_;)//~~
while (T_T)//~~
764:デフォルトの名無しさん
09/02/07 10:04:51
ここでアセンブラ廚の俺が登場
素直にLisp使え
765:デフォルトの名無しさん
09/02/07 10:22:05
まずはLispでカーネルモジュールあたりを作ってから口出してもらおうか。
そういえば「出刃どらはC++で書きたい」というようなスレがLKMLであったような。
766:デフォルトの名無しさん
09/02/07 11:17:06
テレビの制御モジュールではダメかね?
767:デフォルトの名無しさん
09/02/07 11:39:18
デフォルト引数は手抜き野郎がチェックせずに関数仕様を変更する温床にしかなってない気がするんだが。
768:デフォルトの名無しさん
09/02/07 12:18:23
デフォルト引数より名前つき引数をサポートしてホシィ
769:デフォルトの名無しさん
09/02/07 13:09:11
>>768
これは同意
とはいえ、全ての関数呼び出しに名前付けろとか言われると
やりきれないけど
770:デフォルトの名無しさん
09/02/07 13:23:54
クロージャが匿名クラスなら
名前つき引数は匿名構造体か
771:デフォルトの名無しさん
09/02/07 13:26:48
最近のgccだと
foo({.hoge = hogedata, .fuga = fugadata});
とかいけるんだっけ?
772:デフォルトの名無しさん
09/02/07 13:40:46
hoge、fugaの型は?
773:デフォルトの名無しさん
09/02/07 14:13:32
ほんとにできたよな、と試してみた。
#include <stdio.h>
struct hore { int hoge, fuga; };
void foo(struct hore *data) { printf("hoge=%d\n", data->hoge); }
int main(void) {
foo(&(struct hore){.hoge = 1, .fuga = 2});
return 0;
}
多相関数なんてないんだから、キャストなしでも警告程度で自動型判定して
くれてもいいんじゃないかとオモタ。
774:デフォルトの名無しさん
09/02/07 14:44:13
>>771,773
C99からできるようになったんだよ。
前は、GCCの拡張だった気がするけど。
まぁ、それ使い出すともうC言語じゃないと思っているから、いまだに実際に使ったことはない。
いまだに、C89でも通るように組んでいる。(というかむしろ-std=c89 -ansi -pedanticでコンパイルしている)
#if (__STDC_VERSION__ >= 199901L)で、inlineとかrestrictとか使うようにしている。
可変引数マクロを使いたいと何度思ったことか。全ては、C89で通るように。
775:デフォルトの名無しさん
09/02/07 15:20:41
それ、名前付き引数じゃなくて、複合リテラルだろ
776:デフォルトの名無しさん
09/02/07 15:27:30
ちなみに、C++0xだと初期化リストでfoo({hogedata, fugadata});と書けるようになるはず。
777:デフォルトの名無しさん
09/02/07 15:33:53
むしろ、C99,gccマンセー。
778:デフォルトの名無しさん
09/02/07 15:35:27
>>774
可変引数マクロは最低限2つ引数がないと使えないという糞仕様なので
使わなくていい。なんでgcc拡張をそのまま採用しなかったのが意味不明。
C89で通したいならMACRO(())で今後もやるしなかいな。
779:デフォルトの名無しさん
09/02/07 16:00:50
>>778
引数2つってどういうこと?
URLリンク(seclan.dll.jp)
ここにはこういう例が載っているけど。
#define dbg(fmt, ...) \
printf("debug:" fmt, __VA_ARGS__)
#define adbg(...) \ //(1)これもOK
printf("debug:" __VA_ARGS__)
780:デフォルトの名無しさん
09/02/07 16:10:11
>>799
あれ?前試したときは
#define HOGE(FMT, ...)
みたいに一つは置石がないと ... を続けられなかった記憶があって
そう書いたんだけど、... 単品で通るね。
スマン、嘘情報でした _O_ (トンクス)
781:デフォルトの名無しさん
09/02/07 19:59:11
C最強だろw
C++とかコロコロ言語仕様変わるし
糞仕様のオンパレードw
782:デフォルトの名無しさん
09/02/07 20:40:21
と、C++に挫折したCプログラマが負け惜しみを呟いております
783:デフォルトの名無しさん
09/02/07 20:41:47
Cで数十万行のものとか扱ってるけど
その8割方はschemeのコードから自動生成したものだったりする
Cはこういう使い方も比較的楽できるからいいね、C++でやろうとしたら
数倍難しい
784:デフォルトの名無しさん
09/02/07 20:45:01
Cのコードを吐けるなら
C++のコードも吐けるだろ
ほぼ同じで動くんだから
785:デフォルトの名無しさん
09/02/07 21:09:23
Cが低レベルな言語だから高レベルな言語からの変換がしやすいだけでしょ。
コンパイルができるとCに変換できるはほぼ同義じゃねーかよ。
パラダイムの違う高水準言語同士で機能をフルに使った変換とか難しくて当然じゃねーかよと。
786:デフォルトの名無しさん
09/02/07 21:38:45
>>762
template もあるんじゃね
787:デフォルトの名無しさん
09/02/07 21:42:34
>>783
それなら全部schemeで扱って、コンパイルのときだけCにすればいいってことだね。
つまりscheme最高ってこと?
788:デフォルトの名無しさん
09/02/07 22:17:25
>>787
8割って書いてあるだろ。
それを無理矢理10割にしようとした結果が、C++のようなモンスター言語だ。
789:デフォルトの名無しさん
09/02/07 22:22:50
まぁ確かに最近のC++はメタプログラミングに力入れてるね
790:デフォルトの名無しさん
09/02/07 22:37:59
C++は糞言語
これだけはガチ
791:デフォルトの名無しさん
09/02/07 22:43:23
その糞を拭えば、コアはすばらしく良い言語なんだよ
Cの膨大なライブラリもそのまんま使えるし
糞の上塗りさえやめてくれればいいんだけど
792:デフォルトの名無しさん
09/02/07 22:56:15
糞は糞
C++はRubyよりも狂信者が多い
異端宗教者の集まりだしなw
793:デフォルトの名無しさん
09/02/08 00:00:49
根拠のないアンチC++も多いってことは分かった。
794:デフォルトの名無しさん
09/02/08 00:08:54
信者でもC++を他人に薦めるようなのは少数派だしね
795:デフォルトの名無しさん
09/02/08 00:24:12
いや糞がついたものは洗っても食わないだろう普通
796:デフォルトの名無しさん
09/02/08 00:25:55
都会の人間は堆肥を知らない
797:デフォルトの名無しさん
09/02/08 00:31:09
江戸は、糞の再利用にかけては今も昔も世界最先端都市だったのになあ
潔癖症は中国農薬野菜でも食ってろ
798:デフォルトの名無しさん
09/02/08 00:38:34
・メンバ関数
・アクセス修飾子
・new/delete演算子とこの2つだけの演算子オーバーロード
これだけでいいよ。継承は単一継承ならホントはあってもいいけど
継承を乱用する奴多いから要らないかな・・・
799:デフォルトの名無しさん
09/02/08 00:39:39
ベースはc99ね
800:デフォルトの名無しさん
09/02/08 00:39:53
テンプレートも入れといて。
801:デフォルトの名無しさん
09/02/08 00:40:19
テンプレートも乱用されるからね・・・
802:デフォルトの名無しさん
09/02/08 00:47:28
継承よりは副作用がないと思うんだ。
803:デフォルトの名無しさん
09/02/08 01:29:13
なんでそんな四則演算のオーバーロードをいやがるん。
ベクトルとか行列とかクォータニオンとか複素数とか扱ったことないわけ?
804:デフォルトの名無しさん
09/02/08 01:36:46
>>803
意味無いし生産性悪い書き方だから
排除すべきだろ
そんな特殊なケースのみを言語仕様に盛り込み
たがるアホがC++に多い影響でC++自体が邪教の
産物になってしまっただろ。
次期C++仕様もboostの製作陣から糞過ぎるって
痛烈に批判されてるしなw
805:デフォルトの名無しさん
09/02/08 01:39:37
宇治社中で学んだ口だがオーバーロードいらん
806:デフォルトの名無しさん
09/02/08 01:42:04
haskellみたいに関数を演算子として適用する明快な方法を提供していれば
また状況は違ったかもしれないが、
807:デフォルトの名無しさん
09/02/08 01:47:03
>>803-804
意味はあると思うけど、指針が無くて個々人の感性に任されるから、
乱用されて他人から見たら直感的でない、ってケースがありすぎる。
結果、いっそ排除した方が良いというハメに。
808:デフォルトの名無しさん
09/02/08 02:07:07
Prolog みたいに演算子を好きに定義できる言語もあるんだし
このくらいなんてことはないよ
809:デフォルトの名無しさん
09/02/08 02:19:48
Prologで大規模開発してから言ってくれ
810:デフォルトの名無しさん
09/02/08 04:38:56
演算子オーバーロードが無かったら…
stringとかvectorとか、めっさ使い勝手が悪くなると思うけど。
record = name + "\t" + address + … ;
とか書けてたのが、↓になっちゃうんですが。
record.assign( name ).append( "\t" ).append( address ) … ;
811:デフォルトの名無しさん
09/02/08 05:00:46
そんなのどうでもいいというか良く使う機能で慣れてるから違和感ないだけで
慣れてなければPerl並に可読性悪い。
812:デフォルトの名無しさん
09/02/08 05:04:55
演算子多重定義は要るよ派だけど、
C++のostringstreamとC#のStringBuilderでは後者のほうが使いやすいと思う。
そもそもiotreamの<<と>>が終わりの始まりだったな。
813:デフォルトの名無しさん
09/02/08 05:41:31
記号地獄はもういやです
814:デフォルトの名無しさん
09/02/08 05:43:58
CのDLL -> C++/CLIのDLL -> C丼のGUI
の構成でC++/CLIを使ってみた。
変態言語だと思った。
いや、C++は好きなんだけど…
スレ違いか・・・
815:デフォルトの名無しさん
09/02/08 06:17:58
文字列の連結は + で行う言語が主流ではあるけど
& で行う言語や . で行う言語もあるんだよな。
816:デフォルトの名無しさん
09/02/08 07:35:23
>>810
> record.assign( name ).append( "\t" ).append( address ) … ;
record = name + "\t" + address + … ;
⇔ (python)
'%s\t%s' % (name, address)
⇔ (python)
'%(name)s\t%(address)s' % locals()
⇔ (glib)
g_strdup_printf( "%s\t%s", name, address);
817:デフォルトの名無しさん
09/02/08 08:25:33
>>810
sprintfも知らない奴は発言するな
818:デフォルトの名無しさん
09/02/08 08:34:05
>812
iotreamがC++入門者への糞設計洗脳プログラムとして作用してる。
819:デフォルトの名無しさん
09/02/08 09:22:22
自分の頭が悪いだけなのに無意味な仕様って
テレビと同レベルだな
820:デフォルトの名無しさん
09/02/08 09:38:16
お前ってテレビ大好きだなw
821:デフォルトの名無しさん
09/02/08 09:38:33
>>812
その二つは用途が違うだろ。
C++のstringはイミュータブルじゃないからstringbuilder系のクラスいらないし。
822:デフォルトの名無しさん
09/02/08 09:50:21
文字列の連結に演算子が要らない言語もあるね。
他の言語がどうだってのは余り意味がないよ。
823:デフォルトの名無しさん
09/02/08 10:31:48
LinuxがC++不要言ってたんだし
2chのC++関連のスレ潰していこうぜ
824:デフォルトの名無しさん
09/02/08 10:38:56
半端なとういうか
わからないならおとなしくbetterCとして使ってればいいのに
ヘタに手を出してクソコードを生み出してる奴を叩いてるのであって
825:デフォルトの名無しさん
09/02/08 10:54:45
そりゃ、Linuxの開発にC++は邪魔だろうな。
Cはヘッダ共有しなくても、関数引数リストがわかっていれば他人の書いたソース・オブジェクトと連携できるが、
C++はヘッダ共有しないと話にならないし。
最初から統一された設計の下に作るならC++がいいが、大勢の思いつきの寄せ集め的開発手法にはあわんわな。
826:デフォルトの名無しさん
09/02/08 11:20:47
名前マングリング位統一しとけよハゲ
ということか
827:デフォルトの名無しさん
09/02/08 11:28:15
Linusは2ちゃんの味方。
彼はレベルが高いよ。
828:デフォルトの名無しさん
09/02/08 12:23:26
>>803
ないんだろうな。数学コードまったく書かない文系なんだろ。
「特殊なケース」とかアホすぎる。お前ゲーム一切やるなと
829:デフォルトの名無しさん
09/02/08 12:25:07
記号のオーバーロードがどんなに危険か想像つかない奴は幸せだよ
たいしたコード書いてないって自分で白状してるようなもんだ
830:デフォルトの名無しさん
09/02/08 12:33:28
ゲームの場合は計算量を抑えるために
演算子オーバーロードを敢えて使わないケースもあると思う。
a = b * c; とか、無駄なテンポラリオブジェクトを作って、
そこからの代入が発生してしまうので、
これが行列だったりしたら結構無駄が多くなる。
Matrix a = b * c; なら最適化効くからいいけど。
演算子オーバーロードはもっと計算量がシビアに効いてこないプログラムや値で
使った方がいいと思われ。
まあ、分数や複素数程度ならいいんじゃない?
831:デフォルトの名無しさん
09/02/08 12:38:42
つ Expression Template
832:デフォルトの名無しさん
09/02/08 12:43:01
もう好きにすればいいじゃないか。
C++が使いたい奴は、勝手に使ってもらって構いません。
わたしとあなたが出会わなければいいだけです。
C++の演算子オーバーロードは、抽象データ型を直感的に(原始データ型と同じように)扱うためにあるんだよ。
演算子オーバーロードをしないのであれば、別にC言語で十分同じようなことはできる。
TMPは、したいと思うけど、あれはコンパイラががんばっているだけだから、
何か取り決めを決めて、Perlを通して、C言語を吐かせた後にコンパイルすれば、どうにでもなる。
833:デフォルトの名無しさん
09/02/08 12:47:01
複雑な計算式になると、関数呼び出しだけじゃ訳分からんことになるので
演算子オーバーロードは貴重だぞ
834:デフォルトの名無しさん
09/02/08 12:54:29
>>833
計算はFORTRANだろ、常考
835:デフォルトの名無しさん
09/02/08 12:55:52
>出会わなければいいだけ
まったくそのとおり。
勝手に演算子オーバーロードでも使って、見た目キレイに書いて、
バグが出た時には勝手に死んでくれてればいいんだが、
オレのコードにそんな不便なものを混入されたら迷惑なんだよな。
836:デフォルトの名無しさん
09/02/08 12:58:37
まぁぶっちゃけ演算子オーバーロードは
文字列と数学系以外使わないからどうでもいい
あとはboostが変態的な使い方してる位か
つうかC#にもあるんだがそれには文句ないのか
837:デフォルトの名無しさん
09/02/08 12:59:06
1 * 2は*(1,2)っていう関数適用の構文糖衣
ただその構文糖衣に「かけ算」っていう暗黙の解釈が存在するのが混乱の元になってるんだろうよ
オーバーロードなんて((Int,Int), *)と((MyT, MyT), *)っていう代数構造を示す組が同時に存在してるだけじゃん
それに伴う暗黙の変換は場合によっちゃ厄介だけどさ
838:デフォルトの名無しさん
09/02/08 13:00:03
>>835
数値クラスの場合は関数で書いた方がバグは多いと思うぞw
839:デフォルトの名無しさん
09/02/08 13:03:36
バグを減らすなら暗黙の型変換を一切禁止しちまえばいい
840:835
09/02/08 13:21:03
バグが出やすい出にくいの話なんてしてないよ。
バグった時にひどい目に逢うと言っている。
演算子オーバーロードだけじゃない、継承もそうだし、コンストラクタもそうだし、
カプセル化と称するインターフェイスの共通化もそうだ。
オブジェクト指向はなんだか宗教みたいになってるよ。たいした功績も無いまま、
キミ達のような信者が必死に信仰してる。
そういう信者が多い方がこっちとしては希少価値が上がって助かるけどなw
841:デフォルトの名無しさん
09/02/08 13:21:47
a * b - c * d
a.multiply(b).subtract(c.multiply(d))
842:デフォルトの名無しさん
09/02/08 13:23:56
論理記述より数式記述のほうが直感的というのもどうかと思うが
843:デフォルトの名無しさん
09/02/08 13:26:39
酷い目に逢うという思い込みで語られても
844:デフォルトの名無しさん
09/02/08 13:26:54
メンバ関数の呼び出しも構文糖衣なんだよな
thisもパラメータであることを考慮してみると
xの型をTとしてx.fって呼び出しはcall(x,T::*f)であると考えられる
845:デフォルトの名無しさん
09/02/08 13:27:31
ひどい目に合うって経験談だろ。
846:デフォルトの名無しさん
09/02/08 13:27:34
外部関数をメンバ関数であるかのように呼べる言語もあるね
847:デフォルトの名無しさん
09/02/08 13:27:57
>>845
具体例を挙げない体験談ほど胡散臭いものは無い
848:デフォルトの名無しさん
09/02/08 13:30:00
>>847
まあそうかも知らんがめんどいしこれだけのやつらが言うって言うのも何かあるとは思うだろ。
キミはどのくらいの規模のプロジェクトをどんな立場でどのくらいやってきたんだい?
849:デフォルトの名無しさん
09/02/08 13:33:10
構文糖衣かどうかより、シンプルな問題はシンプルに書きたい。
その辺り C言語はバランスよく出来てる。
その意味では、string の + はアリだと思うけど
一般のクラスに対しても + を overload できるのはやりすぎちゃったよね
850:デフォルトの名無しさん
09/02/08 13:35:12
何年も保守されてるプログラムでも
普通に文字列の + とか使われてるが、
何の問題も起きた事無いけどな。
851:デフォルトの名無しさん
09/02/08 13:35:17
>>849
やりすぎとはまったく思わない。
必要ないときは使わなければ良いだけ。
852:デフォルトの名無しさん
09/02/08 13:35:38
そもそも隠蔽化と継承・多態はセットである必要があるのか?
隠蔽化だけならモジュールプログラミングなんだっけ?
853:デフォルトの名無しさん
09/02/08 13:36:18
>>851
きみみたいなのがプロジェクトで深刻な問題を引き起こしてるんだよって話
854:デフォルトの名無しさん
09/02/08 13:38:21
だから具体例上げろよカス
855:デフォルトの名無しさん
09/02/08 13:39:54
一般化の利点は取捨選択ができること
stringの+とか一部だけ許すってのは、その一部のクラスを言語の仕様に組み込んでしまうということ
特殊化より一般化
856:デフォルトの名無しさん
09/02/08 13:40:13
まあプロジェクトリーダーになったらわかるよ。
なれないと思うけど。
857:デフォルトの名無しさん
09/02/08 13:41:00
ゴミを大量生産する一般化。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4337日前に更新/175 KB
担当:undef