1 名前:前々スレ985 mailto:sage [03/12/18 06:52] 理解できないわけないだろ! デザパタも知らずにC++使いの質を下げるC厨には げんあり 前スレ達 難易度:1 pc2.2ch.net/tech/kako/1058/10586/1058675178.html 難易度:2 1pc2.2ch.net/test/read.cgi/tech/1063323615/
720 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 12:43:04 ] > 他の言語との比較は荒れるもとなので意図的に控えてるけどね。 一連の書き込みから、どうも何か煽っているように見えてたんだけど、 荒れるのは嫌なのね。いったい何がしたいの?
721 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 12:47:21 ] >>717 traits技術を駆使してテンプレートライブラリを設計して いろんな注意点に気がついてしまったか まずその注意点を書くべきだぞ
722 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 12:47:44 ] 汎用的なコードを書こうと思ったらいろいろ気をつけなきゃいけなくなるのは あたりまえなのにねぇ。
723 名前:デフォルトの名無しさん [2007/03/25(日) 13:01:52 ] >>719 stringを含めたクラスでクラス同士の足し算利用するようなことは 十分使えるものなんだが。そんなところまで意図して書いている。 かけ算までは利用する事はあまりないと思うがね。 やはり実際に作ってみないとわかりにくいのかもしれないね。実際に テンプレートクラスを1から作ってご覧。 >>720 何がしたいの?ってこのスレのタイトルに対しての見解を書いてるだけ だよ。仮に、C++賞賛スレならばこんな事は書かない。辛口なこと?は 十分受け入れられるスレだと判断したからだ。 同じルールの元で、いろんなパラダイムを持ってきたのではなくて、 つぎはぎの仕方が複雑になってるからだと言ってるわけ、その例が、 オブジェクト指向とテンプレートの掛け合わせの問題を出しているだけ。 C++ではいろんな事は確かに出来るけど、複雑なルールの元で作られて るために、保守点検も含めていろんな事が難しくなる。それが、C++人 気が廃れてきた原因だろうね。
724 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 13:20:02 ] なんていうか、新しく覚えた手法は全部使わないと気がすまない病気なんじゃないだろうか? ある程度知識欲のあるプログラマなら一度はかかる病だと思ってるけど。 必要なプログラムだけ書いてればいいんだよ。新しい機能を思いついても、 明らかな必要性がない限りやらないほうがいい。 YGANI ってやつ?
725 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 13:23:42 ] 批判精神に富んだ青年に traits技術を駆使してテンプレートライブラリを設計して いろんな注意点に気がついてしまわせたC++は 魅力的な言語だと言うことだな
726 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 13:31:10 ] >>723 > オブジェクト指向とテンプレートの掛け合わせの問題を出しているだけ。 最初っから言われてるけど、さっぱり因果関係がわからん。 人に伝えるつもりなら「やってみれ」とかで済まさずに説明してくれ。 説明する気が無いなら長文 age ウザイからチラシの裏にでも書いててくれ。
727 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 16:32:14 ] 例えばBoostとか見てみ。何も複雑なことないでしょ? 言語機能を把握しきれなくて複雑に感じるというのなら納得。しかしオブジェクト指向、ジェネリックプログラミングはむしろ構造を素直に記述するために上手く働いてると思うんだけど。さらにテンプレートは最適化にも貢献してる。 同じことCで書こうとしたら大変だよ。
728 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 16:41:59 ] ごめんなさい boostのソース見てて発狂しました
729 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 16:57:46 ] >>723 が"具体的な"例を持ってくるまで待とうじゃないか
730 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 17:01:18 ] まあ文法がひどいというのは納得。ただ機能面で同等なことしようと思ったらC++と大して変わらない言語になるんじゃない?コンパイラ任せの部分が増えると書くのが楽になっても機能面でのマイナスが多少はでるよね。 コンパイラより賢い人間がいるかぎりC++のような言語はなくならないんじゃないかな。
731 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:38:42 ] 言語仕様でなるべくスパゲッティにならないよう努力してもいいんでない? C++は悪い意味で好きなように書け過ぎると思うんだ。 Javaの多重継承できないとか Pythonのインデントみたいな試みは是非はともかく嫌いじゃない
732 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 00:58:32 ] C++は凡人のための言語じゃないと思うんだよね. 研究心のある人が使えばいいのさ. 大きな自由度を残しておく事で,そこから新しい可能性を見つける事ができるんだよ. Boostのライブラリとか見てるとすごく思うけど,C++はいろんな新しい考え方を生み出す実験台としての役割がすごく大きいと思う. 書いている人の好奇心を煽るとてもいい言語だと思うけどな. 実際にアプリケーションを書く言語として適しているかということとはまた別だけれどもね.
733 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 01:41:20 ] C++の開発動機に"Better C"がある以上、Cとは可能な限り互換性を 保たねばならず、従ってC時代由来のアナクロニズムは除去できない。 ifブロックを中括弧なしで書けないようには出来ないわけだ。 他の新しい言語と比べると酷い言語のように見えるけど、 実際のところ禿が掲げた理念を大前提として考えれば、 今のC++は可能な範囲で望み得る、かなり良いものだと思う。 そもそもC++は大規模オブジェクト指向言語の元祖であって、 新しいパラダイムを開拓しつつも互換性を重視する立場からは古い仕様を変えられない、 そう考えると今までのC++が何か大きな間違いを犯したとは思えない。 C++のこういう点が気に入らないなら素直にDでも使うべきなんだろうと思うよ。
734 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 03:09:53 ] >>733 C++を嫌って自由度を追いかけたら、DかLispに行き着くだろうな。 Dもネイティブコンパイラを持ってるようなLispも速度的には速いですから。
735 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 21:17:20 ] >>1 ってよりか、C++で書かれたソフトってやたら重くね? オブジェクト指向って重いの?
736 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 21:27:48 ] 何も考えないと重くなる。 でもC++自体は重くならずに済むよう努力したほう。 そうでなければC++が普及することは有り得なかったと禿は言っている。
737 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 22:23:18 ] C++が重いんじゃなくって、C++のフレームワークにクソ重いのが多いんでないの? MFCとかQtとか
738 名前:デフォルトの名無しさん [2007/04/03(火) 22:44:21 ] STLを使うと実行速度が10倍に?!
739 名前:デフォルトの名無しさん [2007/04/04(水) 00:20:31 ] Cで書けば、フリーウェアでソースも公開してて Win標準装備のコピーより何倍も早いfastcopyは さらに早くなるのか!? ソース見る限り俺は作った人に「すごいよ、あんたすごいよ」 って言いたくなるソースで、ま、結局のところ頭の良い人 はC++で何か作ろうとするとき頭の中にクラスの設計図が 自ずと浮かび上がってくるんだろうな。
740 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 00:38:41 ] C++でもATLでウインドウ制御すれば瞬発力があるソフトが書けるの。 MFCなどを使うと一呼吸動作が遅くなる。 だから言語の問題じゃない。
741 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 00:51:26 ] ちょっとしたデータ変換ツールを作ってみたら、CでもC++でも殆ど同じアセンブラコードになった。 C++の方がテンプレート関数のお蔭でソース自体は短いのだが。
742 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 08:24:20 ] >>741 禿もCがC++の最大の敵と言っているくらいだし、 Cと同じように書けばCと同じ機械語になるのは当然。
743 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 21:48:57 ] 一呼吸とか変なこといってんなよ
744 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 06:20:47 ] 何が変なのかさっぱり。 MFC擁護のバイトか何かですか?
745 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 07:56:19 ] 言葉が変なんだよ。きっと。
746 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 15:42:24 ] templateを使った時にコンパイラの吐くエラーがカオスにな
747 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 21:26:52 ] Cの方がトータルでみて生産性高いと感じる俺は まだまだC++を使いこなせていない
748 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 21:41:56 ] >>747 C++から入った身としては、そういうことがいえるほどCを使いこなせている人が居ることに驚く(強意表現だが) すくなくとも、普通に使ってる分には、C++ のほうが適当に作ってても修正とか聞くし、 真面目にやるときも設計の目処が立ちやすいし、少ないコードで楽に進められるし、名前問題含め使い勝っていいと思うのだが、 参考までに、どんな所がCの方が生産性が高いのか教えて欲しい。
749 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 22:15:57 ] 俺の感性に合うっていうのかな。 Cでゴリゴリ書いてると魂磨いてるって感じ。
750 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 23:02:56 ] たまにCを使うと、変数宣言がブロックの先頭でしかできないのが苦痛。 地味なところでは、for (int i = 0;とかbool型などがないのも嫌になる。 せめてC99を使いたい。
751 名前:747 mailto:sage [2007/04/11(水) 23:09:43 ] 誰だ勝手に答えているのはw >>748 自分の場合、某悪評スクリプト言語からCに入ったので 関数主体で構造化できるってだけで感動しているレベル。 グローバル変数メインでサブルーチンで直接値を操作するのが 当たり前だったもんで… とてもじゃないけどCを使いこなせているとすら言えない C++の(というかオブジェクト指向の)クラスとかインスタンスという概念は 面白いとは思うけどオブジェクト単位でデータと関数がまとまっているよりは 命名規則(型ではなく用途で)をしっかりつけたグローバルな変数と関数を 一元管理した方が把握しやすいっていうか楽に感じる。 オブジェクトで分けるよりはシーンで分けた方が直感的というか。 趣味プログラマとしてはメソッド使わなきゃ属性にアクセスできないみたいな データの隠避にも大した利点に感じない。 そんな間違いすることあるのか?って思ってしまう。 まぁスクリプト言語に浸りきった弊害なのと C++をひとにみせても恥ずかしくないレベルまで習得するのが面倒なだけやけど。 constとかstringとか楽なところだけ使いつつスクリプト時代のようにダラダラと 手続き型で書いている。 Cの方がってよりも手続き型の方がって話だ。すまんす
752 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 23:15:13 ] データの隠避は複数人での開発では特に重要 1人だとありがたみを感じないのも無理はないと思う
753 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 23:37:36 ] 一月前の俺と今の俺は他人
754 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 23:37:57 ] データ隠蔽とかはブロックごとにファイル分けて 構造体に突っ込むことでまだなんとかなるけど テンプレートのアルゴリズムはもうCではやる気が起きなくなるな。
755 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 08:45:57 ] >>751 それ、全部C++でもできることじゃん。 要は、「Cの方が高い」じゃなくて、「C++である必要が無い」だな。
756 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 09:11:09 ] まずnamespaceから
757 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 16:58:53 ] まずC風に軽く組んで、 「ここの機能まとめたら分かりやすくなるかも」見たいな感じで 徐々にOOP「風」に組み直していくやり方でいっぱいおっぱいですよ
758 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 19:34:38 ] 自分も早く再利用可能なクラスをいっぱい作って 実際のプログラムは部品をドッキングさせるだけで良いみたいな状態になりたい
759 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 20:42:41 ] 結構気合い入れて「俺ライブラリ」を作るんだけど、 なかなかうまくいかないねえ、こう、なんというか、 「近未来の自分にすんげーフィットする汎用性と機能のバランス」ってやつは。
760 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 02:42:16 ] 各種文字列クラスとの相互変換テンプレートだらけで 俺ライブラリは統一性が無い。文字コード含めてわけかわらんよ。 比較関数だけでも20種類はある。
761 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 02:53:25 ] 難しいとは思わないけど 無駄に複雑 馬鹿みたい
762 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 03:04:04 ] 馬鹿みたいというか 馬鹿が複雑に書いてるんだ でもビャーンのハゲは髪だと思う
763 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 03:38:18 ] 禿はインタブーで「わざと複雑にした」っつってる死ね
764 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 00:06:44 ] 頭の悪い奴には使いこなせない言語だよな、ホント。 でもこの「頭の悪い奴には使いこなせない」の意味を、頭の悪い奴は理解できない。 そして見当違いの方向に怒り出すw
765 名前:デフォルトの名無しさん [2007/04/30(月) 22:07:18 ] こないだ仕事でJava使わされたけど あまりの遅さと自由度の低さに愕然とした やっぱ自分ひとりで組むのならC++だな
766 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 22:29:37 ] Javaのgenericにはしょんぼりした記憶があるな C++的なものを求めるのが間違っているんだけどさ・・・
767 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 22:42:48 ] boostがやばすぎるぐらいに便利だからなぁ・・・ 逆にC++より簡単な言語ってないんじゃね?って思えてくる
768 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:35:05 ] boostって何がそんなに良いの? 導入すっかな
769 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 22:09:17 ] std::for_each(r.begin(), r.end(), f);がboost::for_each(r, f);と書けるようになったり、 std::bind1st. bind2ndより見た目わかりやすいbindが書けたり、正規表現ができたり。
770 名前:デフォルトの名無しさん [2007/05/03(木) 08:56:18 ] >>768 少なくとも言語マニアの素養がある椰子には boost::lambda, boost::function →関数型パラダイム boost::mpl, boost::preprocessor →メタプログラミング boost::spirit →構文解析 あたりは垂涎もの。使ってるとJavaとかC#ですら塵に思えてくる そんなの無くても不自由しねえよって人でも スマートポインタとかは確実に有用
771 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 10:23:39 ] lexical_castやpolymorphic_downcast、numeric_cast、noncopyableあたりも地味に便利
772 名前:768 mailto:sage [2007/05/03(木) 10:40:46 ] うむ ありがとう 何を言ってるのかさっぱりな漏れにはまだ早いことは良くわかった。 ようやっとSTL使い始めたばかり
773 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 18:47:17 ] コンパイル遅すぎなんだよ糞が
774 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 18:54:15 ] 何のための分割コンパイルだ、プリコンパイルヘッダだ
775 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 23:16:29 ] 速度なんてボチボチ、イラネな世界になってきたから Rubyとかで良いんでない
776 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 02:49:46 ] 最近は専門用語が増えすぎ。 あーぎゅめんとでぃぺんでんとねーむるっくあっぷ かりおすりーりかーりんぐてんぷれーと えんぷてぃーべーすおぷてぃまいぜーしょん えたーなるふぉーすぶりざーど
777 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 03:16:12 ] クトゥルーさげ
778 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 13:56:22 ] いあ いあ はすたあ!
779 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 07:50:12 ] 全部の機能を使うのはたいへん
780 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 18:43:40 ] C++のどこがBetterCなんだ むしろWorseCだ
781 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 19:20:44 ] ローカル変数宣言がブロックの先頭に縛られないこと 特にforなどで変数宣言できること inline関数 constで定数宣言できること 強力な型安全性の保障(ベターCとして使うならvoid*から他のポインタ型への暗黙の変換まで禁じられるのはきついが)
782 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 02:40:13 ] >>781 最後以外は C99 で十分だな。 改めて C99 と比べると、 - restrict - __VA_ARGS__ - stdint - 複合型リテラル - 要素指定の初期化 とか、いろいろ抜けてるので十分 WorseC と呼ぶに値する。
783 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 06:01:43 ] >>780 使う人間のレベルによっては、変わるかもしれないな。
784 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 06:16:32 ] 仕様としてC99が充分だとしても C99のコンパイラ自体がまだまだ普及してないというのが、一番の大問題。
785 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 06:27:22 ] gccにicc、Sunのccもc99に対応していて、これでも普及していないと言い張るとはDozerはこれだから…… つーか、M$儲というべきか?
786 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 06:36:47 ] で、「世間一般の人」の中で、そのDozerとやらの割合はどれほどですか?
787 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 06:39:16 ] 今はもう、理系の大学のプログラミング言語の課程ですら Windowsを使う方がずっと多いでしょ。 昔の人はSunとかで覚えたんだろうけど。
788 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 08:36:06 ] 世間一般の人はプログラミングなんてせんなぁ。
789 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 08:37:31 ] gccもiccもWindows版があることを知らないのでは?
790 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 08:42:39 ] で、そのMingw等で作られたアプリケーションの比率はどのくらい? もちろん、VBやdelphi等を除いた、C/C++の中での比較で良いけど。
791 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 08:47:36 ] >>788 「世間一般の人が使っているOS」をコンパイルするコンパイラや 「そのOS上で動くアプリケーション」をコンパイルするコンパイラは C99に対応してますか? 一般じゃない人(大学の教養課程は一般の人は通らないのですね)は、 betterCのコードをコンパイルする時に 「多数のアプリケーションが使っているC++コンパイラ」を避けて 「該当する環境ではかなりマイナーなC99コンパイラ」を使うべきというわけですね?
792 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 09:04:47 ] 俺は>>781 の中では、最後の型安全保障が一番重要だと思うのだけど
793 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 09:42:36 ] >>785 君が海胆糞erか犬糞erか知らんが、職業マは そんなもんだけで喰っていけるわけじゃない。
794 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 10:02:38 ] 媚びへつらいと責任転嫁で喰うのが一般的。
795 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 19:00:08 ] C99ってconstが定数になるの?
796 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 21:30:52 ] >>793 Windowsで、VisualStudio使ってiccでコンパイルしてますが何か。
797 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 05:53:46 ] お前が何をしていようが、誰も何も思うことなんて無いよ。どうでもいい存在だもの。
798 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 07:59:18 ] visual studioからgccとかicc使うような環境作れるんですか?
799 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 08:35:47 ] gccはともかく、iccはリンカがないからVisualStudioと連携させざるを得ない。 ついでに言えば、誰もやりたがらないだけでgccもVisualStudioから使える。 #つーか、まさかVisualStudioがコンパイラだと思ってないよね。
800 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 08:45:10 ] >>797 その割にはずいぶんとご執心で。
801 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 09:08:12 ] あれ、Win上のiccってプラグインだよね。 で、もしかして、コンパイラに対するアドオンじゃなくて完全に入れ替えちゃうわけ? gccが使えるってんなら、gccはその通りだろうけど。 つまり、インテリセンスとかのIDEのメリットって奴が活かせなくなっちゃうわけ? (だって文法変わるしpragmaやifdefだって変わってくるし) ていうか、必死にgccを主張して頑張ってる人は 「C99とC++のどちらか」といわれた場合にC99を選択するのかね。 俺は100%間違いなくC++の方を選ぶけど。 OSSなんかで移植性優先でC89ってのはいくらでも見つかるけど C99のメリットなんてどの程度あるのかね。 いや、頑張ってずっと「betterCとして使うなら、そんなことはC99でも出来るからC++は要らない」 と言ってるくらいだから、C++を避けてC99にする方がメリットがあると思ってるんだろうけどさ。 あ、どんなメリットがあるかなんて、別に書かなくていいよ。 「大多数の人にはC++(のbetterCな点)で充分」なことは判りきってるんだから。
802 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 09:15:59 ] いや、俺だって、「C99だったら楽なのに」と思うことはあるよ。 配列の要素数が定数じゃなくていい、なんてのは(std::vectorを使う)俺には必要ないけど 可変長構造体が公式に認められたこととか、 あと、<stdint.h>はあったら随分楽になるとは思う。 (もちろん、多くの非C99環境でも、<inttypes.h>があるから大抵は足りるけど 標準Cでは非公式だから、無い環境のことを考えて#ifdefを使った自前ヘッダを用意しなきゃいけない) でも、それでもC++のメリットに比べたら、C99のメリットなんて微々たるもの。 その上「C++が使える環境(処理系)」が「C99が使える環境(処理系)」よりずっと多いのだから 「C99でも出来るからC++は要らない」なんて、俺にはとても言えないね。
803 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 09:16:56 ] > 必死にgccを主張して頑張ってる人 > 頑張ってずっと「(略)C99でも出来るからC++は要らない」と言ってる 妄想乙
804 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 09:18:51 ] >>803 >>782
805 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 09:21:21 ] >>784 以降の人も、同一人物か同じ意見の人でしょ。 Windowsがどうのと言ってる人。
806 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 09:23:49 ] >>804 やっぱり妄想乙。行間に何か見えてしまう人なんだろうか。
807 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 09:26:40 ] 煽っている人の方は単発でピンポイントで突っ込んでるだけなのに、 一人でそれを真に受けて顔真っ赤にして反論しちゃってるんだろうな。
808 名前:デフォルトの名無しさん [2007/06/21(木) 09:30:24 ] じゃああげようよ
809 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 09:32:40 ] いや、俺には>>785 みたいな負け惜しみというか捨て台詞というのが笑えるんですけど。 現実をあえて無視して、必死になってとりつくろってるし。
810 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 09:35:47 ] C99の、普及していないという最大の欠点を指摘されてよほど悲しかったのか 何故かWindows批判までして、でもWindowsでも使えると反論してみたり。
811 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 09:37:29 ] それが信者というもの
812 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 10:00:08 ] >>806 というより、誰が誰なのか決め打ちでもの言ってる奴はどれも妄想にしか見えん。
813 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 03:35:32 ] C99 マクロ (sourceforge.net/projects/chaos-pp ) vs C++98 template (Boost.MPL) この戦いは壮絶なものになる もはや何言語なのか分からない
814 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 20:38:16 ] >>813 ライブラリ名の時点ですでにカオスなんだが・・・
815 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 23:48:47 ] ドキュメントのビルドの仕方が分からなくて手つけてないぜ…
816 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 21:53:56 ] 難しすぎる。 JAVAの方が生産性高いらしい。
817 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 12:40:34 ] なぁ、みんなはwarp.povusers.org/FunctionParser/fparser28.zip にあるFunctionParserのソースを見ただけで、「ここが、こうなって、ああなって」 みたいに、読み解きほぐせるの? 俺全然読みとけねぇ。
818 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 22:42:26 ] 再帰降下型パーサだな。 実行部分はスタックマシン。 これはもうパターンみたいなもんで、自分で一回作ったことがあればほぼおんなじ構造だから大体わかる。
819 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 15:19:01 ] >>816 1行目はただの感想だろうからいいが、 らしいなんて憶測でモノを語るなよ。
820 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 00:10:55 ] 「らしい」は憶測ではなく伝聞を表す表現ではないか、というのが一つと、 憶測がまずいのは、それが事実のように書かれた場合であって、事実を語っているわけではないことが 明らかに文面からわかる場合は、別に語ったっていいんじゃないか、ってのが一つ。
821 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:02:56 ] 横から失礼。 「らしい」は伝聞じゃなくて推量を表す表現だよ。 推量の基になった外部情報が伝聞という事はあり得るけれども。
822 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:31:48 ] 憶測でも自分の偏見でもここで語る分には何の遠慮も考慮もいらないと思う。 ここは「そういう場」であるんじゃないかな。
823 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:40:41 ] つまり、ぬるぽOKという事ですね?
824 名前:816 mailto:sage [2007/09/01(土) 06:13:18 ] ちょwナニこの超展開 流石マ板 書いたときの意図は伝聞らしい
825 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 06:44:31 ] >>824 >JAVAの方が生産性高いらしい。 伝聞の助動詞は「そうだ」だよ。 →JAVAの方が生産性高いそうだ。 >書いたときの意図は伝聞らしい 自分自身の意図を推量する事は無いんだから「らしい」は使えないよ。
826 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 07:02:24 ] んなこたーない。使えるらしい。
827 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 08:32:51 ] いやらしい
828 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 10:03:02 ] 推量でも伝聞でもいいが、理由も続けないと有益な議論にならないじゃん。 2chでそんなことを期待するほうがあほですかそうですか。
829 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 10:41:22 ] 自分が何もしないのに場が勝手に有益になるのを期待するのは確かにあほだね。 でもそれって2chに限らないよ。
830 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 11:05:23 ] 一般論としてJAVAの方が習得が容易だといわれているんだから JAVAの方が生産性が高いって話 まぁ後からでた言語の方が生産性高いのは当然だろうけど 統計取ったのか?とか突っ込まれる悪寒
831 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 18:25:34 ] >>824 >流石マ板 オイ
832 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 08:52:09 ] ごめん マ、ム、は回転させると同じだからよく間違えるんだ。 母の胎内のようだ
833 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 09:49:20 ] >>830 > 統計 「"言語名" 人材募集」でググったのが統計になるらしいぞ。 2ちゃんで見たから間違いない。
834 名前:デフォルトの名無しさん [2007/09/03(月) 10:44:30 ] C++は難しくない。ややこしくて複雑なだけ。 その複雑さを理解してだけで得意になってる馬鹿もいるし
835 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 13:00:39 ] 刃物は危なくない。切れたり刺さったりするだけ。
836 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 14:47:41 ] *気を付ければ*
837 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 15:00:22 ] もちろん安全装置だっていろいろあります。
838 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 10:30:13 ] C++何年も使ってたのに1年ブランクあるとと書けないな Cならそんなことないのに
839 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 09:26:36 ] C++に不足してるのは名前付き引数だな。 オプション引数の順番いちいち覚えなきゃいけないとか、 テンプレート持ってる割に古臭い。 boostのいびつさと言ったら。
840 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 09:52:53 ] それね、検討されたらしいんだ。 でも、新しいパラダイムが来るわけでもより型安全になるわけでもないとか、 関数を引数名の分だけ呼ぶ側と呼ばれる側の束縛が強くなるとか そもそもそれが欲しくなるほど引数が多いなんて下手な証とか、 反対意見が多くて却下されたという過去があるんだ。 参照:D&E 6.5.1 キーワード引数
841 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 10:29:08 ] その割にはC99にはあったような気が……
842 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 13:46:14 ] 名前付き初期化子のこと?配列と構造体限定でよければ確かにある。
843 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 14:56:14 ] ↑アホ
844 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 17:12:58 ] ↑ニンニク
845 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:22:34 ] 名前付き引数? 仮引数に変数名つけるじゃん
846 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:24:54 ] と思ったら順番関係なくなるのか それはいいな
847 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 00:28:50 ] Python使ってるとキーワード引数の便利さはよくわかる。 C++でもクラステンプレートのPolicyとかでは出来るのにね。
848 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 05:52:03 ] boost.paramいやなんでもない
849 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 23:09:47 ] boostってまだ標準ちゃうしなぁ
850 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 09:53:49 ] テンプレートのチューリング完全性が意図したものではなく のちに発見されたものだというのがC++の複雑さを如実にあらわしてる その複雑さの果ても解明されようとしているが C++0xが新たなカオスを持ち込んでくれる 好き物プログラマーとしてはたまらないね
851 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 11:34:37 ] templateでエラーの嵐に襲われて思いついたsage I am the bone of my type-parameter. 体は型で出来ている Class is my body, and tyepname is my blood. 血潮はclassで 心はtypename I have created over a thousand compile-errors. 幾たびのコンパイルエラーを超えて不敗 Unaware of export. ただ一度のexportはなく Nor aware of inline. ただ一度のinlineもなし Withstood pain to create many templates. プログラマはここに孤り waiting for compiler's error エラーを前にキーを叩く I have no regrets. This is the only template. ならば我がtemplateに意味は不要ず My whole life was "unlimited type parameters" この体は無限の型で出来ていた いくぞコンパイラ――――エラーメッセージの貯蔵は十分か
852 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 09:25:02 ] タイプミスマッチや型候補なしのエラーの嵐は、conceptが導入されれば緩和される。
853 名前:デフォルトの名無しさん [2008/01/21(月) 20:41:39 ]
854 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:38:18 ] C++を難解にしてるのは、めったに使わない機能や、 よく知らずに使うと危険な機能がいっぱいあるから。 それらの機能をなくしてしまえば、いい言語になるのじゃない? ・・・あっ、それがJavaか・・・
855 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:46:22 ] Java厨こんなところろにまで出張乙
856 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 00:15:54 ] C++を難解にしてるのは、めったに使わない機能や、 よく知らずに使うと危険な機能がいっぱいあるから。 それらの機能をなくしてしまえば、いい言語になるのじゃない? ・・・あっ、それがC#か・・・
857 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 00:18:18 ] C#厨こんなところにまで出張乙w
858 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 00:59:50 ] C++を難解にしてるのは、めったに使わない機能や、 よく知らずに使うと危険な機能がいっぱいあるから。 それらの機能をなくしてしまえば、いい言語になるのじゃない? ・・・あっ、それがCか・・・
859 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 01:04:00 ] C厨こんなところにまで出張乙w
860 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 01:07:05 ] C++を難解にしてるのは、めったに使わない機能や、 よく知らずに使うと危険な機能がいっぱいあるから。 それらの機能をなくしてしまえば、いい言語になるのじゃない? ・・・あっ、それがDか・・・
861 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 01:08:44 ] D厨こんなところにまで出張乙w
862 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 03:43:35 ] 2chを難解にしてるのは、めったに使わない機能や、 よく知らずに使うと危険な機能がいっぱいあるから。 それらの機能をなくしてしまえば、いい言語になるのじゃない? ・・・あっ、それが1chか・・・
863 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 03:45:14 ] ニコ厨こんなところにまで出張乙w
864 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 08:57:22 ] もはやなにがなにやら
865 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 10:27:51 ] >>860 Dは逆だろw
866 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 16:49:48 ] >>860 そういう言語を目指してたはずのJAVAやC#は同じ道を歩んでるしな よほどなオプソ開発者でもない限り、大幅仕様変更や削減は難しいからねぇ・・・
867 名前:毛の生えたブリーフ mailto:sage [2008/01/26(土) 19:48:37 ] オマンコを難解にしてるのは、めったに使わない大陰唇や、 よく知らずに使うと危険なクリトリスがいっぱいあるから。 それらの機能をなくしてしまえば、いいオマンコになるのじゃない? ・・・あっ、それがアヌスか・・・
868 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:02:03 ] アヌス厨こんなところにまで出張乙w
869 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 16:22:19 ] なんなんだ
870 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 16:26:48 ] 純粋に言語としては C++が際立ってJavaやC#より難しいとは もう言えないんじゃないか DにいたってはもうC++より難しいのではw
871 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 21:39:17 ] JavaやC#は、大規模な標準ライブラリが付属してるから簡単に感じるんだな C++だと、標準ライブラリの提供する機能が少なすぎる 設計は美しいんだがな。STLとか。
872 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 00:17:38 ] C++もBoostが(ゆっくりとだけど) よその言語が持っているようなものを(ようやく)用意し始めている。 スレッドとかシリアライぜーションとかネットワークとか。 XML読み書きも欲しいな。
873 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 09:42:08 ] domやsaxならいっぱいあるだろ
874 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 21:06:18 ] 拡張可能な暗号化・ハッシュ・圧縮インフラが標準で欲しいな
875 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 21:10:37 ] C++のめったに使わない機能ってなんだろう virtual継承とかprotected継承ぐらい?
876 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:22:18 ] export asm template template valarray ダイグラフ
877 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 04:09:45 ] asmは結構使ってるなぁ 俺のレベルって低いんだなw
878 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 04:23:55 ] asmはCPUをハードウェアレベルでいじりたい時に使うよな
879 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 09:22:13 ] >>874 C++にstream入出力ライブラリは標準でないの?
880 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:09:50 ] VC++なんで__asmです。
881 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 20:26:41 ] template template は使えない期間が長過ぎたんで道具箱に入ってなかった でも明日から使うよ
882 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:08:56 ] template templateは結構枯れている印象
883 名前:デフォルトの名無しさん [2008/02/18(月) 18:59:10 ] Cとの互換性だのメモリ管理だのは実のところ難しくない。Objective-Cを見よ。 俺から見たC++の難しいところ。 (1)例外安全 例外処理はどんな言語でも難しいが、GCもfinallyも無いから気を使う場面が多くなる。 (2)オーバーロードと関数template 暗黙の型変換が必要な命令型言語の世界に型推論を持ち込んだら複雑になって当たり前。 (3)iostreamの細かいところ ああいうstatefulで多彩なエラー処理が必要なクラスライブラリは、 規格をごりごり書くより参照実装を出す方が実際的だと思う。
884 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 19:11:46 ] >>874 それらの機能は時代とともに変化するし、ターゲットによって最適な手段が異なるので C++のように幅広く利用される物に標準として搭載するのはいかがなものか、と思う。
885 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:29:36 ] ハッシュは採用されるだろ
886 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:14:35 ] >>874 が言ってるのはたぶんMD5とかSHA-1のような暗号的ハッシュ関数のことだと思う。
887 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:23:28 ] ライブラリ化するのはポリシークラスや関数オブジェクトをパラメータ化すれば容易いし、 拡張も容易だろうけど、時代の趨勢に標準が追いつかなそうだな
888 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:37:02 ] C++みたいに組み込みからサーバまで使われるようなものに、 ハッシュや暗号化のようなコスト、耐久性にいろいろとバラエティの取れるものを標準搭載してもなぁ、って気はする。
889 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:43:23 ] 個人的には、フリー以上ホスト未満の分類をもう1つか2つ増やしてもいいと思う。
890 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:07:14 ] CRC、zlibくらいはあってもいいんじゃないかという気は
891 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:08:53 ] ライブラリを独立した規格にすればいいのにと思う。
892 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:13:29 ] というかそういう声が多かったからBoostができたんじゃないかと
893 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:40:18 ] そしてTR1へ
894 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 08:44:52 ] 言語の細かいとこにあまり神経使いたくないね。 設計とかテストとか神経を使う重要なとこは他に一杯あるんだから。 重要でないが細かいとこに注意を向けるあまり肝心のことが抜けてるってのは ありすぎるほどある。 思い当たるだろ。 たぶん、個人の注意力の総量は一定なんだろう。 あるとこに注意を向ければ別のとこがおろそかになる。 それだったら重要度の高い部分に優先的に注意を向けたほうがいい。 しかし C++ だとこれが出来にくい。 言語に落とし穴が多いからいやでも注意しなければならない。
895 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:16:27 ] >>894 抽象的過ぎてわからん
896 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:34:24 ] >>894 落とし穴というのは適切な比喩でないな。道路脇の崖とでもいうべき。 道に慣れてる人間にとっては危険でもなんでもない。
897 名前:デフォルトの名無しさん [2008/03/09(日) 00:24:54 ] 初心者的な疑問なんだけど、 クラスとかからメンバを呼び出すときに .を使ったり->を使ったりするのって、具体的にどんな理由で2種類あるんでしょうか? ->を使うところをすべて.で済ますようなことをすると、ソース的にありえないところが出てきたりするのですか?
898 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 00:43:26 ] class foo {public: void memFunc();}があるとして、foo * bar = new fooしたときに bar->memFunc()する代わりに(*bar).memFunc()することに何の躊躇いもないならば、 どうぞご自由にアロー演算子を使うことをおやめくださいませ。
899 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 00:45:08 ] struct A foo; foo.val1 = 1; strct B * bar; bar->val2 = 2; // 初期化していないポインタへの演算ざけどそこらへんは気にせずに・・・
900 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 01:41:50 ] >>897 ポインタかそうでないか
901 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 01:59:41 ] そうじゃなくて、なぜ実体/参照は.で、ポインタは->なのか、ポインタにも.でアクセスできる文法にしなかった理由は何なのか、ということじゃないかな。
902 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:13:02 ] それはつまり class Foo = new Foo(); という文法を認めろ、ということか・・・
903 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:14:40 ] 何書いてんだ俺w酔っ払いすぎだwww foo f = new foo(); という文法を認めろ、ということか・・・ に訂正_| ̄|○
904 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:19:06 ] T1 p;のとき *p がT2&を返すような実装をしてると p.aの意味が不明になるでわかるかな
905 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:23:12 ] >>904 演算子オーバーロードできるC++で破綻するのはわかるんだけど、.演算子と->演算子はCからあるよね。
906 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:29:07 ] Dでは左辺がポインタでもそうでなくても常に . 択一だったはず。 文法上はそれでも成り立つのはわかる。 でもなんでCでは区別するのかという答えは出てこないけどな。
907 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:47:07 ] 演算子をそう定義したから、としか言えないのかな。 ドット演算子はポインタでない変数のメンバを参照するもの、という定義があって、 これをポインタ変数に適用しようとすると、dereference operatorの機能も入るから、 演算子を同一としてはいけない、と。 ドット演算子を「変数のメンバを参照するもの」と定義すれば、ポインタでもそれ以外でも 使えるようになるけど、Cではそれをしなかった。 そう考えるとC++のoperator overloadingって結構変態的な機能なんだね。
908 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:57:33 ] そうだなCでだと、p.a.a と p.a の区別をどうするか って言えばわかるかな
909 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:08:14 ] あんまり自信ないけど 要は誤って別の型にキャスト->ウヒャ を嫌ったんじゃないかと言う気がする
910 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:52:27 ] 当時のコンピュータとコンパイラの性能とあわせて コスト的に違うものだという意識が働いてたんじゃないのかね。 a = aa.bb.cc.dd と a = aa->bb->cc->dd じゃ 生成されるコードが全然違うからね。 と思ったが、配列とポインタの扱いを考えると違うか。 a->bが(*a).bという記法の省略であるというのはどこでも説明されているけど。
911 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 09:06:35 ] つーかメンバのポインタだけ -> なんて記号使っておきながら なんで他のポインタはアスタリスクだらけなんだろうか
912 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 22:59:15 ] >>910 古い本には「ポインタを何回たぐる」といった表現が頻繁に出てきて、 間接アドレッシングのコストが強く意識されていた様子が読み取れる。 だから.と->でのコストの違いは大きな要因だったと思うよ。 ましてstructやunionは入れ子にしてaa.bb.cc.ddみたいに アクセスするのが前提っぽい設計だし。
913 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 09:26:47 ] Cの基本は値渡し。 構造体と配列は値渡しができないのでポインタ渡し。 そこで、構造体と配列については簡易にアクセスできる演算子を作った。 とか言ってみる。
914 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 10:48:42 ] >構造体と配列は値渡しができないのでポインタ渡し。 ???
915 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 13:09:45 ] >>914 配列は値渡しできないだろ。 K&R時代は構造体も値渡しできなかったよ。
916 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:56:14 ] いや、配列はわかってるよ。構造体もできない時代があったのか・・・失礼。 VBでbyvalで渡せなくて「なんだこの糞言語は!」って思ったこともあったなぁ・・・
917 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 19:00:56 ] 正確には「配列の先頭アドレスを値渡し」だな 配列の中身は参照渡しに見えるけどな
918 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:07:31 ] むしろ、Cは全てにおいて値を渡す その値は変数の中身だったり(変数や配列を参照する)アドレスだったりする と考えるのが正確ではないか
919 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 09:34:06 ] >>918 その程度のことをもっともらしく語るなw 構造体、配列はその中身を渡したくても渡せなかった。 本当は中身を渡したくても、不本意ながらアドレスを渡すしかなかった。 だから[]や->を作ったと言うことでしょ。
920 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 09:52:05 ] その意味では、「全てにおいて値を渡す」ってのは低レベルの言語では極当たり前の話だよね。 プロセッサにおいて、何がしかの値以外のものを渡すって概念がないんだから。
921 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:53:43 ] でもこの基本中の基本が理解できなくて、 ポインタを覚えようとしている初心者は発狂する 解説書が悪いんだが
922 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 21:03:44 ] typedef class foo{ ..... }bar; bar *ptr; ptr=new bar(); (*ptr).some_member=1; (*ptr).some_methode(); とかしても、正常にコンパイル出来て走るのに 型宣言の時 ptr -> bar; という書式で宣言できないのは、もしかするとちょっと問題かも知れませんね。型 変数という宣言時の並びを遵守してないという文句は <-も 認めて bar <- ptr; というようにするわけです。 そうすれば、ポインタは2通りの表記法(* ->)が使えるということに なって表記上の柔軟性が増加するわけです。*表現は算術演算の*と まぎわらしい場合があって多用されるとウザい場合が確かにありますね。
923 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 00:12:58 ] >>922 ->の意味わかってる?w
924 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 00:32:29 ] 昔、Cマガだったか、operator < とoperator -を定義してop<-methodを実装するよーな 話があったような・・・
925 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 00:33:07 ] =>と->があって+>が無いのはおかしい と一瞬思ったがそもそも=>なんて無かった
926 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 00:37:30 ] op>-.-<qo;
927 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 00:38:23 ] ・(中黒)やx(エックス)ってオペラントにはならんよな 内積と外積をですね。あと|A|とか
928 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 00:39:20 ] そもそも中黒はASCIIに無いだろ
929 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 01:39:56 ] C/C++で使われない記号ってある? キーボードをざっと見渡して$と@はソース上には出てこないかなと思ったけど・・・
930 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 01:50:14 ] -> =|> ===||> だんだん貫通力が上がっていくぞ!
931 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 02:00:33 ] >>929 @は使う
932 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 02:02:06 ] $もつかえるよ
933 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 06:32:21 ] >>929 「`」はない
934 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:15:53 ] >>894 ポリモーフィズムが実行されるために、オーバーライドする関数にはvirtualをつけるべき オブジェクトスライシングが起こるからスーパークラスの変数にサブクラスの変数を入れないようにすべき 例外を投げる時はポインタではなく値で投げるべき、受ける時はオブジェクトスライシングしないように参照で受けるべき メソッドの実引数の値を変更したくない時で、組み込み型の場合は値渡しで、そうでない場合はconstリファレンスで定義すべき、 メソッドの実引数の値をメソッド内部で変更したい時で、組み込み型の場合はリファレンスで、そうでない場合はアドレス渡しで定義すべき… 意識的にそうしないという選択ができるという利点はあるのかもしれないけど… こういうことに気を使いながら、処理内容の方に注意の力点を置いて実装…自分にはムリだ('A`)
935 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:47:53 ] >>934 >メソッドの実引数の値をメソッド内部で変更したい時で、組み込み型の場合はリファレンスで、そうでない場合はアドレス渡しで定義すべき… 逆じゃないのか?
936 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 13:16:28 ] >>935 逆でした('A`)
937 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 13:20:14 ] C++の参照渡しキモ杉
938 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 13:21:55 ] >>935-936 その区別、意味あんの? 呼び出し元のオブジェクトいじってほしいときは全部参照渡しでよくね?
939 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 13:39:59 ] > ポリモーフィズムが実行されるために、オーバーライドする関数にはvirtualをつけるべき C#もそうじゃない。Javaはそうじゃないけど。 > オブジェクトスライシングが起こるからスーパークラスの変数にサブクラスの変数を入れないようにすべき 基底クラスのコピーコンストラクタ・代入演算子はprivateにしろ。 これはこれで意識しないといけないことだけどさ。 >例外を投げる時はポインタではなく値で投げるべき、受ける時はオブジェクトスライシングしないように参照で受けるべき 受けるほうはともかく、投げるほうに意識する必要あるか?
940 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 14:01:07 ] ポインタで例外を投げるってのは、 throw new Exception(hoge) って事だから
941 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 16:01:24 ] うん。何も考えなかったら、throw Exceptionって書くだろ。 Java/C#のくせでついうっかりってならともかく。
942 名前:934 mailto:sage [2008/03/15(土) 22:02:44 ] 元ネタは詳説C++です。 >>938 まず、コスト的にはリファレンスでもポインタでもそれほど変わらないということがあって、 組み込み型の場合、メソッド内で変更可の場合は引数をポインタとすることで、 変更不可の場合の呼び出し f(a) 変更可の場合の呼び出し f(&a) となり、呼び出している箇所を見ることでf()が引数の内容を変更するかどうかのヒントを得ることができる というのがその理由です。まあ好みの問題かもしれません。 後関係ないけれどNULLを渡す可能性がある場合はリファレンスではなくポインタにしなければならない…ってのも考慮しなきゃいけないですね… >>939 コピーコンストラクタを作るのが面倒で、じゃあポインタ渡しすればいいじゃんと思ったりとか…? 自分はJava一辺倒なので、C++のプロジェクトに放り込まれたら慣れるまでは落とし穴にはまりまくりそうです。慣れてもどれか1つ忘れてポカしそう… C++でバリバリコード書きまくるというのには憧れるんですが…。
943 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 22:50:44 ] >>942 コピーコンストラクタを設けるかどうかは、どちらかというと設計の問題。 一般的に継承してポリモーフィックに扱うクラスはコピー不可とすることが多い。 あった、ちょうどこういう話。 www.ogis-ri.co.jp/otc/hiroba/technical/CppDesignNote/ Clonableにするかどうかというのが近いといえば近いのかな。 Javaはあまりやったことないけど。
944 名前:デフォルトの名無しさん [2008/04/03(木) 18:43:11 ] 顧客より保身のほうが大事なヤツなんていねーよ 馬鹿じゃねーのwwww
945 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 20:16:55 ] この世に馬鹿がいることがわかってるなら、「いねー」なんて口が裂けても言えないはずだが。
946 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:02:23 ] >>945 ヒント:嫌味
947 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:06:03 ] 社会保険事務所とかに行くとそんな感じの人が一杯いるよ! ><