文法面での機能拡張しすぎ。
C++の構文解析とか、もうワケワカメ。
マイクロソフト拡張大杉。
gcnew とか使うぐらいなら素直に Java でも C# でもつかえ!!!
つ C++ Builder
標準と非標準の区別もつかない池沼か
確かにC++から離れた方がいいな
__LINE__ とか __FILE __ とか __FUNCTION__ はMS仕様かい?
>【肥大化】ユーザー を見捨てたヤシ【複雑化】
これって何てM$?
classname hoge;
てやったときに静的インスタンスが作られるってのがすごく扱いづらい。
JAVAみたいにみんなポインタ扱い、関数の引数は参照渡しでいいのに。
× C++ を見捨てた
○ C++ に挫折した
そもそも全てのクラスの基底になるクラスが存在していないのがおかしい
throw で何でも投げられて catch で何でも補足できるのもヤメレ。
void f() throw() が文法上定義されているのにコンパイラ側が未実装ってどういうことやねん!!!
うちの会社はなぜ C++ なんかつかっているのだ。
DirectX つかうなら C# でいいじゃんよ
過去の資産が問題ならDLL化すればいいじゃないのよ。
>>6 そらそうよ
ていうか静的結合って時点でC++はオブジェクト指向じゃないし。
>>12 逆だろ。
次の環境とか言語が発生したら、C丼資産即氏だろうが。
C丼禁止
C++でさ
class A {..};
class B: public A {..}
て宣言して B の静的オブジェクトを作ったとき、
B b()
これってちゃんとポリフォリズム動作するの?
動作するよ。常考。
17 :
デフォルトの名無しさん:2008/01/29(火) 11:05:50
catch (例外の最上位クラス e)
てやってクラスツリー末端の静的例外オブジェクトを投げても、ちゃんとキャッチしてくれるのか
そういう場合は、
catch (...)
と書く。常考。
>ちゃんとキャッチしてくれるのか
yes.
なんだ、C++最強。
何一人で会話してるの?
( ^ω^)今日もC++使うお
>>17-18 まあそういうのは限定的な状況でしかやるべきじゃないけどな。
次のc++だとまたあたらしい文法ふえるみたい。どこまで複雑にすればきがすむんだ?
MS拡張がクソってことだろ
正直、ここまでくるともう失敗作としか言いようがない気がする。
いったん破棄して全てを無に戻すんだ!
いや、もっと突き進んで門を狭くしてくれ。馬鹿が入って来られないように。
俺も、こんなんじゃまだまだ生温いから、もっとガンガンに突き進んで欲しい
一つのファイルをコンパイルするのに最新マシンで 1 時間以上かかるくらい
じゃないと C++ の到達点としては不十分だな
そして、一般人が付いてこられなくなって、言語そのものが廃れます様に
( -人-).。oO(ナムナム...)
C++ の仕様はまだまだ不十分だろ
世の中にあるプログラミング言語の機能を全て盛り込んで、
全てのアルゴリズムを標準ライブラリとして規格に入れて、
仕様書の厚みがブリタニカを超えて、コンパイラ作成者が
実装を諦めるくらいじゃないといかん
C++ は現在・過去・未来に於ける全ての言語を超越して
唯一無二の輝かしき超言語として地上に君臨し、プロ・アマ
を問わず全てのプログラマがその恩恵に感謝すべきだ
とりあえずGUIとCOMとブラウザと動画音声コデックぐらいは
言語仕様として欲しい
俺が使っている C++ とお前が使っている C++ は全然別物だな
というくらいの仕様の広がりは欲しいな。
C++ は単一にして全てを包含する、神の言葉を記す為の言語だ。
boost::lambdaを使ってるとC++のコードに見えなくなってくる。
>>24 複雑性を認識出来るうちはまだまだなんだって。
本当に複雑な物は、それが複雑なのかどうかすら 分 か ら な い 。
言語仕様にテトリスとマインスイーパーが入るのはいつかな。
昔のgccは
#pragma
って書くとcppがダンジョンゲームを立ち上げたんだぜ、豆知識な
>>37 OOPを正しく理解していたらC>>>C++になるわけがないのだが。
OOP は言語に依存しないからな
他人と一緒にC++を使う難しさはよくわかるんだけど、
自分一人で使う場合、本人がまともに勉強してさえいれば、C++の複雑さの殆どは
長所として機能すると思う。
コンパイルに時間が掛かるのが好きな人ならそうだろうね
C++ は一人で使っていても面白くないよ
>>41 そりゃー、お前はヘッダに全部書くからそうなるかもしれないけどさ。
>>43 C++の旨味ってヘッダに殆ど書ける所だろ。
テンプレートライブラリが典型。
典型というかそれだけだな。
あとの場合でやるのは、コンパイルに時間が掛かるのが好きな人or無能。
むしろC++は一人向けだろ。フリーソフトなんてみんなC++なわけで。
企業でチーム開発はJavaとかしょ
てか10年以上C++やってる俺にとっては肥大化どころか機能不足に感じるよ。
使えるoperator記号とかもっと増やしてほしい
>>43 もしかしてC++のコンパイルが遅いのに気付いてないのか?
羨ましいな感覚の持ち主だな。
なにがどれくらい遅いと言ってるの?
コンパイル速度が超遅い
>>46 一人じゃ優越感に浸れないじゃん。個人で勝手にアプリ作ってるのに
わざわざC++使ってる俺ってこんなに凄いぜだけじゃ単なる自己満足。
>>45 >典型というかそれだけだな。
C++ユーザの心の支えを軽々しくそれだけとか言うな。
むしろそれこそが全てだ。それ以外に利点など無い。
>>50 C++で優越感に浸りたいって・・・おまえ向いてないよ・・
>>49 いやだから超遅いって・・なにがどうなのよ
(なにが):コンパイル速度が
(どうなのよ):超遅い
質問が悪い。
くだらね
これは仕方が無い
>>52 他にわざわざC++を持ち出す理由なんて無いだろ。向きは典型的だよ。
ANSI C++ を完璧にサポートしてるコンパイラって何?
MSVC++ は
void hoge() throw(std::bad_alloc) {...}
ていう例外指定が未実装だからダメだし。
>>47 それは君が「でっかいプロジェクト」を強く想像するあまり、これが個人のプログラミングの話だってのを
失念してるからでは。
個人作業なら、その辺はまともにやればかなりスマートになるよ。
俺が想定したのは、俺なりの「普通の個人のプログラム」・・・具体的には、10万行未満の少ないコード量で、
マシン性能がまぁ普通で、書き手が「無能ではない」ケース。
このケースで5秒以上かかるコンパイルなんて滅多に起こらない。
まぁ、個人の感覚に結構差があるのは確かで、この5秒に対してそこまで皮肉めいた羨ましさを示すのなら、
そこで話は物別れになってしまうんだけれども、俺的にはその5秒は、腕でも伸ばして身体をほぐすのに丁度良いんだ。
コードを書くのにオープンソースのライブラリに手を入れて使うのは想定外
なんだろうな。気分が乗ってコーディングしている時にも一々コンパイラを
走らせる度に強制的に休憩を取らされるのを鬱陶しいと思った事は無いのかな。
羨ましいというか珍しい感覚の持ち主だよ。C++のコンパイルが遅いという
過去繰り返し叫ばれている客観的事実を認めたがらない人間は初めて見た。
10万行が5秒で終わるかどうかは週末にでも計測しておく。
>コードを書くのにオープンソースのライブラリに手を入れて使うのは想定外なんだろうな。
>10万行が5秒で終わるかどうかは週末にでも計測しておく。
C++とは無関係だろ。常考。
ま、C++のコンパイルは劇遅だが。
うちの会社は、なぜかライブラリを dll 化したり lib かしたりしません。
プロジェクトには大量のライブラリ用 hとcppが登録されており、リビルドする時は
強制的にコーヒー休憩です。
>>63 何を聞きたいのかkwsk。
前文なら、10万行のオプソなら、どの言語でもおせーよ、だし。
後文なら、C++ってクラス毎にヘッダーがあってあらゆるcppファイルで展開されるから、
プログラムが短いのに何万行もコンパイルされてるー、みたいになるし、
文法が複雑だから、コンパイラの構文解析が手間取るんじゃね?
まあスクリプト厨が増えた現代ではC++できると優越感になるのかもな。
昔はできてあたりまえだったのになあ
>>64 dll, lib, so, sl, a, dylib等にしないものをライブラリとは言わないのでは?
あと、まさかdependency checkもしてないとか言わないよね。
dependency check ってなに?
ビルド時においては、コンパイル対象ファイルが依存するファイルの更新状態を確認し、不要なコンパイルを省略すること。
そういうのはしてないよという話に見えるが…
>>61 > 一々コンパイラを走らせる度に
> 10万行が5秒で終わるかどうかは週末にでも計測しておく。
この2つが同時に出てくるということは、明らかに誤読してるか、あるいは君のコーディングは
何かを変更するたびに一々そのプログラムの全行がコンパイルし直される
問題外な構造だってことだな。
>>71 他の人が誤読してるのかなと思ったら、その周囲のレスを
もう一度注意深く読み返してみると良いよ。レスは慎重に。
10万行は2,3分はかかるねえ。普通はある程度コンパイルする単位を
プロジェクトとして分けるね。
分割するかどうかは別の文脈で出て来た話なんだけどね。
一つのレスの中で複数の文脈が出てくると混乱する人がいるみたいだ。
10万行のコンパイル時間の話は、他の言語に比べてC++のコンパイル
時間が劇的に遅いという議論で出て来ている事だから、分割するしない
の議論とは独立した話なんだけどね。他の言語だって分割コンパイル
すればもっと速くコンパイルが終わる訳だから。
>>72 いや、「自分一人の裁量で好きに書かれた全10万行程度のプログラム」であれば、
まともに書けていればそう滅多に全体をコンパイルすることなんて起きないから、
C++のコンパイルの遅さをモロに味わうことなんて滅多に無い、と言っているのに、
なんで「何かするたびに一々」という言い方で「10万行のC++コードをコンパイルするのにかかる時間」
について語るんだろう、と思って。
それに、開発環境2つ起動させといて、片方が長めのコンパイルしてる間は他方で作業を続行するとか、
それくらいは普通に工夫するのでは。
>>75 なんでかと言えば、そういう話をしている訳じゃないからだよ。
流れが見えてないのに無理矢理レスする神経が分からん。
そりゃ他の言語はその分のしわ寄せが、実行時に遅いってことで出てくる
わけだからね。
てか、他のコンパイル言語?って何のこと言ってんの。Delphi?
結局まだC++のコンパイルが遅いという事実を直視出来ない奴はいるのか?
どうしたの?仕事つらいの?
いや、光を見つけられない人が居るのが心配なだけ。
コンパイルも実行速度も速いのがあればいいんだけどね
>>80 へんな光が見えちゃう病気でつか。早く治るといいね。
>>81 C++が特段実行速度が速いという訳ではないからね
こんな簡単な事実からすら目を逸らそうと必死になるなんて、毎日大変だろうな…
C++以外の言語は遅すぎるのでせいぜいWebアプリにしか使えないことが
この10年でわかった事実
おまいは10年間寝てたのか?
自己レスが流行ってるのか?
標準化委員会の中の人にすら理解できない言語というのも珍しい。
他言語は個人の趣味で作られてるからな
対岸の C++ を見ていると、GLS が如何に偉大かが分かるよな
主流に乗り損ねた奴らはいつの時代もみじめなもんだな
つまらん事を気にするな
主流じゃなくともBoostとか楽しげじゃん
>>91 仕事ない言語選んじゃった奴はかわいそうだよね。対岸で指くわえてないで、
今からC++とかJavaとか勉強しなよ。まだ間に合うって。
>>94 GLS も知らない素人に Java を勧められた場合はどうすれば良いでしょうか?
>>95 求人広告はC++/Javaばっかだもんね。いやだよね。
最初は難しいかもしれないけどそのうちできるようになるよ。
恥の上塗り
C++は才能ない奴は何年やっても無理
『GLS?何だ、また新しいLLかよ。どうせ俺の理解出来ないチャラチャラした
機能が満載なんだろう。取り敢えず煽っとけ』みたいな感じかな?
そこでPHPですよ
>>98 最新の便利言語を一切無視してC++を続けるには非凡な才能が必要そうだね
超越した忍耐力がないと続かないよ
>>94=96 はもう少し Java を勉強した方が良いよ
2ch だから許されるけど、世間では冗談では済まないだろうて…
>>100 PHPじゃメーラもワープロもブラウザも作れないし
>>101 どの会社でもみんな普通に使ってるC++/Javaが憶えられないとか、忍耐力がいるとか
ってかわいそうだね。確かに難しくはあるけどね。他人についていけずに焦る
気持もあると思うけど少しずつがんばりなよ。
>>103 Java を知らないのは君な訳だが…
君はもう少し焦った方が良いと思うよ。頑張っても無駄かもしれんが。
>>101 C++挫折者必死だな。どこでつまづいたんだ?
都合が悪くなると話を変えるのなw
>>105 ところで C++ の設計者の名前は知ってるのか?
C++に才能なんて必要ないだろ。何いってんだ、お前ら。
必要なのはモチベーションだよ。
>>105 どこでつまづいたとかは恥ずかしくて言いたくないもんだろ
挫折者って次どこに逃げるんだろうな。やっぱVB?
お前らみたいなカスにC++は無理。Rubyでもやってろ。
C++に挑戦しようという気になってきました。なにから始めたらいいでしょうか?
C
GUI周りが面白いかもね。すぐに効果がわかって。
>>120 オブジェクトが形として見えるから良いとは思うけど、
問題はどのライブラリを使うかだよね。
MFCはフリーじゃないしmain隠蔽とかメッセージマップとか独自過ぎ、
wxもメッセージマップだし、Qtはmocとかいう独自プリプロセッサだし、
FOXやFLTKはまともに日本語が使えないし、
Windows Formsは悪くないけどC++/CLIは独自拡張で論外だし、
初心者に優しいライブラリがまったくない。
C++の勉強のためのGUIならWin32かな
変なラッパーやライブラリより直叩きの方が素直だとは思うけど、
C++というよりC言語の勉強になるような希ガス。
Win32ってライブラリがあるんですか?
>>121 一応、gtkmmというのもあるけど。
GUIやるならJavaがいいよ。どこでも動くしさ。
>>124 ライブラリっていうかWindowsに最初から付いているAPI。
C言語の関数の塊なんで、C++のクラスとかは使っていない。
この辺を見て地道に勉強するしかない。
ttp://www.kumei.ne.jp/c_lang/index_sdk.html はっきり言って初心者向けではないし面白くもないと思う。
最初は意味不明でひたすら写経になる。
理解しようとしても徒労だと思うのでパターンに慣れるしかない。
半年くらいひたすらやっているとパターンがつかめてくる。
仕事で強制でもされなければ大抵は挫折するんだけどさ。。。
まあ、要するにC/C++でGUIは初心者には鬼門だってこと。
GUIでオブジェクト指向を勉強するならC#かJavaの方が良い。
GLSってなに?ググってもプログラムと無関係ぽいのばかりでてくるんだけど
>>127 オリジナルの Java の仕様策定者の一人だよ。C++ はストラウストラップが
有名だけど、Java はゴスリング、ジョイ、スティール (GLS) の三人で最初の
仕様を作ったんだ。
GLS は ECMAScript, Scheme, Common Lisp, C, Java, Fortran などの
仕様決定にも関わっていて、プログラミング言語の権威中の権威であり、
コンピュータサイエンス界の大巨人。ストラウストラップみたいな素人上がり
とはバックグラウンドが違う。
まあ単に Java を書けるだけのプログラマなら GLS を知らないかもしれんけど、
もう少し上のレベルの人間には常識。
>>94 が如何に滑稽なレスだったか理解してもらえたかな?
知識が無いのは仕方が無いが、自分の身の丈を知らないのは恥ずかしいぞ。
130 :
デフォルトの名無しさん:2008/02/05(火) 21:48:11
129の釣られすぎにワロタ
127=128にフイタ
windowsのアプリ作りたいんだが、独自拡張が少ないのはどれか教えてくれエロい人
ちょっと見た感じC++Builderかな?
>>130=131
負け惜しみのレスは心の中にしまっておくのが大人の態度だよ
なにここ・・粘着キモスレだな
スレタイ見れば分かるだろw
136 :
デフォルトの名無しさん:2008/02/06(水) 09:10:20
>>128 ごくろーさん、がんばったね。偉い人の名前いっぱい知ってるんだ。
レポートでいい点取れるといいね。プ
>>132 C++ Builderはプロパティとかコールバックとか独自拡張しまくり。
おまけに__fastcallを押し付けられるし。
素直にWin32APIを直叩きすれ。
ま、開発スピードではC++ Builder最強。
クロスプラットフォームじゃwx-devcpp最強じゃね?
Builderはやめとけ
独自拡張だらけ、バグだらけ、コンパイラはカス
ろくに使ってない俺ですら、ダメだしせずにはいられないぐらいひどい代物だ
おまけに参考文献ろくにないし
141 :
132:2008/02/06(水) 22:05:45
そうですか。
やっぱりVC++が無難かな。
JAVAに慣れてしまったおれにはイベントハンドラとかメッセージとか何言ってんのかさっぱり分らないんだがしょうがないな。
それかDLLだけ作ってC#にするか。
アドバイスくれたみなさんありがとう。
>>136 そんなに僻む時間があるならもっと勉強した方が良いと思うよ
前向きに
>ろくに使ってない俺ですら、
>ダメだしせずにはいられないぐらいひどい代物だ
矛盾。
VC++/MFCを一回使ってみ?
これって何言語っていうくらいヘンテコですぐに投げ出すこと請け合い。
ろくに使ってない俺ですら、
コンパイラのだめさ加減(普通なら通る構文が通らない等)や、
IDEのバグを沢山知ってしまってるって話だよ
使い込んだら、一生根に持ちそうだ
VC++のダメさ加減というのは、COMや、最近ではドトネトを混ぜないと開発できないところ。
C++のソースの中でのCOMの複雑怪奇かつ素直にクラス派生できないわずらわしさは最強。
VC++を捨てればスッキリ。
VC++ ← ネイティブとCOMとドトネトの三つ巴でC++を複雑怪奇にしたA級戦犯
過渡期ですからしょうがないっすよ・・・
つーか全然.netの仕事来ないんだが、、、
.netを使わないでくれってのばっか
そりゃお宅が使えばクソ重くなるからな
結局のところ、世の中に完璧なものはなく
自分に合うかどうか
>>146 COMはC++から使うもんではないですぜ。
スクリプト言語やVBAからつまむもの。
そうも言っていられないのが現実だけど。
まあ、オブジェクト指向が理解できない内は、「Windowsのプログラムは複雑でわかんね」になるねぇ
オブジェクト指向ってそんなに難しいのか?
俺はオブジェクト指向言語から入ったから、難しいというのが理解出来ん。
プログラミングってのは、言葉。一番はじめにおぼえた言葉を簡単に感じるもの。
次に覚える言葉は外国語。
>>155 オブジェクト指向なんて気取った言い方を止めない限り
理解しやすくはならないんじゃないかな?
「型定義指向」みたいな言い方の方が理解しやすいと思うんだけどねぇ
>「型定義指向」
これだと分かんないじゃん。
クラス宣言指向のんが良いんじゃない?
>>158 それだとクラスって何って話になるじゃん
クラスは、型の動作定義にしか過ぎないわけだし、クラス宣言指向では意味がわからん
そもそもオブジェクトとは何かを理解するのが重要なのに、
オブジェクトって言葉が消えるのは具合が悪い。
それは認識間違いです。
完全なオブジェクト指向じゃないのがクラスベース言語。
オブジェクト指向を想定してクラスベース言語を理解しようとするから難関。
素直にクラスの文法を学べば良い。
そうじゃなくて完全なオブジェクト指向を目指すなら、オブジェクトベース言語に逝こう。
オブジェクトが何かというのが大切であるなら、英語のオブジェクトをオブジェクトのまま扱っている方が問題
だから、"物"なんていう直訳の極みを説明に出してしまう事になる
オブジェクト指向のオブジェクトは、"物"ではなく"鋳像"と訳すべきであり
概念としては、"鋳像と、その鋳型の関係を考える"ことがオブジェクト指向だろう
>オブジェクト指向のオブジェクトは、"物"ではなく"鋳像"と訳すべきであり
それは違う。
鋳像となってるのはクラスベースOOPの話。
ミスリード激し杉。
つかRubyあればあとはイラネ
165 :
デフォルトの名無しさん:2008/03/10(月) 14:24:33
>>163がオブジェクトの説明を素人にも判りやすく説明してくれるというので期待上げ!!!
166 :
デフォルトの名無しさん:2008/03/10(月) 17:25:09
>>163 オブジェクト指向の判りやすい説明はどうしたの
早く教えてくれよ
∩___∩
| ノ ヽ
/ ● ● |
| ( _●_) ミ
彡、 |∪| 、`\
/ __ ヽノ /´> )
(___)f^f^f^f^f^f^f^f^f^┐
| |~ ~ ~ ~ ~ ~ ~ ~ ~ │
| | 知ってるが │
| / | お前の熊度が |
| / | 気にクマない |
∪ |___________|
\_)
168 :
デフォルトの名無しさん:2008/03/10(月) 17:33:57
>>167 お前には失望した
嘘吐き小僧の名を進呈しよう
ttp://codezine.jp/a/article/aid/222.aspx#s01 このようなクラス-インスタンスという概念を使用するオブジェクト指向言語のことを、クラスベースオブジェクト指向言語(Class Based Object Oriented Language)と言います。
それとは異なり、JavaScriptではクラス-インスタンスという考え方をしません。
オブジェクトは別なオブジェクトを元(プロトタイプ)にして独自の特徴を付加することで存在する、という考え方をします。
このようなオブジェクト指向言語のことを、プロトタイプベースオブジェクト指向言語(Prototype Based Object Oriented Language)と言います。
170 :
デフォルトの名無しさん:2008/03/10(月) 21:42:34
>>169 その説明だと、クラスとプロトタイプの違いがさっぱりわからん
もっと優しく説明してくれないか
クラスベースはプラモデル
プロトタイプベースはレゴ
ってかんじかね。
172 :
デフォルトの名無しさん:2008/03/10(月) 22:36:34
プロトタイプベースは鋳像とその鋳型(=クラス)の関係じゃないことは確か。
174 :
デフォルトの名無しさん:2008/03/11(火) 00:02:58
>>173 実行中に形が変わるから、違うものだと言うのか?
クラスが作れるからオブジェクト指向ではないし、プロトタイプが作れるからオブジェクト指向でもない
鋳像(実像)と鋳型(モデル)の関係があって初めてオブジェクト指向が成立するものだと思うが
同じ物を同じ物として作ることが出来、なおかつ、作り出された一つ一つは個性を失わない
それが出来て初めてオブジェクト指向と言えると思うけどな
その昔、Java で interface を知った瞬間にすべてが分かった。
実装方向からの理解だと、シグニチャからのメソッドの検索ね。
同一型のデータの集合をクラスと捉えるよりも、メソッド集合を
クラス、あるいはプロトタイプと捉えた方が理解が簡単かな…
データなんて飾りですってことで。
>>172 オブジェクト指向の歴史はしらんが、現在ではある概念の一つでありプログラミングのみで登場する概念ではない。
オブジェクト指向プログラミングとは、一種のプログラム設計の方針であり、クラスの有無とは本質的には無関係である。
しかしながら、現実的にはC++などはクラスを使用することでオブジェクト指向に基づくであろう設計方針を取れる。
オブジェクト指向とは、
1、オブジェクトという単位を基準に考えること。(オブジェクトは部品、と訳すと割といい。)
2、オブジェクトはオブジェクトとやり取りに注目していること。(メンバ関数/イベント等をインスタンスへの命令と考える。)
3、オブジェクトはオブジェクト以上にはなりえないこと。(カプセル化に関連。オブジェクトとして考えていたものがオブジェクトとして認識できなくなる操作はNGという事)
4、オブジェクトはどのオブジェクトとどのような関係があるか、わかること。(has-a、is-aがしっかりとわかること。継承や集約といった関連がどうなっているかわかること)
括弧内はプログラミングから見た場合。
こんなかなぁ・・・怪しいものだ。
177 :
デフォルトの名無しさん:2008/03/11(火) 01:50:32
>>176 それは、"鋳像と、その鋳型の関係を考える"事じゃないのか?
>>177 括弧内じゃないほうは鋳像(・・・このスレではじめてみたが)と鋳型という考えは出てないと思うけど。
あとオブジェクト指向の指向は考える、とか定める、とか基準にする、とかに準拠する、という意味合いが強い気がするから、
"〜を考える"ことは割りと定義としてはあってると思うんだが
>鋳像(実像)と鋳型(モデル)の関係があって初めてオブジェクト指向が成立するものだと思うが
これはまさにクラスだけど、現実世界ってそうじゃないんだおね。
ニューアカの粘菌の説明なんかであったが、
粘菌とはこういうものだと定義しようとするが、
粘菌は場所が変わると色んな風に変化してて、
そのカテゴリーから外れる、みたいな。
動植物の定義でも外れるもの出てくるし、哺乳類の定義でもそう。
結局クラスってのは現実世界とあってない。
>>178 馬車の鋳像を作ると仮定して
その鋳像は、馬も車輪も御者も全て一緒に作るのか
馬車であることに拘り、本体、車輪、馬、御者をバラバラに作り後から組み立てるのか
それとも、馬や御者は陶器で作成して、馬車のみを精密に鋳像にするのか(屋根を開くようにして中に乗客を乗せることが出来るようにするとか)
>>176の言ってることってこう言うことだよね?
でも、これは、馬車の鋳像の事を考えているように見えて、馬車の鋳像の鋳型の事を考えているよね
でもって、作り出された鋳像の話にすると
車体と車輪を分けて鋳造された場合、きちんと組み立てて馬車の鋳像あるだろうが
中には、一つの車輪をわざと外し、壊れた馬車の鋳像にしている場合も有るだろう
これは、鋳型(クラス、プロトタイプ)から作られた、鋳像(インスタンス)は、鋳型と同じ姿(機能)を有しているが
鋳像同士の使われかたは、別々だと言うこと
これらが意識できない限り、クラスやプロトタイプは変な使われかたをして、作った奴死ねってなるだけの話さ
そうだね、車輪だと分かり難いけど、鋳造から作った部品を変形させて別物にしたりするよね現実では。
>>179 それは、クラスとインスタンスの関係を理解していないだけ
>>182 そうじゃない。
クラスでは現実世界を記述するには役不足。
>>183 三毛猫は、猫だが、黒猫ではない、だから猫は猫を表現するには役不足だ
と言われて、どう思うよ
>>180 なんだろ・・・すごい話がかみ合ってない希ガス。
オブジェクト指向はUMLが最もそれらしく体現してるかな。
鋳型を考える手前までの作業がオブジェクト指向。
そこからクラス=(鋳型)を作る行為はオブジェクト指向とは無関係だと思う。
というか鋳型という表現が良くない。鋳型ではなくカテゴリーとかそこら辺がそれっぽい。
カテゴリーならオブジェクト指向の範疇。
>>180の例でもそうなんだが、それは鋳型(オブジェクトの設計図)を考えること直結してるとは思えない。
少なくともそんなことをオブジェクト指向を何も知らない人はそんなことは思わない。
そして、その例は間違いなくオブジェクト指向してる様に見えるんだが、その例はオブジェクト指向じゃないの?
あと後半の説明は明らかに誤解を招く。どう考えてもインスタンスとクラスは同じ姿(機能)をしてないだろうと。
だめだ、日本語がわけわかめになってるな。そんなことが同じ文の中に2回登場してるorz
>>184 現実にはイノシシからブタが発生したりするわけ。
実行時にクラスが増えていくって感じ?
さらにもっと良く見ると、1つ1つのクラス違ってるじゃん、みたいな。
純粋にオブジェクト指向で現実を記述するってのと、
簡単な業務アプリのスタティックなクラスは、
無限の隔たりがあるの。
>現実にはイノシシからブタが発生したりするわけ。
>実行時にクラスが増えていくって感じ?
もう少し説明すると、記述して計画的にクラスが分岐するんじゃなくて、
実行した結果分岐しちゃった、みたいな。
だから、スタティックなクラスじゃ書けない。
>実行時にクラスが増えていくって感じ?
例えばキケイで足が1本少ないってなったとき、
じゃ、足の本数をメンバ変数にすれば良いじゃん、
って単純な話じゃない。
原生生物に突起が出来て、あるとき足と呼ばれるようになった、みたいな。
>>188 別に現実世界とオブジェクト指向の隔たりを否定しているレスは無いだろうと常考
>>189 オブジェクト指向プログラミングは現実世界を投影するのが目的じゃないだろう
>オブジェクト指向プログラミングは現実世界を投影するのが目的じゃないだろう
おまいOOわかって無いだろう、jk
>>191 言い方が悪かった
オブジェクト指向プログラミングは現実世界を投影するのが『最終』目的ではないだろう
身近から言うと業務アプリは業務を投影するし、
極端なことを言うと地球シミュレーターは地球を投影する。
人工知能で顔を判別するには顔を投影する。
で?
>>193 やっぱりそういう勘違いをしてるのか・・・
俺は、
>>191が判ってないのに1票
>>180と
>>185は、言葉の違いを言い争ってるのに1票(パンクとメタルの違いみたいなぁ)
クラスから発生したインスタンスは、クラスにはならない
プロトタイプから発生したインスタンスは、プロトタイプになる
そう言いたいので有れば、説明のしかたがおかしい
さらに言うなら、それはオブジェクト指向の話でもなんでも無く、コンパイラとインタプリタの話であり、ややこしくなるだけだから、口を開くな禿
>>194 投影、を勘違いと思うなら、OOを勘違いだといってるのと同じ。
この議論の外の話。
>さらに言うなら、それはオブジェクト指向の話でもなんでも無く、コンパイラとインタプリタの話であり、ややこしくなるだけだから
強烈に頭が悪い悪寒。
どっちにしろ、OOってのは現実世界の投影。
それを否定する人は、別の議論に入って良いけど、この議論には入るな!
>
>>180と
>>185は、言葉の違いを言い争ってるのに1票(パンクとメタルの違いみたいなぁ)
これ、強烈に頭割る杉。
>>196 >>193の例で言えば業務アプリのプログラムを組もうとすることはoopと無関係である。
別にoopでなくとも可能かも知れないし、oopの場合現実世界を必ず投影しなければいけないわけではない。
oopは安全性の向上、再利用性の向上、が目的だろ。
現実世界を投影することとoopで使うことを前提としたクラスライブラリを作ることが同じと申すか。
>>195 185だが、自分で言うのもなんだが確かに不毛。
>
>>180と
>>185は、言葉の違いを言い争ってるのに1票(パンクとメタルの違いみたいなぁ)
こいつが頭悪いと言い切れるのは、
学問的にも、クラスベースOOとオブジェクトベースOOは別物となってて、
既にクラスを推奨しているboochは異端だとか電波だとか言われている。
クラスベースにしがみつく=キティ
>oopは安全性の向上、再利用性の向上、が目的だろ。
これは間違い。
手続きプログラミングに対してクラスベースの効果として、安全性、再利用性は言われるもの。
しかし、前述のとおり、OOとしてはクラスベースは異端。
>>201 初めて知ったわ。なんかそれぞれの学術書でもあるん?
何を分かった風な。
>>202 え、oopの目的って(Cににた言語なら)生産性、安全性、再利用性の向上だと思ってたけど。
何が目的なの?・・・というかそもそも設計方針だからルールはあっても目的とか無いのか・・・。
一人、強烈にオブジェクト指向を理解してないやつが居ることだけは確実だって事だな
しかも、人の説明は違うと言いつつ、自分では何の説明もしないあたり、相当な...
OOの本流に一番近いのはRubyかな
一つの言語でまかなえれば、それは楽で良いだろうが
目的に応じて使用する言語を選べる方が、よりオブジェクト指向だと言えるな
>目的に応じて使用する言語を選べる方が、よりオブジェクト指向だと言えるな
おまいのいうオブジェクト指向ってのは、開発のノリのこと?
いわゆる何に対しても、”ロック”、の一言で終わらせるあれ?
>馬鹿は黙ってろ
やっぱ脳みそツルツルの体育会系じゃねーか。
おま、マに向いてないお。
>>211 プロトタイプとインスタンスの関係も理解できてないのに大きな口を叩くな
理解できてるなら、説明して見ろ
話はそこからだ
オブジェクト指向は現実世界の投影じゃないよ。
言うなればドメイン(問題領域)の投影だよ。
物理学者ならアレだけど。
プロトタイプは原型だよね(英単語的な意味で)
クラスは変な表現になるけど、興味の対象だよ。
インスタンスとプロトタイプは似てたりもするけどね。
ところで、ここ何のスレ?
ドメイン(問題領域)の投影
の一例として
現実世界の投影だろ?
213=ヴぁか?
>>214 だから馬鹿は黙ってろ
話題に混じりたいなら、プロトタイプとインスタンスの関係を説明してから混じれ
a)オブジェクト指向は現実世界の投影じゃないよ。
b)ドメイン(問題領域)の投影だよ。
c)物理学者ならアレだけど。
aとbを比べたらbの方が巨大。
bはaを含む。
だから、aの「じゃないよ。」は成り立たない。
さらにcで「ならアレだけど」と例外的に書いているのはさらに変。
物理学者だからこそ現実世界以外の問題領域が必要になるわけで、
物理学者じゃないならaで十分w
>>214 一例になるから213は物理学者ならって書いてるんじゃね?
218 :
213:2008/03/11(火) 15:03:49
>>216 オブジェクト指向=現実世界の投影じゃ〜
って書いた方が良かったかな。
>>217 いや、
現実世界の投影 ∈ ドメイン(問題領域)の投影
なの。
「現実世界の投影」の方が小さい。
>ドメイン(問題領域)の投影
ってのは、現実にあるもの無いもの含んで超巨大。
これこそ物理学者にふさわしい。
>>219 プロトタイプとインスタンスの区別も付かない奴に何を言っても無駄
>>220 馬鹿は黙ってろ
>>219 だからそう言ってんじゃんw
どう読んでんだよw
213はイコールじゃないって言いたいんだろ
>>222 あ、自分の読み間違い?
良く分からないけど、ま、次の話題にすすみますか。
224 :
213:2008/03/11(火) 15:26:51
現実世界の投影はドメインの投影に含まれると思っています。
物理学者なら現実世界(シミュレーション的な意味で)をドメインとすることもあるかもね、
というつもりで書きました。
「アレ」では端折り過ぎでした。すみません。
まぁ、次の話題へどうぞ。
では、OOとしてドメインの投影するには、どんな言語が良いのだ?
C++でイナフ
>>209あたりからのレスの進み方を見て、oopが分からない人が多い理由が分かった
別に分かっていなくても、奇抜なプログラムを書かず、
そのとき使っている環境で普通とされるコードを書ければそれでいい。
229 :
デフォルトの名無しさん:2008/03/12(水) 08:36:17
STL、boostが既に奇抜なプログラムな現実について。
C++ではSTLくらい普通の内です。
現状のSTLは欠陥品って報告が数多くでてるじゃん
ふーん、その欠陥品を模造したものがSTLドトネト→STL.CLIでつか。
見捨てた奴スレのレベルの低さから、何かが解るような気がする・・・
>>231 だからと言って標準ライブラリに代わりがあるわけではないし、
C++を使わない決定的な理由にならない。
235 :
デフォルトの名無しさん:2008/03/12(水) 19:43:05
キャスト演算子のオーバーロードをしたいと言うとき、
C++の場合はポインタが足枷になる
大抵は派生クラスにして終わりなんだが、newできないクラスのラッパを作る時に不便だ
勿論getterも書くが…個人的にはgetterはあまり増やしたくないな
10年間変わっていない。
しかもあと10年は変わりそうにない言語を
肥大化というのもおかしくないか。
238 :
デフォルトの名無しさん:2008/03/12(水) 23:12:57
かれこれ20年近くC++を使ってきたが・・・
まぁ、いろいろな意味と理由で負の遺産となりつつある。
場合によってはCOBOLより凶悪な事態を招きかねない、早いうちに廃棄処分方針をとった方が良いだろうとは思う、さすがに。
固執する人もいるが、そういった人には一度離れて別の言語を見て回ってみろと言いたい、
開発環境・コンパイラといった物から、言語使用その他あらゆる点で時代遅れになっているので……
唯一進んでいるのはboostとその周辺だろうが、これらがメインになるのは恐らく難しいだろう。
そもそも元になってるCに言語としての一貫性と言うか、仕様の一貫性が無いのが気に入らないんだ。
変数宣言は「型、名前」っていう順番で統一するべきだった。
ポインタを複数宣言する時は
char *a, *b, *c
ではなく
char* a, b, c
のほうが自然だし、そもそも char* を typedef していれば
pchar a, b, c
と書けるという事を考えると。
関数ポインタにしても
void (*hoge)(char*, char*)
ではなく、単に
(void (char*, char*)) *hoge
としてくれた方が素直だったのでは。
それもそうだが、まずtypedefの構文をもっとまともにすべきだったね。
問題はC++の次が何か?ってことで、Cの上位互換なら
Objective-Cという選択肢も一応あるんですがねえ…。
C言語から引き継がれた機能のうち最大の問題はプリプロセッサだと思うけどね。
>>241 typedef については、これ以上どうしろと・・・
関数ポインタのことじゃない?
typedef void(FUNCP*)(int);
これは最初戸惑った。
typedef void(*)(int) FUNCP;
せめてこうなるべきなんじゃないか?と。
>>244 それは、宣言の書き方であって typedef 関係ない
typedefが記憶クラス指定子ってところがおかしいだろ。
どこがよwwww
それでも問題ないし、そもそも記憶クラスじゃないし。
>>247 そう、記憶クラスじゃないのに記憶クラス指定子にされているのがなんか気になる。
普段は意識しないし、実用上困ったこともないけどさ。
>>240 そもそも char* 等は型ではない。
関数プロトタイプに char* と書くようになってから一貫性がなくなってきてるけどね。
>>247 typedef は Storage-Class Specifier ではない。
>>240 でもそれって配列と文法をあわせてるからでしょ。
むしろ他の言語で配列の初期化周りが統一感ない文法が多くて気持ち悪いが。
251 :
デフォルトの名無しさん:2008/03/13(木) 22:05:20
>>243 プリミティブ型からポインタ型や配列型を作れる言語では、
Cの構文以外で一貫性のある型表記を決めるとすると、
関数型言語みたいに「型から型を作る」という意識に立って
typedef &char charptr;
static (const int)*5 intarray;
(int, int) -> void func = { ... };
&((int, int) -> void) funcp;
のように表現せざるを得ない。
で、Cにはタプルもカリー化もないのだから、
わざわざ変数の使い方から乖離した型表記を作る必要はない。
>>251 関数型の世界しか頭になさそうなアホちんですね
組み込み等では大変役に立ったモンですよ
熟読した上で、まるで理解できず見当違いの煽りに走った、が正解。
>>253 いや、確かに前と後ろにつける違いがあるけど、どちらも変数につけるじゃん。宣言する時も使用するときも。
ポインタの文法は型にくっつけるべきだというなら、配列の宣言も[]は型にくっつけるべきだぜ。
入れ子状の宣言文上で複数の変数を宣言するから分りにくくなるだけで
とどのつまり、変数は一つづつ宣言させればいいのさ
それはプログラマがそうすればいいだけの話で、一行に一個づつ変数を宣言しろと。
つか、型宣言はC言語の問題の中では一貫性があり重大な欠陥の少ない部類だろ
なんでこんな所にイチャモンつけてんだか
関数ポインタや、配列返し const volatile register の修飾先が分りにくくて初心者がパニックを起こすのはちと考え物だとは思うが。
// C, C++
int *x,y; // xはintへのポインタ, yはint型
int x[N],y; // xはintの配列, yはint型
// C++ typedef
typedef int* pint;
pint x,y; // xとyはintへのポインタ
// java
int[] x,y; // xとyは int[]型
// C#
int* x,y; // xとyは intへのポインタ
int[] x,y; // xとyは int[]型
// D
int* x,y; // xとyは intへのポインタ
int[] x,y; // xとyは intの配列
int[3]*[5] x; // xは int の3要素配列 へのポインタ の5要素配列
いまさらC,C++の宣言の仕様が変わることは有り得ないけど、
新しい言語がCの宣言を否定しているので、
イチャモン?をつける人が出ても、まぁ致し方ないとは思う。
どうせ標準化委員会のメンバーでもないんだし、
気楽に論争(雑談)して良いと思うよ。
Cのparserを書こうとすると、Cの宣言の構文が嫌になる。
型名と変数名を区別するのに苦労させられるのがたまらん。
変数の宣言部分なんて、C++の話じゃなくて、Cの話だしな
>>258 スキャナで適当に区別してしまえよ、せっかく1 passで解析できるように出来ている構文なんだからさ。
それより、古き良き時代で大変役に立った機能が、今、逆に大きな弊害になっている点に突っ込めよ。
インテリセンス・デザイナ・リファクタリングツール・テストツール
リンクを高速に処理可能な抽象度の高い中間ファイル
モダンな機能が組み込み困難になっている現状こそが問題だろ。
>>261 ヨーロッパのマが書いたコードを見れば結構出現頻度高いんだよ、それ
日本やアメリカではお目にかからないけど
まぁ、javaやC#とかでも日本語識別子使えるけど、
文字列以外でASCIIでない文字を使うプログラマはカス
日本語プログラミング言語は別だけど
もうウニコードベースにすりゃいいのに
>>263 日本語ラベルは便利だぞ、C/C++だとラベルはラベル、実行コードは実行コードと分かれているが
リフレクションを持つJavaやC#では、構造体のラベル名を読み取って、そのまま活用できるから、
例えば表のタイトル文字列と、構造体のメンバの名前で表示するとか、XMLの内容をラベル名で出力するとか。
一箇所修正するだけで、全部修正完了するのは便利だ。
まさに、そういう考えの人が多いからこそ嫌いなんだけどな
間違ってるとまでは言わないが
ただ、システムの識別子はリファクタリング以外では変えるべきじゃないし
表示名のような業務要件で変わる外部のものと、内部のものを密結合にされると
逆に面倒なことになることもある
リファクタリグツールから名前を変更すれば、関わる "識別子=表示名" を根こそぎ全部置換してくれるから、変更漏れがなくていいと思うんだが。
それに、他人に説明するときに対応関係を説明する手間も省けるし。
268 :
デフォルトの名無しさん:2008/04/23(水) 11:39:07
>>179 粘菌の本質をベースクラスとして定義し
そこから派生クラスで環境依存部分を定義する
後は、派生クラス側で
operator=()をベースクラスのコピーと派生クラスの初期化に定義し直せば、動的に粘菌の性質を変更できるんじゃないのか?
俺はC++を見捨てたというより使いこなせるようになるのを諦めた。
自分を見限ったという事ですか。
そうでーす
>>268 いや、そーじゃなくて、プログラミング言語以前に、粘菌とはこれだという定義ができないって話らしいお。
273 :
デフォルトの名無しさん:2008/04/24(木) 16:04:17
>>272 定義できないなら、それが粘菌であるかどうかすらわかんないじゃん
例えば、
「晴れたら、小さな芋虫みたいになって、四方八方に散らばり」
「雨が降ったら、ぬちゃぬちゃで繊維質な物体になる」
って性質を持って居るように見えて
本当は、
「晴れたら、小さな芋虫に捕食され、雨が降ったら、その芋虫を養分に育つ」
のが本当の姿である可能性もあるじゃん
その場合、クラスだの、プロトタイプだの関係なく、オブジェクトの設計そのものに失敗しているってことじゃん
274 :
デフォルトの名無しさん:2008/04/24(木) 16:20:48
名前考えるのめんどくさいよね。
日本語でおkになってほしい。
276 :
275:2008/04/24(木) 16:29:45
「現実は」ってのは、”現実世界は”ってことね。
クラス派生で生物が進化してきたわけじゃない。
グラデーション、みたいな。
277 :
275:2008/04/24(木) 16:32:24
もっというと、生物の進化は、単純化・複雑化の2方向があるが、現実は「複雑化」の一方。
今、要素を洗い出しても未来には違う要素が出てくる。
スタティックなクラスじゃ足りないってこと。
278 :
デフォルトの名無しさん:2008/04/24(木) 16:34:28
めたふぁとしてのオブジェクトはもういいよ。
それ最初に本に登場したの1992だよ。
名前は日本語でいいが次のトレンドだよ。
>例えば、
>
>って性質を持って居るように見えて
>本当は、
>
>のが本当の姿である可能性もあるじゃん
↑
これに具体例を入れるだけで、クラスベース言語の限界と問題点が明確になるテンプレ。
280 :
デフォルトの名無しさん:2008/04/24(木) 16:53:29
> 例えば、
> 大きい
> って性質を持って居るように見えて
> 本当は、
> 小さい
> のが本当の姿である可能性もあるじゃん
ねーよwww
まあ、ヒトクラスとサルクラスを作ったらその分化前の類人猿はどうするよ、と。
類人猿クラスを作ったらそれとヒトの間はどうするよ、と。
ミッシングリンクみたく、中間は無限にあるという問題になる。
282 :
デフォルトの名無しさん:2008/04/24(木) 17:12:17
>>281 それ俺らが生まれる前の時代にさんざん議論されつくした話題じゃん。
結局ある種の制約がないとプログラミングできないんだから、その手の
問題がないほうが問題なんだよ。
制約があるのが正しい状態って結論が出て今があるわけ。
というわけで、いま必要なのは日本語でいいじゃんってことなんだよ。
283 :
デフォルトの名無しさん:2008/04/24(木) 17:13:39
>>279 それは、クラスベース言語の問題点じゃなくて、オブジェクト指向の限界だろw
>>280 ねーよwww
>>281 それは、オブジェクト指向以前に、デジタル回路ととアナログ回路の違いからやり直した方がいいよ、たぶんw
>>283 おまい無知なだけじゃん。
スタティックなOOがクラスベースっていうOOのイロハを知らないんだろ。
回線切ってケーブルで(ry
>それ俺らが生まれる前の時代にさんざん議論されつくした話題じゃん。
ねーよwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
昔あった議論は、OOじゃなくて構造化は是か非か。
その前は、汗じゃなくてCは是か非か。
286 :
デフォルトの名無しさん:2008/04/24(木) 17:25:41
整数型 ねーよ = いいえ。
どうよこれ?
いいだろ?
287 :
デフォルトの名無しさん:2008/04/24(木) 17:26:23
>制約があるのが正しい状態って結論が出て今があるわけ。
ねーよwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
プログラミング言語はソフトウェアとともに進化して来てんだよ。
そしてソフトがクラスベース言語で表現できないものも扱い始めたんだよ。
おまいは市んだ法が良い。あどヴぁいすwwwwwwwwwwwwwwwwwwww
288 :
デフォルトの名無しさん:2008/04/24(木) 17:31:46
あれか、人クラスを作ったとき
会社員クラスから学生クラスには出来ず、また学生クラスから会社員クラスにも出来ないから、クラスベースは静的で役に立たないってかw
288=誤読乙!
ヴぁかは読解力が無いようでwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
290 :
デフォルトの名無しさん:2008/04/24(木) 17:42:13
>>288 is a関係とhas a関係とかいう奴だな。
そこで、property型を導入するんだよ。
日本語至上主義的には属性ってしたくなるけど、そこは肩書だな。
なんでかっていうと、肩書ってしとけば委譲するとき意味的に
ぴったしっぽいじゃん。
で、よくよく考えると他重軽傷でいいのか?とか思っちゃうんだけど、
そうするとまた最初に戻っちゃうので、肩書を導入すること推奨。
291 :
デフォルトの名無しさん:2008/04/24(木) 17:47:48
芝君の話は難しすぎて判りませんね(棒読
会社員や学生に「is-aヒト」問い合わせしたらtrueだろうが、
ヒト・サルに文化する前の類人猿に「is-aヒト」、「is-aサル」を問い合わせたら、true?false?
サルが派生してヒトになったわけじゃない。
類人猿が分化して夫々になったわけだし。
293 :
デフォルトの名無しさん:2008/04/24(木) 17:51:36
C++0xに肩書が導入されたらどうするよ?
294 :
デフォルトの名無しさん:2008/04/24(木) 17:52:57
295 :
デフォルトの名無しさん:2008/04/24(木) 17:53:41
誰だよふぁびょってるのは・・・
>>292 その認識だと類人猿はヒト、サルの共通の祖先なので、
ヒトでもサルでも無い(false)。
ヒト、サルにis-a類人猿したら両方trueだろ。
297 :
デフォルトの名無しさん:2008/04/24(木) 17:56:47
>>296 いいえになるよ。
折れるいじねんじゃないしw
298 :
デフォルトの名無しさん:2008/04/24(木) 18:00:15
299 :
デフォルトの名無しさん:2008/04/24(木) 18:02:12
略してでじもん乙。
300 :
デフォルトの名無しさん:2008/04/24(木) 18:07:11
取り敢えず、芝君の仲間になりたくないから、俺はC++で頑張るわ
芝君にとってのオブジェクト指向は、なんでも解決するスーパーテクニックの様です
傍迷惑でビッグなクラスとか、誰にも読めないプロトタイプの山が見えるな
302 :
デフォルトの名無しさん:2008/04/25(金) 07:29:05
じゃぁ、クラスの肥大化を防ぐテクニックについて語ろうぜ。
クラスっていうのはえさを与えなくても勝手に大きくなっていくものだからな。
テンプレートも一つの解ではあるな。
クラスを肥大化させないテクニックは
「馬鹿にクラス設計をさせない」
>芝君
↑
これって何?
自演クンって意味?
芝君の仕事は、2chのスレに芝を生やすことだぉ
_, ._
んもー! ( ・ω・) . .
○={=}〇, ; .'´ `. ゙ ; `
|:::::::::\,.'.;´," :´,´' . ゙ .` .
.,,.,.,,,.,.,,,.,.,,,.,.,,,.,.,し,,.,.,`(.@)wwwwwwwwwwwww
>>302 テンプレートを使うとクラスの代わりに実行モジュールが肥大化します。
>>302 テンプレートを使うとコンパイル速度も飛躍的に悪化します。
>>302 テンプレート使っちゃうと、クラスに対するプロトタイプの利点が無くなるよぉw
実行モジュールのサイズを縮小し、コンパイル速度も短縮して
ついでに生産性も縮小するわけですね、わかります。
312 :
デフォルトの名無しさん:2008/04/27(日) 01:20:43
>>302 クラスが肥大化するのは、設計が悪い場合もあるけど、
提供する機能が多いっていう場合もあるんだよな。
後者の場合、どんなやり方をとったとしても、大きなクラスかたくさんのクラスを作るかせねばならん。
クラスを使っても肥大化、テンプレートを使っても肥大化。言語仕様も益々肥大化。
むしろ C++ ユーザは肥大化を求めているんじゃないかな。実際どうかは別として、
肥大化すればするほど生産性が上がるという教義だから。
バグの生産性ですね分かります
別に肥大化したところで、使いたいと思わない機能は使わなきゃいんじゃね?
Bjarne氏もD&Eでそう言ってたし。「使わない機能はコストを発生させない」っていう
原則もあることだし。肥大化することで初心者が不幸になることもないと思う。
ただまぁ、何から学べばいいかわかりにくくなるor勉強する(べきだと思われる)ことが
多すぎてしょんぼりくる可能性はあるが。
肥大化はC++がというより
C#がという方がより適切と思うが
LINQとか
使ってる人間の殆どが肥大化嗜好だから、使いたいと思わない機能は
使わないという当たり前の選択を貫徹するのは不可能に近い。
>>318 まあな
使わないと選択する為には
少なくともその機能を知っておかなければ
ならない訳で、もうその時点でラーニングコストは
発生している。初めから無理なことを言っている。
プロの道具なので仕方ない。
プロでない人は自分が使いやすい言語を選ぶと良い。
言語の機能の習得ごときでいっぱいいっぱいなら、
組み込み系、DB、マルチメディア処理、ドライバ開発とかの
言語以外ので学習で鼻血出るだろうな。
プロキター!
プロならもっと道具を選べよ…
その4つの中で C++ が他の言語より優れているのって
マルチメディア処理だけだな。
でもすべての言語をその4つの平均点で比べるとC++はかなり有能だろ
>>321 その他の言語ってのそれぞれ教えてくれないか?
C言語以外でw
324 :
320:2008/04/27(日) 15:01:09
>>321 どう読んだのか知らないが、俺の趣旨は
・学習用の言語でないので、言語機能を理解力の低い人に合わせる必要は無い。
・言語の機能の習得と、専門知識の習得では、後者の方が難しい。
ということなんだが。
その4つは例を挙げたに過ぎないし、
それらにC++が適しているとも言っていない。
特にDBは俺が最近DB周りのチューニングとかしてたので、
たまたま脳裏に出てきただけだ。言語はC++じゃない。
道具を選べ、というのは同意する。
他のメンバーやプラットホームの都合があるので、
好きに選べるわけじゃないけどな。
>>323 C++ 使いには C にコンプレックス持ってる人間が多いな。
道具は使いようだぜ。
組み込み(つっても色々あるが…) -> C
DB(まあ Oracle だと思いねえ) -> Java
マルチメディア(画像処理とか) -> C++
ドライバ(Win は知らんけど…) -> C
>>324 分野別の知識は言語の習得とは直行した課題だと思うよ。
専門知識の習得は、言語が難しかろうが簡単であろうが必要となる事なんだから、
言語の習得は簡単な方が良いとも言えるんじゃないかな。
ところで、上の方でOO云々語ってる奴らはJavaやらC++の
対象.メッセージ(値,値);
構文しか知らんのだろうな、例えば
[対象 メッセージ:値 メッセージ:値];
やら
Send(対象,メッセージ,値,値);
とか、
メッセージ(対象,値,値);
(メッセージ 対象 値 値)
なんかを知ってればもっと増しな議論が
出来るだろうに。
せめてクラスや継承は必要悪でありOOの本質でないと気付いて貰いたいものだ。
328 :
デフォルトの名無しさん:2008/04/27(日) 16:43:41
>>327 確かにそうだがC++で
template<class T>void F(T &対象)
{
対象.メッセージ();
}
//対象1と対象2は同じメッセージを持つ
//意外何ら関連性は無い
型1 対象1;
型2 対象2;
//Fは対象が何であれ構造を気にせず
//処理を行える。
F(対象1);
F(対象2);
という文を見ると、静的ではあるが
メッセージを意識せざる得ない。
アラン・ケイがRubyを誉める理由も
これを動的且つ素直に実装できる事が
一因しているように思う。
>>325 > C, Java, C++, C
完全に予想通りの回答ありがとうw
>C++のOOでメッセージを持ち出してくるのもどうかと思う。
もともとC++はオブジェクト指向できるようにはできていないんだよ、だからSTLなんだ。
しかしオブジェクト指向を考えるならメッセージを考えないというのは論外。
自分は 326 じゃないが
>せめてクラスや継承は必要悪でありOOの本質でないと気付いて貰いたいものだ。
これはオブジェクト指向においては核心部分だぞ。
C++使ってる奴がCにコンプレックスってのは考えられないな
C95とは基本的に互換だから、気にするのはC++の構文が使えない程度
C99との差異は理解の上では大したことないし
精々STLが使えなくて面倒ってとこだろ
>>330 そうなのか?
327のとこにはこう書いてあるけど。
> ストラウストラップの「ユーザー定義型の」オブジェクト指向
中略
> なお、この文脈の「オブジェクト指向」において、メッセージングはぜんぜん関係ない無用のもの
> and/or 動的性実現のための(仮想関数より効率の悪い)実装のひとつに過ぎない…
> ということを強く意識する必要があります。
>>332 そいつらってどういうコンプレックス持ってるんだ?
「ポインタ分からないのでstd::vectorとか使わないと可変配列も作れません」
とかの馬鹿はC++分かってるとは言わないし
そうかなあw
ポインタ本の人(前橋)の意見じゃないけど、メッセージ云々こそ「言い方を変えただけ」
に過ぎず本質と何も関係ないと思うけど。
>>331 折角苦労して C++ 覚えたのに C で何の問題も無い事を見せつけられたら
僻む気持ちも出てくる事だろうさ。今までの努力が水の泡だからな。
上には Java 下には C で居場所無いもんね。生産性重視なら LL があるし。
>>336 >折角苦労して C++ 覚えたのに
そういう可哀想な連中は先々で躓くから気にしなくていいだろ
おそらくC++開発者としてもあまり役に立たないだろう
というか今日日、JavaやLL系も使えてもらえないと
流石にC++しか出来ませんじゃ困るだろ
>>332 >>335 実装と理論は違うがな。
たまたまC++は実行コストから
関数≒メッセージレシーバの方式を
採っただけで本来メッセージの受信者は
PCの周辺機器やら、ネットワークの
向こう、はたまた操作するユーザーでも
構わないんだから。それらを抽象化して
クラスやプロとタイプと言うアプローチ
も構わないが根底にメッセージ概念が
有る事を意識する事は重要。
(故に単にメソッド&クラス脳の
Java屋はOO世界から馬鹿にされるんだがな)
Cを理解していればC++は0からよりは早く使えるようになる。
C++、Java、C#のどれかを理解してたら、
他の2つもすんなり使えるようになる。
JavaScript、Python、PHPなども同様。
宣言型言語に対してはともかく、
他の命令型言語に対してそれらの知識は水の泡にはならないと思う。
水の泡になるくらい応用力無いならPG向いてない。
>>340 338ではないが、327 の考え方はゆがんでいると思うので、どうかな?
もっとシンプルにオブジェクト指向をとらえないと訳わからんようなるよ。
具体的にどう挙動するかなんて見たら、全部チューリングマシンになっちまう、そんなの意味無い。
歴史を紐解いたら、紆余曲折して進歩した以上、全部オブジェクト指向になりかねない、そんなの意味無い。
> 具体的にどう挙動するかなんて見たら、全部チューリングマシンになっちまう
同じように、342の言う「もっとシンプルにオブジェクト指向をとらえる」を当てはめれば、
全部メッセージになってしまう気がする、Cの関数呼出やアセンブリでのジャンプすらも。
どっちも次元や方向性は違えど、極論すぎるという点では同じと感じた。
>>343 言葉の定義なんだから、今主流的に言われている物でいいんだよ、変な事は考える必要はないかと。
オブジェクト指向はともかく、
メッセージって言葉は主流だと思えないけど。
>>341 アレは読んだが、アレを鵜呑みにする限り
C++=OOを理解しないタコ
と言うレッテルは消えないだろうな
(まぁ、実際テンプレートにハマってしまえば
そんなレッテルはられようとどうでも
よくなるが…)
だが、Cで掛かれたドライバですら意識して
設計されてるんだ。言語に捕らわれ
設計思想として意識しないのは勿体無い。
C++はオブジェクト指向以外にもいろいろ広範囲に可能なことや思想が入っているから
オブジェクト指向ができないから駄目だという事にはならない訳で・・・
奇妙なオブジェクト指向は問題とは思うが、C++を知らないというのはさびしい話だね。
逆に、純粋にOOだけやっていたいというのであれば、
C++を使わないのもある意味正解。誘惑や罠が多すぎる。
349 :
デフォルトの名無しさん:2008/04/27(日) 18:40:20
クラスの肥大化防止はどうしたんだよ。
>>343 制御構造なんてのはメッセージを
受け取った相手の振る舞い又は
伝達手段の一部。
メッセージは多態であり抽象的な
もので、制御そのものをメッセージと
捉えるのは違うと思う。
>>346 340で書いた通り否定する気は無いけど、
327の先にある「このどれに軸足を置くかの違いでしかない」のところは正しいと思う
シンプルに捉えるのは良いけど、あんまり突き詰めると逆に混乱するぞ
オブジェクト指向という言葉が厳密に意味付けされてないからな
352 :
デフォルトの名無しさん:2008/04/27(日) 18:58:26
お前らスレタイ読めよ。
C++の話なんだからそんなもんどうでもいいだろ。
全ては関数
全ては入出力
全てはオブジェクト
全てはメッセージ
全てはリスト
>>352 まともなOOが出来ない→C++イラネ
→否意識・設定の仕方の問題だ
↑の流れと見ればスレタイの範囲では?
355 :
354:2008/04/27(日) 19:06:06
設定じゃなく設計だったスマン
356 :
デフォルトの名無しさん:2008/04/27(日) 19:09:56
じゃぁ、まともなOOはできないが素直なOOができるってことにしとけ。
357 :
デフォルトの名無しさん:2008/04/27(日) 19:20:35
てかよくよく考えたら別にOOじゃなくたってC++だったらいいんだ。
C++まんせー!
そうやってアイデンティティが一つ一つ消えていくんだな…
359 :
デフォルトの名無しさん:2008/04/27(日) 19:48:44
ところで、昨日ブレークポイントで止めてから丸一日が過ぎようとしているのだが…
おれ何やってたんだろ。
折角苦労して C++ 覚えたのに C で何の問題も無い事を見せつけられたら...ってそんなわけあるかぼけぇ!!!
こちとら、趣味でC++覚えたが、Cよりも便利で感動しとるわ!!!
少なくとも、Windows用のフレームワークを自作すれば、「Cで何の問題も無い事なんて有り得ない」って気が付くはずだが
オブジェクト指向とか言って、気構えているから難しいんだよ
ライブラリの読み書きの仕方程度に思ってりゃ楽勝さ
362 :
デフォルトの名無しさん:2008/04/27(日) 20:00:28
>>360 とはいえ、Windowsには独自のOOがあってCでも困らないという。
C++ いろいろな物が限界に達しているからな
コンパイルは遅いし、リンクも遅いし、言語もこれ以上の拡張はヤバすぎるし、ライブラリの混沌ぶりも尋常でないし、まともな開発補助ツールはないし
実用的オブジェクト指向をこの世に出現させ、これは他の言語で開花した。
以後の最大の成果としては template プログラミング、これも他の言語へ移行中。
一通り終わったら、次の世代に託して静かに消え去ってもらうのが良いと思うよ。
364 :
デフォルトの名無しさん:2008/04/27(日) 20:04:41
>>363 まぁまだ先の話だしな。
おれが先かC++が先かってくらい遠い将来の話だろ。
C++が死滅するのは。
今からそんなこと考えたって無駄だな。
>コンパイルは遅いし、リンクも遅いし
この二点だけで終わってるよ、マジしゃれならんレベルにまで落ち込んでる。
業務で使っているなら、他の言語にも触ったことがあるなら、深刻さは分かるはず。
少なくとも、templateがADAを除き
完全に他に移ることは無いと思うぞ。
他の言語に
class Container<type>
{
priverte type member;
public type pop(){…}
public void push(type x){…}
}
なんて構造があってもtypeは(void*)
と変わらんからな。呼び出し時
Object obje;
Container<Object> list;
list.push(obje);//○
list.push(3); //×
のように制約が加えられるだけ。
恐らくこの先もコストがデカすぎて
実行時にクラス内の構造が変わる
コンパイル言語はでてこないだろ。
次がないからみんな困ってる
368 :
デフォルトの名無しさん:2008/04/27(日) 20:27:39
>>365 そこで分割コンパイルとプリコンパイルドヘッダを活用するってことだな。
>>368 そこまでやっても話にならない現状を一度他の言語をみて思い知っておくといいと思う。
>>362 それで困るから、フレームワークを自作するんだけどな
個人で使う分には、MFCやWTLほど大げさじゃなくてもいいし
c++の資産って他の言語から使えんの?
.netだとc++/cliでラッパー作って・・・ってするらしいけど
cだと普通に呼び出せたりするのにな
>>371 通常はCOMにする、ATL使ったら一発。
VBだろうか、VB.NET だろうか C# だろうが、死滅しかけのその他.NET言語でもイケる。
>>371 そりゃ使えるでしょVBからでもC#からでも
374 :
デフォルトの名無しさん:2008/04/27(日) 20:48:53
>>369 上から目線だw
C++使いは盲目的でC++しか使ったことがない教団の人ですか?
オープンソースのアプリに C++ のコードが混じってると
コンパイルがスローモーションになるから直ぐ分かるw
376 :
デフォルトの名無しさん:2008/04/27(日) 20:53:30
死滅しかけと言えばJ♯はどうなったんだ?
377 :
デフォルトの名無しさん:2008/04/27(日) 20:56:47
>>375 ビルドしかしないからそう見えるのでは?
修正→ビルド→…って繰り返してれば分割コンパイルや
プリコンパイルドヘッダの効果が出るよ。
確かにもうちょっと早くなってくれればいいんだけどねぇ。
>>377 そんなの当然やっての話ですよ。
どれほどの差があると思ってるんですか?
>>376 死滅がどうとかいうステージにすら立てないだろうその題材じゃw
>>368 Boost.SpiritとかBoost.LambdaとかP-Stade.Ovenとか
分割コンパイルとプリコンパイルドヘッダではどうにもならないんだが。
LambdaだけはC++0xで用済みになってくれるが。
>>366 Dのテンプレートはそんなんじゃなさそうな雰囲気。
Dを取り巻く環境(ツールやライブラリ)でまだまだ移ろうという気にならないけど。
つかC++のビルドって、リンクだけでお話しにならないからな
オープンソース戦士登場!
自由のために戦いまっす!!!
ソースダウンロード!まけまけいんすとーる!
おっせ〜〜〜!C++だっせ〜〜〜!
↑
こんなのに言い負かされてしまうw
383 :
デフォルトの名無しさん:2008/04/27(日) 21:03:37
>>378 ほ〜〜。
じゃぁ君はC++のとこだけ遅くなるからすぐわかるってくらい
全面的に修正してからリビルドするのかね。
そりゃぁすごいもんだ。
>>383 まぁ、井戸の外出た時にでもカルチャーショク受けてくださいなw
385 :
デフォルトの名無しさん:2008/04/27(日) 21:06:03
>>380 spiritは駄目だな。
あれはやりすぎだ。
変態的だとは思わないけどな。
386 :
デフォルトの名無しさん:2008/04/27(日) 21:08:06
>>384 遅いのは誰でも知ってることなんだよ。
使ってる人間が一番困ってるにきまってるだろうに。
>>383 コアな所を修正してたら再ビルドは全体に渡るんじゃないの。
>>387 プリコンパイルヘッダを限界まで効かせても、コンパイルが多方面に渡らなくても十分遅いからw
389 :
デフォルトの名無しさん:2008/04/27(日) 21:11:05
>>387 オープンソースのコアなとこを修正してビルド。
>>371 D言語の作者は制限無しにリンクするのは無理っていってる
多重継承とか例外周りが難所らしい
MFCだけどビルドのみだとチグハグなコトに・・って経験が何回もあると
ちょっとした変更でもリビルドやりたい病にかかる
392 :
デフォルトの名無しさん:2008/04/27(日) 21:16:19
MFCはビルド早いからいいけどな。
テンプレート駆使されると極端に遅くなるよな。
C++のビルドで、深刻な点の一つは参照先のobjが増えた時にリンクが加速的に遅くなる点だな。
独立プロジェクトが三個・四個になったら平気で5分となるが、この時間だけで C#やVBなら五回全ビルドできる。
まぁ、小さいプロジェクトを使っているうちは問題ないかもしれんが。
もちろんコンパイルその物の大変深刻ではあるが。
394 :
デフォルトの名無しさん:2008/04/27(日) 21:24:10
C#は恐ろしいほど早いと思ったけどなぁ。
でるひのほうがさらに早いって言われたなぁ。
ポーランドの製品はコンパイルが速くて高いオプティマイズが売りだから、そりやそうかと。
それがなかったら買い手がつかない。
396 :
デフォルトの名無しさん:2008/04/27(日) 21:28:22
spiritもだいぶ頑張って使いこなせるようになってきたけど、
結論としては使わないほうがいいな。
397 :
デフォルトの名無しさん:2008/04/27(日) 21:33:08
以前この板でcaperっていうのが出てきて期待してたんだけど、
だいぶ叩かれて作者もちべーしょんうしなったみたいだな。
いくつかバグはあるけど動作に問題はないしもう少し作りこんで
ほしかったけどな。
あれなんでたたかれてたんだろな。
コンパイルする言語としてはC++とJavaとC#を使ってるけど、
コード量に対するコンパイル速度に大した差は無い。
そんな差より、俺のPCと先輩のPC(自腹で強化)との
コンパイル時間の差が有り過ぎ。
Core 2 Quad + メモリ3G でクソ早い。
俺のPCで30秒以上掛かるのがマジ5秒くらいで終る。会社PCのスペックじゃない。
>>393 毎回フルビルドしてるの?
もし差分でそれならソースやばいんじゃない?
400 :
デフォルトの名無しさん:2008/04/27(日) 21:39:50
>>399 だからリンクだけって一生懸命かいてる、コンパイル0秒としてだ。
401 :
デフォルトの名無しさん:2008/04/27(日) 21:39:55
>>398 C++とJava・C#だとだいぶ開きがあるような。
spiritなんかF5押すたびにお茶が飲める。
かといってJavaでspiritみたいなことできるかっていうと、もっと
面白みのないものになるだろうけど。
402 :
デフォルトの名無しさん:2008/04/27(日) 21:41:28
流石大人は違うなw
お前等どんなにボロイPCつかってんねん
もっといいPC買えよ
リンクで5分とか掛かり過ぎじゃね?
.dllとか.so無くて単一の実行バイナリ作ってるとかだったら吹くけど
>>398 俺もよそのCore 2 Quadでコンパイルしてみたことがあるが、
まるでC#やJavaのコンパイルみたいにC++も早いんだ。
こういう環境ならSpiritも楽しく使える。
こういう環境ならプリプロセッサも要らないと思える。
ちなみにC#だとまるでインタプリタのように一瞬で実行され始める、
コンソールプログラムだからあまり参考にならないかもしれないけど。
407 :
デフォルトの名無しさん:2008/04/27(日) 21:49:31
>>406 そんなに早いのか。
マシン性能って大事なんだな。
408 :
デフォルトの名無しさん:2008/04/27(日) 21:50:37
> こういう環境ならプリプロセッサも要らないと思える。
これどういう意味なんだろ??
釣りなんかな。
まあCore2Quadなら50倍速ぐらい平気ででるかならw
>>404 もともとC++はしょぼいコンピュータでも使えるように
仕様作っていたはずなんだけどな。
今や高性能PCでないと使えないなんて何たる皮肉。
個人で手が出せるだけまだましか。
>>408 ごめんプリコンパイルドヘッダの間違いだ。
察してくれよ。
412 :
デフォルトの名無しさん:2008/04/27(日) 21:52:53
> こういう環境ならプリプロセッサも要らないと思える。
> まあCore2Quadなら50倍速ぐらい平気ででるかならw
オープンソース厨が嫌われる理由がなんとなく垣間見えた。
C++はDLL化しづらいのがきついところだな。
俺の趣味ライブラリはライン数が約7万の
全てスタティックライブラリで、フルビルドに8分ぐらいか。
CPUはセロリン1.4GHz
ばかやろう
開発機は昔から高性能だっちゅうの
>>410 原因のうちの一つは、プリプロセッサ
昔はこれにより大幅な高速化と利便性を得ることができたが、影響するものに全部インクルードすると、数が増えると指数関数的に遅くなってしまう。
その2は、objの形式の問題。
オブジェクト指向的なコードに対応する構造ではないから、ひどい有様になっている。
いずれも、昔は軽量であったものの、実は計算オーダーの問題がヤバかったと。
まぁ、全員Quad以上にしろってのは、ちょっと酷だけどw
開発マシンのスペックを上げるのも必要だろう。
ユーザーからの要求が高度化して、プログラムも複雑化・大量化して
それに応えるために言語も高度化していく。
さらに単価は抑えられてるから、生産性も求められる。
だからマシン強化も必要だろう、と俺は思う。
417 :
デフォルトの名無しさん:2008/04/27(日) 21:57:16
趣味ライブラリで7万ってすごいな。
マングリングってなんで統一しないんだろな。
できないのかな。
人のVC++ 2005プロジェクトが
いくつか静的LIBに分けて並列ビルドするようにするのを見て、
頭いいと思った。
サーセン
>>414 俺のPCだって買った当時はそこそこ高性能だった、はず……。
今じゃ俺のPen4 2.6Gは雑魚マシン扱いです
>>415 プリプロセッサで大幅に高速化ってどうやるの?
このスレには、アンチMSが一人、紛れ込んでるようですね
これからの言語は計算量のオーダが爆裂しないようになってないと厳しいっすよ
どんどん規模でかくなるし。
415がobjの問題を挙げているが、
今から新しいobj形式を作れないのかな?
ついでにexport templateへの対応が容易とかあれこれやっちゃって。
まあ焼け石に水だと思うけど。
426 :
デフォルトの名無しさん:2008/04/27(日) 22:05:57
>>423 確かによく読むとおかしなことをそれらしく書き込んでる子がいるけど、
アンチMSと何の関係があるのかさっぱり。
427 :
デフォルトの名無しさん:2008/04/27(日) 22:06:57
プリプロセッサで大幅に高速化ってなんだろ?
428 :
デフォルトの名無しさん:2008/04/27(日) 22:07:54
>>427 GNUがやってる、全ファイルをあらかじめ一本に結合してからコンパイル。
互換性の問題があって難航している。
関数マクロを使えば、インライン展開されるから
普通の関数より実行速度が速いってことではないか?
今はインライン関数があるから要らないな。
C++からC言語の悪い部分を取り除いた、ネイティブコード吐ける言語がほしいな
431 :
デフォルトの名無しさん:2008/04/27(日) 22:12:43
>>428 CPPとは別のプリプロセッサがあるのか。
それをやると、objごとにコンパイルするとかできなくなるんじゃないの?
ファイル数が減ると極端に速度が上がるのは検索システム作った時に経験したけど、
なんか逆向き行ってるような気がしないでもない。
んなことしたってさしてメリットのない非互換C++が増えるだけだろ。
>>431 仕組みでポカすると、それだけ深刻って事
アルゴリズム軽視するべからず。
434 :
デフォルトの名無しさん:2008/04/27(日) 22:15:14
436 :
デフォルトの名無しさん:2008/04/27(日) 22:19:25
まぁRuby最高って書いとけばいいみたいだな。
>>433 つまりジェネリクスはダイナミズムで桶ってことですか?
438 :
デフォルトの名無しさん:2008/04/27(日) 22:30:32
趣味でやるならC++だが、
仕事では、絶対に使いたくないな。
バカが一人居ると、まともなものが完成しなくなる
439 :
デフォルトの名無しさん:2008/04/27(日) 22:36:21
2チャンネルももうだめかもなぁ。
前はたまに賢い人がいたもんだけど、最近は呆れてすぐ帰っちゃうな。
全員で釣竿垂らしてるような状態だな。
>バカが一人居ると
敷居が低い言語程、バカによるダメージが小さいってのはあるな。
バカが居た場合のダメージは
C++ >>> Java > PHP
個人的な経験からだけどね。
でもまともなメンバーならある程度逆になる。
ライトウェイト系も悪くは無いけど、コンパイラの助けが少ないからね。
Javaも大人数でやれるけど、
パフォーマンスの問題が出たときとか結構大変だった。
>>439 まじで。プログラム板すごくレベルが低い。見てられない。
昔からこの板のレベルは大したことなかったろ。
443 :
デフォルトの名無しさん:2008/04/27(日) 22:42:06
>>442 いや、そんなことなかった。
まえは、なんだかんだいって煽りあいつつもまともな議論をしてたよ。
それなりのバックグラウンドのある人が煽りあってたっていうかさ。
今は何だか知ってる単語並べてるだけみたいな。
なんだかなぁ。
キモいんだよね。
みみっちい言い合いばかりで。
がみがみ言うのもなんだけど、
ゆとりを持とうよ。あれこれ言われても
うざいなんて思わずに
なかよくやろうよ。
448 :
デフォルトの名無しさん:2008/04/27(日) 22:53:44
>>445 149: 人工ガッツ石松をプログラミングするヌレッド (16)
このスレなんか名スレだったんだろうなぁ。
おれの予想ではたった16レスで人工知能完成させたと思うぜ。
今の造るスレは
>>50までいかないで放棄されるからなぁ。
モリタポ使って見たけど、確かに16レスで完成してたなw
16 :デフォルトの名無しさん :03/08/18 00:00
main()
{
while(1)
printf("OK牧場\n");
}
450 :
デフォルトの名無しさん:2008/04/27(日) 22:59:06
>>446 いやそうじゃなくてさ。
あおりあいは昔からすごかったぜ。
でも中身はしっかりしてたよな。
今って適当に相槌うったりしてるけど、バックグラウンドが透けて見えるじゃんか。
何書いてんだろこいつ・・なんて思いつつ、ほーそれはすごいねとか書きこんでるわけよ。
言ってみればリア中が多いんだろな。
リア中って昔はHSPスレにいて棲み分けできてたんだけどなぁ。
451 :
デフォルトの名無しさん:2008/04/27(日) 23:00:12
>>449 うけたw
ほんとに名スレだったんだなw
>>450 このスレタイは、そういう人を呼び寄せるタイトルだと思います。
453 :
デフォルトの名無しさん:2008/04/27(日) 23:05:06
しかし、見れば見るほど洗練されたコードだなぁ。
たった数行にガッツ氏のすべてが詰め込まれてるなぁ。
まぁ2chの性質上仕方ないかもな。
あとIDが出ないのがそれを加速させてる。
R15指定でおk
457 :
デフォルトの名無しさん:2008/04/28(月) 17:53:27
馬鹿っぽい書き込み発見!!!
そもそもC#からDirectXを呼ぶ公式な手段は消滅しました。
459 :
デフォルトの名無しさん:2008/04/28(月) 19:25:08
それが肥大化と
SlimDX
462 :
デフォルトの名無しさん:2008/04/29(火) 21:03:23
昔と比べて質が下がったとか言ってるけど
一番、質を下げてるのはその発言だってのは、お兄さんと君との「ひ・み・つ」だぞ!!!
テンプレートがソースに混ざると
なんか異物っぽいんだよねぇ なかなか慣れないですC++
テンプレートで異物感を感じてるようじゃ、C++0xなんか拒否反応だろうな。
テンプレートははまる
実際テンプレートだけ扱いや制限がかなり異なるからなぁ
467 :
デフォルトの名無しさん:2008/04/30(水) 13:37:16
>>467 コンパイル時解決を多用して
オーバーヘッドを極力減らすコーディングになってるんじゃないかね
C++を静的なPerlとして使ってる奴も少なからずいるだろう。
そういう場合はCの方が速い。
C++を性的な目的で使ってごめんなさい
詳細希望
(i)
->*
エロゲ屋くらいか、そういうの。
決して万人受けしない拡張がいくらか入ってるのはそりゃそうだけど、
クラスとあんまり関係ない部分も「便利C」程度にはなってんだから、そこらへん愛せばいいじゃない、とも思う
あとString関連とか。
C文字列の扱いなんて「理屈は分かり切ってるけど、まどろっこしい」人が使うにはちょうどいいだろうし。
(Stringから入ったりしたら怖いけど)
えーとStringってどこのnamespaceですか。
stdはstringですよ。
知ってるけどCStringその他あるから限定しないように書いた
は?
ほ
何にせよCの方が楽だけどね
デストラクタが無いCはまともに使う気しない
デストラクタなんて要らない
必要以上に高い所へ上がろうとするから、
落ちやしないかと心配になるんだよ
483 :
デフォルトの名無しさん:2008/05/01(木) 09:36:30
>>482は、malloc()しても、free()しない要注意人物
>>483はコンストラクタ/デストラクタがnew/delete時にしか実行されないと思っているうっかり屋さん。
>>484 使ったら、後始末をする
そんな当たり前の事をするのが、コンストラクタとデストラクタ
Cで、malloc()したらfree()するのとなんら変わらない
そして、明示的にnewをしても、明示的にdeleteするとは限らないのがC++
>>485 メモリだけじゃないってことを言いたかったんだけどね。
リソースリークはmalloc/freeのペアでは解決できない。
コンストラクタ/デストラクタっていろいろ応用が利くじゃん
ぶっちゃけ処理はみんな関数じゃなくて関数オブジェクトに分割すべきだと思えてきた
そして俺はきっとこの後関数型言語へ流れていく…
>>486 一行で、簡潔にどの環境でも起こりうる事を書けば
malloc()とfree()で十分伝わると思うが
伝わったから、newとdelete時しかって言ったんだろ?
つーかさ、リークはメモリだけじゃないつって
>>483に煽り入れるのが間違ってるだろ
そもそも、リークさせてるのは
>>482なんだから
双方の主張の意味が分からないのは俺だけですか。
RAIIとか自動変数が分からないってことではなく。
少なくてもコンストラクタ/デストラクタ無しなんて
ありえないってことは分かったろ?
C時代もmallocで確保したメモリをまとめて管理できる
ポインタリスト作ってたよ、俺は。
>>488 >そもそも、リークさせてるのは
>>482なんだから
文字列如きでデストラクタ使わないとリークさせちゃう奴なんかいねーよ
それともあんたはそうなのかい?
>>491 すげー自信だな
文字列如きでリークなんかしねーよなんて口が裂けても言えないなぁ
メモリの確保が単純にmalloc()すればいい保証なんて何処にもないし
おそらくスタック上にchar string[30];とかしてオーバーランさせまくってんじゃないか
文字列如きでリークさせちゃう
>>491が居るから
C++でvectorとかstringとか出来たのにな
うちにも注意しとけばリークなんて起きないと思ってる爺がいるよ
>文字列如きでデストラクタ使わないとリークさせちゃう奴なんかいねーよ
すとりんぐって一応スマートポインタの仲間よね と最近思った
資源管理オブジェクトとスマートポインタは違うんじゃないかと。
逆参照を抽象化するものがスマートポインタなのでは?
498 :
デフォルトの名無しさん:2008/05/01(木) 14:29:50
いちいち注意してないとリークするWindowsがおかしいんだろ。
おれはLinuxで一度もリークしたことない。
ハァ?
アクセス違反ごときでOSごと落ちる窓95の事言ってるのならわかるけどw
むしろWindowsとの互換性のためにデストラクタがあるようなもので
Windowsさえなかったらデストラクタは必要なかっただろうな。
え??
DigitalMars の D ってどうなんかなー
>>498 > おれはLinuxで一度もリークしたことない。
「俺は生まれてこの方嘘を吐いたことがない」に負けない位、信用ある言葉だなw
意味わがんねー ネタだとは思うけど
Windowsって確かMFCとかでウィンドウ系オブジェクトはこちらのnewではなく自動の動的生成に任せて
ウィンドウとしての寿命の終了に合わせて勝手に破棄される、とか妙なルールあるよね 嫌いじゃないけど。
505 :
デフォルトの名無しさん:2008/05/01(木) 14:54:35
>>504 わからないならレスしないでください。
Linux使ったことないんだろ?
>>503 まぁ、低スキルな自分を「普通」と思いたい人には、その二つが同じような言葉に見えるよね。
507 :
デフォルトの名無しさん:2008/05/01(木) 15:02:35
そりゃ、こんぴゅーたーがあるにも関わらず、自分の頭でかんりするような高スキルな人とは話があうわけがないw
malloc()とfree()って
fjかここは
>>507 誰でも何かをこんぴゅーたーにかんりしてもらいつつ、自分でも何かをかんりしてて、
違うのはその内容なんだから、自分のあたまで何かをかんりしてる図そのものを取り出しても、
意味のある返しにはならないなぁ。
510 :
デフォルトの名無しさん:2008/05/01(木) 16:33:03
仮に、「俺はデストラクタを書いたことがないからデストラクタが不要だ」と言うならば
「馬鹿は死ね」と言いたい
仮に、「メモリやリソースの管理位、デストラクタを使わなくても出来るだろう」と言うならば
「会社辞めて僧侶になって、鬱で自殺した人たちの供養をしろ!!!」と言いたい
↓釣り宣言
↓幼稚な煽り
浜辺で見知らぬおじさんが僕を釣り上げビックリしてた
プロセスが落ちても、プロセスが持ってたメモリやリソースを開放しきらない、
昔のWindowsの話をしてる奴が居る予感。
他の人はプログラム上でのリーク、開放してないメモリのアドレスや、リソースのハンドルをロジック的に見失うことについて話してる。
長時間稼働し続けるサービス、デーモン、組み込み系のプログラムでリークは普通に致命的。
プロセス終了時にOSが開放するとか全然関係無い。
1941年12月8日に日本が真珠湾を攻撃し、太平洋戦争が始まると、
ヒトラーはその直後の12月11日の演説で
「我々は戦争に負けるはずがない。
我々には3000年間一度も負けたことのない味方が出来たのだ!」
と日本を賞賛し、アメリカに宣戦を布告した。
「ヒロポンでは戦争に勝てない。」まで読んだ。
518 :
デフォルトの名無しさん:2008/05/01(木) 17:09:27
Windowsがへぼいからデストラクタが必要になるだけで、コンピューティングの
本質とデストラクタは無縁。
デストラクタはないほうがいいのだから、Windowsに合わせる必要はない。
結果、Windowsを使ってはいけないという結論が出てる。
>>518 釣りはいいよ、もう
君だって、デストラクタは使わないにしても
デストラクタ的な、xxx_dispose()のような関数作って
使ってるんだろ?
一緒だよ、むしろしょぼいよ
521 :
デフォルトの名無しさん:2008/05/01(木) 17:21:38
>>519 > xxx_dispose()
これでは語順がおかしいだろう。
人に意見するなら最低限の知識を仕入れてこい。
最低限、Ubuntuくらい使いこなせないと話にならない。
>>521 昔のCはクラスや名前空間がないから
そういう風に表すのが一般的「だろう」と
まあ想像なんだけどねぇ。
例えば、タイマのサービスなら
timer_initialize()
timer_get()
timer_dispose()
とか。
あんたさぁ本当にCプログラマ?
C++規格策定時からあるものでwindowsとか関係ねーし
atexit はデストラクタ的だ
>>518 あんたの脳内では「デストラクタは無いほうが良い」が不動の真理であるようだが
みんな「そんなことないんじゃない?」って思ってるんだから
まずはなぜ「デストラクタは無いほうが良い」のかを説明してくれないか。
『僕はデストラクタが無いと文字列操作も出来ないです』
『asprintf() を知らないので、C は怖くて使えません』
↑これに該当しない人はこのスレにはいないみたいだな…
むしろGC無いと組む気がしない
例外あってデストラクタ無いとコードが膨れ上がっちゃうな。
釣りってことにしないと真っ直ぐ歩けないのかな
何故釣り呼ばわりされるか、自覚無いだろうけど、
相当痛いこと言ってるんだよ、お前は。
つまりデストラクタが無いと何も出来ないんだな
そこまで染まっちゃうと冷静な比較も無理だろう
>>531 釣りってことにしないと、ホントの本気で馬鹿にするしかなくなるからでは?
デストラクタ君もデストラクタが無いなんて有り得ないの一点張りでしょ。
もともとまともな会話が始まる余地が無い。
釣りとかネタとか言う前に地の議論がお寒い。
>>536 全体を等しく腐してドロー狙いですか?w
いや、あんたの所まで落ちるつもりは無いよ。
盛り下がってまいりました
最早 C++ とは関係が無いな
釣りではなく本気だとしたら、哀れすぎて手が出せない。
>>536 機能についての雑談は良いんじゃね?スレタイ的に。
>>537 しょうがないから真面目に相手するよ。
まずRAIIについて軽くググってくれ。
とりあえずそれが代表的なデストラクタの利点だ。
不要と思う理由を頼むよ。
OSは関係無いからね。
それと、ここのスレタイ見て来たC++ユーザーに、
>>527に該当する奴はまず居ないだろう。
初心者スレとかには、そういうのも居るだろうけどね。
>>538 お寒い返し乙。
残念だったね一人負けでw
javaやC#も採用したってことは必要なんでしょ。
C++ がもう少しまともな言語だったら良かったのにとつくづく思うよ。
javaとc#にデストラクタは無いよ。
ファイナライズは事実上別物。
ただし、そこを補完するため、
javaはtry-finally、c#はusingが用意されてる。
>>545 具体的に書こうぜ。
ただ「駄目」とだけ書くのは誰でも出来る。
>>545 誰かが(いずれかの言語が)やってみなきゃならなかったことを
やる役だっただけさ。
>そこを補完するため、
足りなかったんですね。
>>546 なんで無用なものに対して「補完」する必要があるの?
無用なら全く無くしちゃってもいいじゃん。
>>549 はい、足りなかったんです。
GCでメモリは回収出来ますが、リソースは無理でした。
>>550 え?なんで無用なの?
ファイルとか閉じれないとヤバいでしょ?
>>546の途中の改行はミスだから気にしないでね。
文は繋がってるよ。
553 :
デフォルトの名無しさん:2008/05/01(木) 21:29:39
だからWindowsが糞な実装だから必要になってるだけで、まともな実装では
必要ないだろが。
お前ちゃんとLinux使ってから発言しろよ。
Linuxも使えない雑魚が。
>>524 MSC7.0/VC1.0発売は1992年で、結構早い時期に登場したC++コンパイラ、
C++がISO認証されたのはもっと後
>>553 なぁ、
>>515読んでもOSが関係無いってことが分からないか?
それとお前以外がLinux使えないって思い込んでるけど、それも間違い。
BSD派だからペンギンは使え(わ)ない。
コンストラクタとデストラクタでログ吐くモジュールとか
破棄時に遅延評価を行うプロキシクラスとか
デストラクタなしでどうすんの?
ファイナライザでやれ、つうのは名前変えてるだけで同じだね。
あ、もしかして
デストラクタ(ファイナライザ)の有用性は認めるが
そこに資源破棄の役割を持たせる必要は無い、という主張なのかな?
一考には価するかも。
>>553 それと、まさか勘違いはしてないだろうけど、
こっちはデストラクタが無いとプログラム組めないとか
そういう主張はしてないからな。
ガベージコレクタ無くても組めるのと同様。
OS関係ないだろ
寧ろ基幹鯖とかで致命的
560 :
558:2008/05/01(木) 21:43:44
555=558
mallocやnewで借りたものは
Win9xですら終了時にプロセス空間ごと更地になるわけで…
いつのwindowsの話かと
結局デストラクタは無くても良いという事で全員の意見が一致したなw
プロセス終了までリソースを解放しない人は誰ですか?
しかし何でWindowsとLinuxを比べてるんだろうか
言語の違いで言うなら、GCのある言語ではデストラクタがほぼ空になるから
GCの無いC++を批判する気持ちは分かるんだが…
反論出来なくなったら勝利宣言とは・・・。
釣りじゃなかったら、すごい哀れだな・・・。
あれあれ、まだデストラクタが無いとプログラム組めない人が居たのかな?
568 :
デフォルトの名無しさん:2008/05/01(木) 22:00:15
オブジェクト指向にデストラクタが本当に必要か考えてみるがいい。
Windows使ってると頭おかしくなるのか?
なんでここまで説明してやらないとわからないんだろう?
オマエより頭が良くて偉い人が必要だと判断したからな
for文て何のためにあるの?
while文で十分じゃん
いや、末尾再帰の最適化があればそれで十分だ
何故OSが関係無いことを理解出来ないのかが分からない・・・。
シックスセンスじゃないけど、
見たいレスしか見えないんだろうか。
デストラクタといえばDのscope(…)文が羨ましい
>>570 いやいや。Goto文かJump命令で事足りるぞ
asmキーワードでイナフ。
577 :
デフォルトの名無しさん:2008/05/01(木) 22:13:34
>>572 だからLinuxなら全然問題なく完璧にできるっつってるだろ。
なんでわかんねんだ。
これだからM$信者は駄目なんだよ。
>>504 それMFC固有のことで、Windowsは関係ない。
UNIXでもLinuxでもWindowsでも、CやJavaで問題無くソフトウェアは作れるけど、
メモリリークしていい理由にも、C++にデストラクタが不要だという理由にもならない。
>>577 mallocしたメモリやopenで得たファイルディスクプリタが
プロセス終了時にOSが解放したり閉じたりしてくれるということを言っているなら、
Linux/Unixプログラマだって、OSに任せないで
自分で呼んだりデストラクタに任せる奴は当たり前のように存在する。
デストラクタをメモリ管理にだけ使っていて、
デストラクタを使わないとメモリリークが止まらない
プログラマが居るだけだお!
>>577 mallocで10bytr確保したとしよう。どうやってそれを開放するのか教えてくれるかな。
583 :
デフォルトの名無しさん:2008/05/01(木) 22:22:54
>>582 そんなことも知らないのか。
M$信者は達者なの口だけだな。
教えて!
さつき先生!!
586 :
デフォルトの名無しさん:2008/05/01(木) 22:28:52
多分free()とかOSが解放してくれるとか言うんだろうな
デストラクタ無しだと例外処理とかどうするんだ
そこは『OOM Killer が根こそぎ回収する』だろ
589 :
デフォルトの名無しさん:2008/05/01(木) 22:38:26
お前らはカーネルのソース読むとこから始めたほうがいい。
C に例外処理なんて無いし要らん
110レスか…
もう終わりか…
結構皆頑張って説明したけど、全然話が通じなかったな。
久々に真性というものを見た・・・。
まだやってんのかよ…
まとめ。
>>482 降臨 「デストラクタなんて要らない」
>>491 「文字列如きでリークさせる奴なんかいない」
>>498 「Windowsがおかしい、Linuxでリークしたことない」
>>500 「むしろWindowsとの互換性のためにデストラクタがある」
>>518 「Windowsがへぼいからデストラクタが必要になるだけ」
「Windowsを使ってはいけないという結論が出てる。」
>>527 C++ユーザーは皆、デストラクタが無いと文字列操作も出来ない
>>533 「デストラクタが無いと何も出来ないんだな」
>>553 「Windowsが糞な実装だから必要になってるだけ」
「Linuxも使えない雑魚が。」
>>562 突如、勝利宣言
「結局デストラクタは無くても良いという事で全員の意見が一致したなw」
>>566 「デストラクタが無いとプログラム組めない人が居たのかな?」
>>568 「オブジェクト指向にデストラクタが本当に必要か考えてみるがいい。」
「Windows使ってると頭おかしくなるのか?」
「なんでここまで説明してやらないとわからないんだろう?」
>>577 「だからLinuxなら全然問題なく完璧にできるっつってるだろ。」
「これだからM$信者は駄目なんだよ。」
>>583 「そんなことも知らないのか。M$信者は達者なの口だけだな。」
>>589 「お前らはカーネルのソース読むとこから始めたほうがいい。」
IDが無いので完全な抽出は不可能でした。
>>482氏の主張(想像)
・Windowsだとリークする
・Linuxだとリークしない
・プロセス終了時にOSが解放するから、解放は不要
※ 長時間稼動するソフトウェアについては返答無し
597 :
482:2008/05/01(木) 23:29:46
一応言っておくが Linux 云々は俺じゃないぞ。茶々入れはしたが…
中身の無い煽り合いに熱を上げるのも楽しいかもしれんが、程々にね。
ということは、Linux云々の人はデストラクタ関係無しに
「OSが解放するから、解放は不要」とだけ主張していたのだろうか。
600 :
デフォルトの名無しさん:2008/05/01(木) 23:39:15
そのスルー力は見習うべき・・・でもないなw
601 :
デフォルトの名無しさん:2008/05/02(金) 00:42:15
取り敢えず
>>482が、オブジェクト指向と、C++を理解してないのは判った
ついでに、RubyかJAVAを判ったつもりでいることも判った
彼と一緒に仕事するわけでもないんだしほっとけよ。
鯖毎(同じ鯖なら同じID)じゃなくてスレ毎でもいいからID欲しいな・・・。
騙り・自演防止とかじゃなくて、単純に議論or雑談での識別子として。
どのレスが同じ人のか分からないと、相手の考えも読み取り辛い。
例外がからんでくると RAII のイディオムなしで
(エラー処理込みの)正しいプログラムを書くのは
現実的にほとんど無理
あとこんな馬鹿のせいでLinuxが悪く思われるのは悲しいなあと思った
大丈夫だ
彼が馬鹿だからと言ってUNIX系が悪いなんて誰も思っちゃいない
C++の話がなんでOSの話になるんだろうか。
まぁ各種リソースに関しては
言語で組んでる側でポカやっても確実に対処してほしいところではあるな。
凄腕の釣り氏だったようだな
何だこの伸びは?
Windowsもプロセスの終了時にリソースは開放されるよ。
ハンドルリストにあるのがそのプロセスしか使用してなければ、
ハンドルの対象のリソースは開放される。
3.1とか想定してるんじゃないの?
プロセス終了では、プロセス内で立てた別スレッドは解放されなかったような。
スレッドが握ってるリソースも解放されない。
プロセスを終了したら、そのプロセスはなくなるのに、どうやってプロセス内のスレッドが生き延びるっていうんだ
>>611 スレッドは即死するからデストラクタは呼ばれない。でもシステムのリソースは開放される
もしかして彼は
コンストラクタ・デストラクタは使わず
ぜんぶ子プロセスを作ってOSに資源管理させろという主張だったのでは…
>>614 そして、書き込んだファイルの後ろが切れるOSは糞って切れるわけだ。
616 :
482:2008/05/02(金) 13:59:46
>>601 釣りなのかもしれんがw 俺じゃねえっつの。
妄想人格作り上げて悦に入るなよ…
もはやスレ全体がネタと化しているな。
618 :
482:2008/05/02(金) 14:06:06
C++ が欠陥の多い言語なのは議論の余地が無いからな。
昔は C++ が唯一無二の最高言語だと主張する奴も多かったが、
そういう輩は既に絶滅して久しいし、C++ の駄目駄目っぷりを
ネタとして楽しめる土壌が出来て来たんだろう。
とりあえず
>>526に返答してあげたらいいんじゃないかな
>昔は C++ が唯一無二の最高言語だと主張する奴も多かったが、
なことない。
最近の携帯OSが出るまでC++不毛の時代だった。
ブビ厨と最近のM$のダメっぷりに呆れたのと、
独自基板対応のためにC++が再度注目された。
621 :
482:2008/05/02(金) 14:24:32
>>619 518 は俺じゃないよ。
無闇矢鱈とレスを欲しがるのもどうかと思うよ。
スルーされると寂しいのかもしれんが、俺は関係無いし。
C++の優位性はtemplateだけだからなぁ
他高級言語でtemplate並みのメタプログラミングが出来るなら
C++を使う理由はなくなるな。
ネイティブコード吐ける云々はどうでもいいことだしな。
623 :
482:2008/05/02(金) 14:37:38
つ Common Lisp / Scheme
>>622 「俺にとっては」と付け加えといてくれ。
626 :
482:2008/05/02(金) 14:40:43
それじゃ文脈がおかしいだろ。聞きたい事があるならきちんと聞け。
>>626 なぜ「デストラクタなんて要らない」のかを説明してくれないか。
628 :
482:2008/05/02(金) 14:55:04
>>627 簡単な話。
Cではデストラクタが無くてもみんなプログラムを組んでるから。
それとも、
『デストラクタが無いCはまともに使う気しない』人が可哀想だね。
『デストラクタが無いとプログラム出来ません』なんて恥ずかしいよ。
つう感じでガソリンを補給して欲しいのか?
それは「無くてもなんとかなる」
だけで、「要らない」理由にはならない。
自動車、飛行機、原子力、etc
630 :
482:2008/05/02(金) 15:14:27
何だよ。言葉遊びか?
下らん。
ここはニュースグループか
>>628 >>529 >>587 >>604の通りでCには要らなくてもC++には必要。
で、
>>590と答える?
だとすると「デストラクタは要らない」じゃなくて、
クラス、例外、テンプレートなどのC++の機能が要らないってことでは?
それは単に「俺はC言語で十分」ってことだと思うんだけど。
違う?
>>631 反論の余地がなくなると国語辞典持ち出して単語の粗探しするんだよなw
ノイマン型コンピュータのプログラムを組むのに
Cを超える高級言語は不要ってこと?
んー以外に支持受けるかもしれんな
635 :
482:2008/05/02(金) 15:32:08
どうでも良い話だが「俺はC言語で十分だからデストラクタは要らない」
という文章は思い付かなかったのか? 元々そういう文脈だし、余程
国語が苦手じゃなきゃ自明だろ。
こんなどうでも良い話でよくこれだけ盛り上がれるな…
>>635 思いつくわけないだろw
何でピンポイントにデストラクタだけなんだよ。
C++要らない、とかなら分かるけど。
C言語はコンストラクタが無いから使えねぇ
639 :
482:2008/05/02(金) 15:43:31
cには不要。
c++には必要。
でFA
641 :
482:2008/05/02(金) 15:49:24
そうだな、そういやそういうスレだった
そもそもC++なんぞ窓以外では閑古鳥
つまり、正統派はCOBOLと言いたいのだな
C++はいらない子
でもCよりC++の方が明らかに便利じゃないか?
int func(int arg) {
if (arg < 0) return -1; // error
int param = ...;
}
Cだとこんなのがコンパイルできないし。
C99で十分
てst
よくわかんないけど、これわだめなのか
% cat c.c
#include <stdio.h>
#include <stdlib.h>
int func(int arg) { if (arg < 0) return -1; int param = 0; return param; }
int main() { printf("%d¥n", func(-1)); exit(0); }
% cc -ansi -Wall c.c
% ./a.out
-1
Javaの方がC++よりひどい欠点がある。
JavaのJava Runtime Environmentのバージョンの問題だ。
Javaで書かれたプログラムはRuntimeバージョンが違うと動作が保障されないだろ。
これだと、Runtimeバージョンが違う二つのソフトは同じマシンで動作する保障がない。
駄目だこりゃ。
>>603 それはこういう所の楽しみ方が分かってないからだよ
意見が純粋に意見として存在出来るというのは貴重なんだぜ
誰であるかという属性を意識したいならば、そういう場所へ行けば良い
>>651 単に
>>616みたいなことにならないように、ってことじゃね?
スレ毎でいいってのも属性を意識する気はないってことかと
>>647 少なくとも既存のCでは不足ということでよろしいか?
というか、Cが好まれる理由はポータビリティにあると思うのだけど、
C99にその役目は果たせるのか?
あと、C99でよくてC++でダメな理由は何?
>>649 あれなんでコンパイルできるの?
msvc6,7,8、もBorlandCも全部できなかったよ。
>>643 個人PCの約9割がwindowsを使っているわけだが・・・
>>650 JREって複数バージョンを同一マシンにインストールできるんじゃないの?
vcランタイムやvbランタイムや.netやjava VMやらが、しかも複数インスコされたら
もうそれだけでお腹いっぱい。
gccだと
>>649のコンパイルできるんだな
-std=c89 -pedantic-errors
これつけるとだめだけど
これでいいのか
% cc -ansi -pedantic -Wall c.c
c.c: In function ‘func’:
c.c:3: warning: ISO C90 forbids mixed declarations and code
たしかにC99でじゅうぶんだな
% cc -std=c99 -pedantic -Wall c.c
% ./a.out
-1
>>650 Runtimeバージョンが同じでもプラットフォームが違うと動かなかったりする。
WOREをもじってWOTEと冗談ぽく言われたり。
>>651 意見=その瞬間の思いつき、ならそれでいいけどね。
ちょっとでも「根拠」というものが関わってくる「まともな」意見交換になると、
ある1レスに意見の全容が入ってることはまず無くて、そいつの発言のラインを辿って
読み込んでいく必要が出てくるけど、そこで誰が誰やらわからないと、ちょいと面倒になる。
そういうのを求めるのであれば別の所へ行く方が君の為だろう
662 :
603:2008/05/02(金) 23:50:16
>>661 「そういうの」がどういうのかわからないけど、
「意見が純粋に意見として存在」するためには前後の認識が必要になるという話。
>>651が「意見ではないものを意見と呼んでいる」場合、野暮なツッコミだったけどね。
そうでもないと思うよ。
651は属性とか言わず、普通に
単発の適当な内容をわかった風に書き散らすには、IDは邪魔
って言っておくべきだったんだよ
わかった風な事言うなよ
お楽しみ頂けただろうか。
実はこのスレには俺とお前と読んでるだけの奴の3人しか居ないんだ。
ねーよw
以下の不等式に付いて論じよ(30点)
C + LL > C++
ナタネ油くらいの燃料が投下されました。
#include <iostream>
class Hoge {
public:
Hoge(int n) : n_(n) {}
Hoge(const Hoge& hoge) : n_(hoge.n_) {}
bool operator>(const Hoge& rhs) const { return n_ > rhs.n_; }
Hoge operator+(const Hoge& rhs) const { return Hoge(n_ + rhs.n_); }
Hoge operator++(int) { Hoge tmp(*this); ++n_; return tmp; }
private:
int n_;
};
int main(int argc, char* argv[]) {
Hoge C(10), LL(20);
bool ret = C + LL > C++;
std::cout << ret;
return 0;
}
# 1 (BCC5.6.4)
> C++ が唯一無二の最高言語
俺にとってはそうだ。
既に万人向けの言語ではなくなってしまったが…
何が最高なの?
template
boost
concept
move semantics
自分は
>>673 ではないが自分にとってもC++は最高だ
実用に耐えるのに面白い
初心者向きではないだろうが、長い間使い続けても新発見があるカオス言語
プロは毎日コードを書くんだよ
すぐに全貌が見えきってしまう言語なんて飽きちゃってつまらないだろう
Haskellとかは面白いけど実用に耐えないから仕事で使えないし
C++に関してはgccの方が規格外
>>676 ×初心者向きではない
○一般人向きではない
×長い間使い続けても新発見があるカオス言語
○誰も全貌を把握していないカオス言語
変態言語のトップランナーである事を分かって使ってればオケ
どこまで登っても頂上が見えてこないのがC++
※頂上が見えて来たら土を盛って継ぎ足します
boost使うと、C++っていったいどこまで上れるのかってそりゃあ恐ろしくなるな。
下りのエスカレータを上ってるみたいなもんか
C++は登れば登るほど汚くなる山
富士山?
汚いのがわかってても下山できないのがC++プルグラマ
山がある限り登り続ける
有名な登山家が言ったよな
地球は青かった
って
>>678 c++に限らず、他の言語もお前さんが思ってるより奥が深いよ。
しかし言語のすべてを理解して、すべての機能を使ってコードを書く必要は無い。
クラスを作らせず、スマートポインタやvecterなどの
用意されたライブラリを使って書かせれば、Cより初心者向きだ。
まぁそうは言っても、
俺もwindowsアプリならC#、サーバーサイドならjava、
比較的簡易なウェブアプリならPHPを薦めたりするんだけどな。
他人にC++を薦めるのはActiveXとかの場合かな。
>>685 C++は馬鹿が使ったり、馬鹿と一緒に使ったりすると悲惨だけど、
自分が一人で高みに行って使う分には、実に強力だからなぁ。
「ある程度以上へ登れた」人間には、下山する理由が無いんだよね。
意味のある難解さは歓迎だ。
691 :
デフォルトの名無しさん:2008/05/03(土) 13:30:20
http://members.jcom.home.ne.jp/j-citizenship/siryousyuu7.htm 日時:2001年12月14日18時30分〜 場所:京都YWCA
在日外国籍市民の参政権を考える連続講座 第3回
演題:在日韓国・朝鮮人と国籍 講師:李敬宰さん
ただ、在日が日本国籍をとるということになると、天皇制の問題をどうするのかという人がいますが、
外国人がたくさん日本国籍を取ったほうが、早く天皇制は潰れると思います。
というのは、この先もどんどん外国系市民が増えます。 ある統計では、
一〇〇年後には五人の内三人が外国系になるといいます。 そうなれば、
日本で大和民族がマイノリティーになるのです。 だから、私はあと一〇〇年生きて、
なんとしても日本人を差別して死にたいです。これが夢です(笑)。そういう社会が来たら、
その時に天皇なんていうのは小数民族の酋長さんみたいなものになります。
こうした素晴らしい戦術があるのに、それを、今の左派のように、日本国籍を取ったらダメだということをやっていたら、
いつまでたっても天皇制は温存されたままではないですか。
難解さって言っても
C++の難解って誰かの言ったことを丸暗記しろとかそういう類でしょ
いや大量のバッドノウハウ
>>688 深い奥地まで行っちゃったつもりの奴が一番たちが悪いというか…
底が浅いから辿り着いた事に気付いていない奴が一番痛いというか…
一歩上がっただけで高みに登ったつもりの奴が一番目障りというか…
自覚症状が無いのが哀れだな。
言語の仕様をすべて理解する必要がないって、どんだけ酸っぱい葡萄だよw
そうは言うが常人には全て理解するのはまず不可能だと思うぞ
誰も全てを理解してないからあんな汚くなったんでしょ
普通の言語じゃ考えられないよね
>>692 使わないならそうだね。
使うなら、機能同士が引き起こす「組み合わせ爆発」にも挑まなきゃいけない。
これは丸暗記とはまるで系統の違う難しさだよ。
>>689 そのまま山に籠りきって街に出てこなくても誰も困らんけどね
>>694 上の文は俺に対してか?
俺は奥地とやらに行ったつもりも、高みに居るつもりも無いぞ。
例えば、boostは基本的にブラックボックスとして使う、と割り切っているし。
あと、俺が言った「奥が深い」は、
複雑性についてでは無いからな。
必要に応じて、より特化出来ることを指している。
javaで例えを挙げると、ソフトリファレンスを使ってキャッシュするとか、
スレッドローカルでやや初期化コストがあるスレッドセーフで無いオブジェクトを使い回すとかな。
俺は出来るだけ言語仕様を理解しようと努めているけど、
他のメンバーにまで強要は出来ない。
それでも開発・メンテで、それによるさしたる問題は起きてない。
>>692 馬鹿丸出しの発言ですね。
自分のことでしょう。> 丸暗記のみ
いやいや、こういう事がさらっと言えちゃう奴は何か勘違いしてる奴だろ。
>他の言語もお前さんが思ってるより奥が深いよ。
しかもやっぱり自覚が無いみたいだな。
>>702 俺は何だって必要以上に崇めたりはしないよ
>>701 反論なら具体的に頼むよ。
独り言ならそれで結構だけど。
小手先のテクニックに溺れるには一番良い言語だよなあ。
>>703 ああ、崇めてる、と読み取ったのか。
単なる誤解だな。
>>704 >>688 は自分で書いた通りの人間だって事さ。
他人より深い所とやらが見えてしまう病気だね。
なにこれ、こんなのrubyなら(ry、haskellなら(ry、lispなら(ry
って考え方しちゃうと生産性の低い言語って見方になっちゃうから変態極めるのも難しいのぅ
709 :
706:2008/05/03(土) 14:37:16
補足すると、
>>678の「誰も全貌を〜」に対して、
他の言語も全貌を把握するのは容易ではない、と言いたかっただけだ。
>>709 >他の言語も全貌を把握するのは容易ではない
C++と一緒にされたら笑うしか無いなw
レベルが違うよ
それでも規格書のページ数ならまだcommon lispの方が上だよw
>>711 俺には「俺はjavaやc#の全貌を把握している」
なんてことを言うことは出来ない。
言語以外もだけど、まだまだ勉強は続いている。
力不足ですまない。
天才がいらっしゃるようですね
おまいらさっきまで意気揚々と山登りしてたくせに、えらい変わりようだな。
山登りしてますよ
一番高い山はどの山?
haskellに一票
lispとperlもヤバいw
ハッカー連中は雲の上行ってんなw
一人で登る分にはいいけど馬鹿と一緒だと悲惨な山は?
boostって山道教えてもらったんだけど。どう?C++山の近道らしいよ。
全部
山をなめんな
サーセンw
みんなと街にいるのが好きなもんで
>>698 別に地球の人々を救うためにプログラミング言語選ぶわけじゃないからなぁ。
なに言語のユーザーであれ、山で餓死しようが海で溺死しようが、他人はあんまり困らないものだよ。
むしろ山にいるつもりのままで里に下りて来られると困る
ねーよw
特に、無能が無能であることに寛容なヌルい里はやばいね。
修行帰りの人が混じると地獄と化すね。
修行w
>>729 実際、C++を学習する程度のことが、なんかこう、修行とか拷問に見えちゃうたぐいの人、
結構多いからねぇ。このスレ立てたのもそのクチだけど。
いやいや、c++に限らず、他の言語も奥が深いよ。
むしろ、c++以外わからない奴が必死にc++広めようとしてるんだろ
まあ、C++より簡単な言語は、C言語ぐらいで、他は難しいもんなぁ
しかし、
>>1が言ってるのは実は
C++でなく、C++/CLIである件
せめてJavaくらいは学んで欲しいよね
JAVAなんて、なぜ、仮想マシンなんか作ってその上で実行しないと行けないのか考えたら
夜も眠れなくなるから、学ぶ気にもなれない
JAVA使うぐらいなら、Java Scriptでいいじゃないかと思う
落ち着け
最後の行はネタだよなw
ソースを見たときに、
float x = std::min( 1.0f, y );
とあったとする。このソースから
関数の機能は、名前からある程度推測することは可能だが
二つの引数の意味を知ることは、不可能だ。
俺は、ここはC系統のひとつの弱点だと思っている。
これを克服した言語はあるか?VB以外で
最後の行だけ?
>>739 名前から推測で良いなら CL, Smalltalk, ObjC などなど
>>740 悩むのは自由w
というかjavavmを使わないケースあるからね
>>739 Python
def foo(a, b, c):
print a, b, c
foo(a = 1, c = 3, b = 2)
名前つき引数が可能
C++にはキーワード引数は無いの?
ocaml
>>744 無い。
D&Eのどっかにその話があった気がする。
JAVA VMを使わないなら、JAVAを使う意味も無いのでは?
そして、JAVA VM使うなら、Java Scriptでも十分じゃなかろうか?
意味有るし、javaとjavascriptは単に名前と構文が似てるだけで、
別の言語。
JAVAとJava Scriptは違うなんて常識の話じゃん
何を今更
それはともかく、JAVA VMを使わないJAVAに何の意味があるのか全く判らない
まず、何で意味が無いと思うか聞こうか。
vmware上で動くlinuxが、
物理マシンで動いても何ら困らないと思うんだが。
つまり翻訳するとこういう事だろう!
ECMAScript は現在望み得る最も素晴らしい神の言語。
C++ は Tamarin や JavaScriptCore の実装言語だから
それなりに良いんじゃない。どうでも良いけど。
戸田翻訳かよw
>>751 それは意味が違うだろう
x86用のソフトを、68000で動かしているそんな違和感
Tamarinが悪いのっ
>>754 68000で動くとソフトの意味無くなるの?
757 :
デフォルトの名無しさん:2008/05/03(土) 17:20:10
奈津子さんこそ神だろ。
wつけんなよ。
馬鹿にしてると思われるぞ。
ごめんなさい。
Tamarin、Tamarinうっせーよと思いつつググって、
ちょっと興味持ってしまった。
>>756 貴方日本語判りますか?
私少し判ります
貴方日本語変
貴方JAVA理念しってますか?
VM使わない、理念に合わない、しってますか?
JazelleとかLiquidVMとかjavaコプロセッサとか
ネイティブトランスレータとかあるけど、
理念に合わないことはない。
理念に合わない理由を説明してもらえないか?
>>764 貴方嘘良くない
貴方言うハードワイヤードVM
それJAVA VMね
それも仮想マシンに含むならそれで結構だよ。
プロセッサも仮想マシンならCも仮想マシン上になるな
処理系がターゲット環境だし
HotSpot も Strongtalk も LLVM も Squirrel も Tamarin も
JavaScriptCore もその一部の KJS も C++ なんだよな。
Firefox も Thunderbird も OOo も KDE も Qt も Qtopia も
wxWidget も C++ だし、C++ が分からないとパッチも
書けやしない。嗚呼 C++ がもう少しまともだったら…
C++は言語自体はあれで出来るだけ最小化されてるんだけどな。
それでも足りないからライブラリで補う、って言って、
あのカオスなライブラリなんだよな。
実際、キーワード引数やガベージコレクタや
今ライブラリでどうにかしてる他多数の機能を
言語に入れろって要求がめちゃめちゃ来てるそうだし。
多分、手に負えない程高度に見えるのは、
ライブラリ作る人達が気合い入れすぎだからだと思う。
それじゃあ、JavaVMの理念どうこう以前に
仮想マシン自体が存在しなくなっちゃうよ
>>770 Cの処理系=ネイティブトランスレーター
>>773 JAVA VMってのは、仮想のCPUを定義したクラス
インスタンスとしてのJAVA VMがソフトウェアかハードウェアかは問題では無く
JAVA VMの定義に合っていればJAVA VM
>>775 Cは物理的なマシンとかCPUを定義してたっけ?
>>771 大きい小さいと言うのもあるけど、みんなが嫌がってるのは
文法が汚いって事じゃないかな。その所為でコンパイルも遅いし。
779 :
771:2008/05/03(土) 19:09:03
>>778 >>777も見て納得した。
ただ、Cとの互換を維持しようとしたのと、
拡張を重ねたって事情はある程度分かってあげて。
この対処は作り直ししかないけど、
javaとかDも徐々に拡張が・・・
C++の文法は汚いって言われればそのとおり何だけど、それ以上に強力で面白い。
だよな
だからCは処理系という仮想的な環境で動いてる
と考えられるわけだ
>>771 ライブラリで無理やり実装ってのはCOMで懲りた。
俺もライブラリで補填ってのは間違った方向性だと思う。
言語仕様にあるなら使う、無いなら使わない。
これを守れば、それなりにすっきりまとまるのに
無いならライブラリでそれっぽいの作りましょうとかするから
複雑化するんだよな。
>>777のはマジ別の言語を作ろうとしてるなw
テンプレートも使い過ぎると高度過ぎるけど、
プリプロセッサまで使ってメタプロされると流石にギブアップ
boostのmplとかラムダとかの人はそろそろ勘弁して欲しい
間違えた
777じゃなくて
>>760のリンクだった
テンプレートとプリプロセッサだけでここまでできるなんて、C++なんて恐ろしい子
>>782 ちげぇーよ
CやC++に仮想環境なんてないよ
そんなの、古いコンパイラに今のコード突っ込めば判るだろ
ソリアセンブラで出来ることさえ押さえてまけばマクロで銅にでもなる
自前プリプロセッサでラムダとかC++の人は節操ない
>>786 特にDは、コンパイラの作りやすさに重点を置いていることを
はっきり明言している言語だものな。
Javaもその道の達人が設計に関わったからな
コンパイラの作りやすさなんていう利用者には
問題にならないことを優先するよりも、コーディング時の
融通の利きやすさを優先させたほうが、使うほうには
有りがたいと思うけどな。
コンパイル速度はさすがに無視できんけど。
処理系の実装のし易さと言語それ自体の使いやすさを混同しないように
コンパイラの実装しやすさと、
言語の使いやすさが別物というのに異論は無いけど、
コンパイラの実装しやすさが、コンパイル速度の向上や、
コンパイラが用意されるプラットフォームの増加に繋がって、
言語ユーザーへの恩恵にもなったりするよ。
>>797 パーサが書き易いと言う事は自分で好きなだけ構文を弄れるという事だ。
Boost を有り難がってる人種ならその意味が分かるだろ。
釣りか素人かどちらか知らんが、こんな事説明させるなよ。
パーサを弄るのとテンプレート弄るのは難易度や労力が全然違うだろ。
わかりやすい文法はパーサ作るのは楽だろうが、パーサ作るのが楽なら文法がわかり易くなるかというとそうではないし。FORTHのパーサとか超簡単だけど読みにくいし。
>>801 誰もそんな話してないだろw
曲解して否定するのが得意だな
>>799 1行目と2行目の関連がよくわかりません
ご説明をお願いします
構文解析をします
C++の文化だと自分でコードの自動生成したり構文拡張したりはしないのか
Boostが何をしないかは知ってるの?
>>807 OpenC++ってのもありますが、
今やtempleteがありますしね。
超言語的拡張をしません
boostは小文字でおk
あと、
>Boost を有り難がってる人種ならその意味が分かるだろ。
分かりません。
機能性の優先度は高いものの、メジャーな環境で使えるよう
かなり配慮されて #if とか入りまくりなのに
俺構文作って他のコンパイラで使えなくなったら意味無いじゃん。
何のための(次期)標準かと。
>>807 プリプロセッサとテンプレートの仕事なのです。
具体的にどんな超言語的拡張をしたいの?
>>814 自分でプリプロセッサ作りたくなるでしょ
>>807 コードの自動生成はよく行われると思うけど
構文拡張を個々人がするような文化はC++にはないと思う
そんな文化があるの?
ポータビリティはどうなるの?
>>816 それと処理系の実装しやすさとは関係ないでしょ
自分プリプロセッサの文法とは関係するけど
>>817 例えば cfront を書きたくなったりしたのも最初は個人でしょ
コンパイル時に帰納関数を計算するtemplate
演算子オーバーロード
SFINAE
に加えて、
concept_map
があるから独自プリプロセッサなんかいらない。
>>819 そんなの上位の一握りだし、さらにその頃とは状況がかなり変わってるし。
cfrontを書いたのは個人じゃないぞ、AT&T。
bsは方針を練ったが、実装は雇われプログラマがやった。
テスターも雇われがいた。
もともとは電話交換機用のプログラミング言語として作ったから。
やっぱり文化が違うな。
まあC++どっぷりじゃそんな気もなくなるか…
ぷ
理屈ではC++最強とは思うが
現実的に何かを作る際に他言語のほうが手っ取り早い(、上に最近は処理時間にそれほどシビアにならない)ってのが
C++選択を躊躇させる
コンパイラの実装が無いプラットフォームへの対応とかならまだしも、
ポータビリティ0の独自仕様を個人でとかありえないな。
上位レイヤーにしか関わらないPG/SEが増えてきたって事かな。
下位レイヤーが大勢居たらカオスになるだろ。
>>794 >コンパイラの作りやすさなんていう利用者には
コンパイラを書かないしコンパイラのソースも読まないPGが
増えてきたって事かな。
これからはプロセッサのスペックアップは鈍化して
期待できないから、C++がまた隆盛になるかもだな。
読むのはともかく、コンパイラ書く奴が大勢居たらカオスになるだろ。
まあでも今時C++を使ってる人間は余程の熟練者なんだろうな
そうじゃなきゃ普通は
>>827みたいに考えるよね
>>835 頑張ってググッたようだけどjikesなんて使われてねぇよ
>>838 昔は結構使ってたぞ。それなりに有名だったんだが、最近の連中は知らんのか。
今は使われていない事に変わりはないだろ。
>>839 古参乙
いつのJDK互換か知ってて言ってるのか?
>>840 それでも言いたい事は分かるだろ
C++は今も昔もゼロなんだよ
C++と比べれば、Javaなんて標準のコンパイラでもめちゃくちゃ速いです。
C++は標準のコンパイラも無いからポータビリティが大変です。
IBMみたいに体力あるところとかOSSならともかく、
独自実装なんてやったアホなコンパイラは標準について来れずに死滅しました
>>842 C++に大衆性がないのに同意しない人間はいないだろ。
firefoxとかadobe readerとか、一部のエリートプログラマは使っているが。
848 :
846:2008/05/03(土) 23:35:03
javaコンパイラのことな
>>846 Microsoft ってまだ Java やってたんだな…
>>821 >そんなの上位の一握りだし
今日一番寂しい言葉だったよ... (´・ω・`)
>>850 やってないよ
お亡くなりになるJ#のこと?
>>851 何で?
メジャーな環境のフリーなコンパイラがあるのにそんなことするのは
余程上の人間か、もしくはただのアホだろ
>>852 やっぱりそうか
「独自実装」で一番最初に思い浮かんだw
>>853 何でって、昔は俺言語を作るのが普通だったから…
ガッコでコンパイラの授業あるだろう
J#あったなw
最後までJDK1.1(笑)互換だったけど騙されて使ってた会社は、
今もメンテで使ってるかもな。
授業で習って、その流れで俺言語作るのと、
実用のために俺言語作るのはわけが違うだろ常考。
どんだけの新言語がポシャッってると。
俺言語作るよりチャレンジングなのがC++のtemplate変態プログラミング。
ハードウェアとセットで囲い込むか、
マーケティング力が無いと無理だろうな。
そういう意味でRubyはすごいと思うよ。
Railsのおかげではあるけど。
実用の為の俺言語作ってる奴も多かったよ
ツール組み込みのマクロとか
マクロまでハードル落としたなw
そりゃマクロなら結構居るだろうさw
>>861 マクロっつってもフルセットの Scheme とかだぜ
まあ俺言語じゃないけど…
反応を見てると、やっぱり最近の人はそういうのやらないんだな…
俺の先輩は新入社員研修でCのコンパイラ作らされたって言ってたな
やっぱり文化が違うw
俺言語の話をしたいのか互換実装の話をしたいのかちゃんと絞ろうぜ・・・
俺も別に完全否定する気はないし、
小規模な俺言語(マクロ)
コンパイラが無いプラットフォームへの実装
標準についていく力がある組織による競合実装
なら十分有りだと思ってる。
C++の個人での俺拡張がありえないって言ってるわけで。
>>865 >C++の個人での俺拡張がありえない
俺もそう思うよ。腐った木に水やりをする人間はいないからね。
D や Java はそこら辺ちゃんと筋を通してる。
今日は入り浸りすぎたんで暫くレスを自粛するわ…
じゃあね
Javaはコンパイラ拡張が専門のPolyglotって実装があるよ。
C++はg++ベースが多い。例えばConceptGCC。
プログラム書くのにコンパイラの実装なんて気にする必要ないじゃん
つか、C++簡単だろう
わかんない、どんだけ低能なんだよ
簡単ではないだろう
STLからbostまでにどれだけの英知が必要だったか
>>870 それは別にC++が特別ではないだろ。
本格的な言語ならどれだって大量のリソースが注ぎ込まれているはず。
あと、使う方もC++が特別難しいとは思わないが、ほかが特別簡単とも思わない。
例えば、自分1人で作るプログラムなら当然C++は候補の1つ。
利点欠点を考え気分を加味して、C++が最良と思えばそれを使う。別のが良ければそれを使う。
程度問題だけど
標準ライブラリがあれほど言語の能力を使いきれてなかったのも珍しくない?
つまり標準化委員達にも把握できてなかったわけで
自分はC++を理解しているつもりだけど、本当はboostの先が果てしないのじゃないかと
そもそも標準ライブラリのbind.*とかが欠陥品だからなぁ・・・
かなり早い時期に作られたライブラリなんだから責めないで。
何年もの研究の成果があってこそのboostなんだし。
というわけで正しくC++を使うのは識者たちにも難しかった
正しくって?
限界まで、の間違いだろ
iostreamきもい
>>847 パソコンで箱売りされているソフトの大半がVCで書かれてますが?
土方の話はしてないからw
>>870 道具を作るのには英知が必要かもしれないが
道具を使うのには英知なんて必要ないだろうが
>>879 話を限定しないと、C++に大衆性が無いなんてトンデモ理論は
言い続けられないですもんねw
>>880 最近その言葉の意味を身をもって知ることになったんで同意する。
道具を使うのは簡単なんだよな。使い方勉強すればいいだけなんだし。
まぁ、使うのは作る知識の5%くらいは必要とかそんな感じなんじゃない。
その5%にも満たないという残念な実感、そんな経験が俺にもありました。
> 新総督はナナリーだよ!!! <
 ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
_ - '´rニ- 、_ ノ}
/{/:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.: ̄._ニア : , '´::::::::::::::::::::::::::::::`丶、:
{:.:.| .:.:.:.:.:.:.:.:.:.:.:.:.:.:. :.ノl:.:.ヽ : /:::::::::::::::::::::::::::::::::::::::::::::::ヽ :
__,>:.:.: .: :.:.l:.l:.:.l:.:.:.:.:. .: .ヽ、.:.:.\ : /::::::::::::::::::::::::::::::::::/::::::::::::::::::::', :
∠_:.:.:.:.:.:.:.:.:.ノノ_:.`ニ=‐.:.:.:.:ハ:.ヽ:.:.:.:.ニ=- : //::::l:::::::/:::::;/::/::::;ヘ:::::::|:::::::::::::} :
. |.:.:.:.:.|:.:.|:.:.|:.ゝゞ`、:.:|:.|_}.:.|:.:.:.:..} ://::::::l:::::;ヘ/, '/:/::/ ::::|:::::l:::::::::::::{ :
. |:|.:.:.:.{:.:.{∨仁¨-、ヽ/≦ソリ:.:i|ノ : /|::::::l/(◯), 、(ひ)::::リ:/:::::::::::::l :
リ:.:(\ヽ rr=-, r=;ァ{:./´ : .|ハ::|:::l"",rェェェ、"" ::::::/::::::/`i;':| :
`ヽヽゝヽ  ̄  ̄ l:.ヽ、 : l' |l:::! |,r-r-| :::::/;::::::;'_.'´ハ :
∠_:..:.¨ヽ 'ー=-' ,ノ  ̄ : l;' ', `ニニ´ :::::/:://:::/ :
>>883 5%どころか0.05%ぐらいが妥当じゃないかと
>>880 残念だが、俺の作ったライブラリを使うには
とびっきりの英知が必要になるぞ
mb2sync乙
>>887 使い勝手が悪いってことじゃないかそれ。
酷いネタにマジレスを見たw
レスを追ってて思ったんだが、
CのFree()とC++のデストラクタとC#のDispose()って具体的に挙動や用途としてはどうちがうの?
なんとなくはわかるんだが、正確にどういう違いがあるかわからん。
C++にはdeleteもあるぞ。
malloc して free しない →100%メモリリークする
new して delete しない →メモリリークするかどうかはケースバイケース
New して Disposeしない →メモリリークするが一部はガベージコレクションで救済される
ちょっと3レスに分けて書くよ。
<C>
・malloc() :メモリ確保
・free() :メモリ解放(mallocが再利用出来る。OSに返すとは限らない)
すぐ終了するプロセスは、大量に確保を
繰り返すもので無い限りfree()しなくても大丈夫。
長期的に動くプロセスはfree()を使わないと
malloc()で再利用出来ないため、問題となる。
ただし、mallocの実装によっては徐々に断片化してオワル。
なので、組み込みのようなものではmalloc系を使わない、
ページ単位で確保する処理でラップなどで対応。
<C++>
・new:malloc()して、それをthisとしてコンストラクタを実行
※厳密にはmallocとは限らない。
・delete:デストラクタを実行したあと、free()する
・デストラクタ:メモリ解放はしないけど、リソースの解放などをする。
なので基本的に呼ぶこと。
newを使用しない自動変数の場合は、
変数のスコープから出る際にデストラクタが呼ばれる。
リソースもモダンなOSはプロセス終了時に破棄するけど、
名前付き共有メモリマップのような
プロセスを超えて生存する仕様のリソースは当然残る。
<C#>
・メソッド内のusing:指定された変数が
usingのスコープから出る際にDispose()が呼ばれる。
・Dispose():メモリ解放はしないけど、リソースの解放などをする。
なのでDisposableを持っている場合は基本的に呼ぶこと。
C#はGCがあるので放っておいてもメモリは解放される。
その前段でFinalizeが呼ばれるので、その際通常はDispose()が呼ばれる。
つまり明示的にDisposeしなくて呼ばれるが、
GCはコネクションプールの枯渇などを検知しないので、
メモリに余裕がある場合はいつまでもFinalizeも呼ばれず問題となる。
デストラクタはいるけど、deleteはいらないな。
そうだね
delete不要論はsmart_ptrによるRAIIのテクニックが広まった頃にC++プログラマは口々に言ってたよね
>>894 1行目をリークとするなら2行目も100%リークです。
3行目もおかしい。文脈的にはそのケースはメモリリークしない。
>>898 何で?
901 :
900:2008/05/05(月) 11:43:55
スマートポインタが内部的に呼ぶから明示的なdeleteは不要、
ということならおk。それなら同意なので。
ユーザコードでdeleteを記述したかどうかなんてのは、deleteの有無を論じる上で正確じゃない。
A * a = new A;
// iroiro
a->~A();
こんなコードを書く奴が出てきてしまうかもしれん。
>>902 しかし、
class A{
B *b;
public:
A(){
b = NULL;
};
~A(){
delete b;
};
void SetB(B *s){
b = s;
};
B *GetB(){
return b;
};
//色々な処理
}
というクラスの場合、
自分がnewしたからと言ってbを勝手にdeleteしちゃうと不味いよね
それただのクソコードじゃんw
どういう責任範囲か不明だし、Aが責任もつならSetBのときにdelete bだろ
newをユーザコードで直接使わずにfactory methodを使えと言うことですか
>>903 >>902のAの設計思想を知らんけど、Bの生存期間をAに移譲しないなら、
自分でdelete bに相当する操作を行うべきで、~Aにdelete bがあるのがおかしい。
仮に
>>902のAをそのまま使うとしても、次のようなコードにするべきだ。
some_smart_ptr<A> a(new A);
some_smart_ptr<B> b(new B);
a->SetB(b.get());
// iroiro
a->SetB(NULL);
>>906 a = new A;
some_smart_ptr<A> b(a);
delete a;
>>907 何が言いたいんだw
バグを披露したいのか?
そこでGCだ
newしたらdeleteすべしと言うことは、
>>907って事だろ
a->SetB(new B);
とどう違うのかって話にも取れるな
どんだけw
a = new A; //newしたら
some_smart_ptr<A> b(a); //deleteすべし
「明示的な」「責任」「生存期間」とか言い方はそれぞれだけど
>>899 >>901 >>902 >>904 >>906 は皆そういうことを言ってる
>>896 > ・delete:デストラクタを実行したあと、free()する
ちがうぞ。allocatorのdeallocate()を呼ぶ。
>>912 だから「※厳密にはmallocとは限らない。」って書いたんだけど・・・。
>>892向けに書いたから分かりやすいようにあえてそうしたの。
newも厳密に言ったらoperator newとか配置newとかあるしな
>>911 >>903コードだと、class Bは、class Aのプライベートなメンバーじゃん
class A以外で、*bをdeleteしちゃ不味いだろ、Aの生存期間が終了するまでの間にBを利用する可能性があるんだし
ゲタやセッタがあって、Aのコンストラクタでbをnewしないって事は、クラスBの派生クラスCを使う可能性だって考えられるし
>>911にclass Bなんか出てきてないけど。
>>913 malloc/free使う実装ってあるの?
>>915 >
>>903コードだと
まだ
>>903のコードのこと言ってると分かって軽くフイタw
> プライベートな
privateだろうがset,getがあれば同じこと
> Aの生存期間が終了するまでの間にBを利用する可能性
>>904 >>906であるようにAの仕様が意味不明なので何とも言えない
> 派生クラスCを
Cを使っても問題無い(virtual ~B()でないのに継承してAに渡すのはただのバグ)
923 :
919:2008/05/05(月) 13:33:41
>>921 ああスマン a->SetB(new B); のところはどうでも良すぎて無意識にスルーしてた
924 :
922:2008/05/05(月) 13:36:30
a->SetB(new B)は駄目で、some_smart_ptr<A> a(new A)はいいって、どんなやねん
どっちもスマートポインタだろうがw
>>918 g++は下請のlibiberty/xmalloc.cからmalloc()呼び出してる。
libibertyは差し換えられるようになっているけれど。
>どっちもスマートポインタだろうがw
>Aの仕様が意味不明なので
とあるように、それならそうと始めから書いてくれないと。
>>903のようなコードからスマートポインタを
書こうとしたことを読み取るのは難しい。
分かってる人ならサフィックスに_ptr付けるとかする。
928 :
903:2008/05/05(月) 13:52:39
俺のコードですまんかった
C++覚えてまだ半年ぐらいで難しいことはわからん
ウインドウズ用のクラスライブラリ作ってて、MDIクライアントとかdeleteするのが面倒で、あんなコードをいっぱい書いてる
そっか、駄目なのか...楽でいいのに...orz
>>925 > どっちもスマートポインタだろうがw
分かんねぇよw
コンストラクタくらい付けろw
コピーされた場合もどうすんだよ
>>928 std::auto_ptr, boost::shared_ptrあたりの使い方を覚えるべき。
>>930 auto_ptrの仕様や、shared_ptr・weak_ptrが作られた理由は、
色々、で片付けられるほど気軽なものじゃないんだせ・・・。
>ウインドウズ用の
まぁ今だったらマジでC#オヌヌメ
既存の資産もDLLにしとけばC#から使えるし。
934 :
903:2008/05/05(月) 14:13:05
>>933 大枠は既に出来て、あとは細かいコントロール類だけだから、今更C#を覚えるよりは速いかな
C++をマスターしたと思ったらC#も触ってみるよ
これらを元に考えると、 犯人は男、もしかすると女の可能性もあり。
年齢は10代〜50代、あるいは60代以上。
身長は1m〜2mくらい。
犯行は単独もしくは複数。
そして調査の結果、事故死であることが判明。
車の中でC#動いてたらイヤでしょ
>>937 バグでエンジンがかからなかったり事故を起こしたりしなければ別にどうでもいい。
プログラマって授業中にずっとノートにコード書いてたり、家でこそこそギャルゲ作ってて
将来のことで親と喧嘩して、ゲームとかソフトとかなにか作って食って生きたいって言うも、
そんな子供みたいなことをいつまでもやってるんじゃないって頭ごなしに否定されて
夜の街を彷徨って帰ってきたら、みんな寝てないみたいで、暖かいご飯が用意されてて、
おかんと「おとうさんが大事な話があるからって」「・・・うん」みたいな会話しちゃう生き物だと思ってたけど違うの?
>>939 それプログラマじゃなくてただの勘違いしたお子ちゃまだから。
>>939 そういう生き方でもいい。お前の人生なんだもの。お前の思うとおり生きれよ。
…といった具合にネタにマジレスしちゃうのがプログラマ
マジレスに見えるんだw
被った・・・
…といった具合にネタにマジレスしちゃうのがプログラマ
C++と関係ない話題は他所でやれ
しかし、ベースになるクラスライブラリを作るのに、STL使えってのはどうなの?
むしろ、そういった物の場合は、vectorすらゆるさんぐらいで良いと思うが
vectorを許さないで俺vectorを書くんですね、わかります
自分の靴紐を持ち、上方にグイと強く引っ張ると身体が持ち上がります
次に反対側の靴の靴紐も同じ様に引き上げれば、宙に浮くことが出来ます
>>948 もちろんmalloc/free/printf/scanfも使わないんだよね?
対応するOSのAPIをラップするところから始めないと。
>>952 STL使う使わないとは関係ない話だけど、大抵のポータブルなライブラリでは
そこらへんはランタイムまかせにせずラップ関数を使ってるよね。
>>952 一歩間違えると、newやdeleteすら、オーバーロード無しには使えなかったりする環境もあるけどな
955 :
デフォルトの名無しさん:2008/05/13(火) 12:22:26
>>739 VB知らないから、的を外してるかもしれんが
AdaとかPythonは名前付きの引数使えるよ
D言語のテンプレート機構は、明示的なインスタンス化が必要になる代わりに、C++には出来ないようなことまで出来る。
それば事実なのだが、それがいいか悪いかは別問題である。思えばJavaやC#にもGenericsが導入され、いよいよ本格的に足並みをそろえた感もある。
また、やねうらおも通常はC++でテンプレートを用いてかなり複雑なメタプログラミングを行なうこともある。
しかしだ。やればやるほど、こういう方向性は根本的に誤っているのではないかという疑念をいだくようになった。
それぞれの言語がそれぞれの方法でテンプレートをサポートしたり、それぞれ異なる仕様のプリプロセッサを持っていたりするのは非常にばかげていると思う。
現実問題として、C++のソースをC#、あるいはJavaに移植しないといけないことがある。この逆をしないといけないこともある。
そういったときに、言語に依存する機能ほど移植を難解にするものはない。
その言語を使う限りは気持ちよくプログラミングできるのかも知れないが、そんなプログラムを移植させられる者はたまったもんではない。最近、それを特に感じる。
結局何が悪いかというと、Genericsやらメタプログラミングやら、プリプロセッサやら何やらかんやら。
そういったものは、言語間で共通するサードパーティ製のツールで実現するべきであって、決して、言語仕様そのものを改定すべき問題ではなかったと思うのだ。
たとえばmix-inにしても、AspectJ/C#/Cppを用いることで比較的すんなり実現できる。
言語そのものにmix-inを取り入れて、それをその言語のアドバンテージかのように言うのは、もういい加減やめにしないか?DbyC(design by contract:表明つきプログラム)にせよ、何にせよだ。
結局何が必要かというと、もっと汎用的なテンプレートやDbyCを実現するための、Aspectほにゃららをも包括するようなツールと、そういったツールを受容する言語側の仕組みなのだ。
決して、必要なのはGenericsでも何でもない。その言語にしかないような言語固有の機能なんてメリットでも何でもないのだ。いい加減、みんな早く目を醒ませ!
PL/1の夢、再来ですね。わかります
まぁ、俺も移植することあるから気持ちは分かるけど、
外部ツールで実現された場合、移植元と先の知識を持つ技術者も減ったりと、
移植は余計大変にならない?
そのツールがたまたま移植元と先を両方ともカバーしていれば
容易にはなるだろうけど。
それに、ソース生成系でなくても、
cfrontは例外が実装出来ずにティウンティウンしたし、
GCは言語・ランタイムのサポート無しでは完全な実装が不可能だしね。
※ Boehm GCはハックみたいなもの
あとC++,Java,C#のジェネリックは全然足並み揃ってないです・・・
>>958 > GCは言語・ランタイムのサポート無しでは完全な実装が不可能だしね。
> ※ Boehm GCはハックみたいなもの
「コンサバしか無理」と言えばいいのでは。
コンサバが何か分からずググちゃったよ・・・w
「保守的GCしか実装出来ない」とは一度書いて消した。
そう呼びたくなくてね。
ハックみたいなもの、とやんわり言ったけど、
はっきり言うと俺はアレを「出来損ないGC」だと思っています・・・。
それにしても、C++の言語デザインは忌むべきものだと思う。
「Effective C++」や「More Effective C++」、あるいは「Modern C++ Design」、あと「Effective STL」有名なのが、この4冊。
あとARM(The Annotated C++ Reference Manual:注解C++リファレンスマニュアル)、それからFDIS(C++ Final Draft International Standard)
ついでに「Exceptional C++」とか「More Exceptional C++」とかもか。
プロのまともなC++プログラマならば、これらをすべて読んでいて然りだし、少なくともFDIS以外は精読していて然りである。
そうは思うものの、いま「Effective C++」やら何やらを読み返してみると、ホント頭悪いなぁと思う。
もちろん「Modern C++ Design」もだ。書いている人が頭が悪いと言っているのではない。
こんな解説書が必要になり、また必須であると思われている状況が、もうどうしようもなくやるせなくなるのだ。
こんな解説書が必要になるというのはC++の言語デザインの悪さゆえなのに。
「Modern C++ Design」を知らずしてテンプレートを語るなと言われる。確かにそうかも知れない。
この本以前のテンプレート批判は本当に的はずれだった。
かと言って、「Modern C++ Design」が珠玉のテクニック集か何かと思われている雰囲気、これがもうたまらない。
はっきり言って、こんなテクニックを理解する時間があれば、まともなコンパイラが実装できるのに。
そっちのほうが、何倍も有益で、普遍的なものなのに。
956も961も見覚えがあるんだが、いつどこでだったか思い出せない。
>>961 「C++の設計と進化」を追加。
そういうデザインにせざるを得なかった事情の一端が書いてある。
C++はともかくとしてJavaのGenericsは正直どーか?と思うが。
正直 C++ は酷いよなあ。
>>961 お前結構前で知識が止ってるよ。
試行錯誤時代の「Modern C++ Design」をそんなに熱く語られても。
上から目線ワラタ
ARM & FDISも今となってはC++03規格と0xドラフトに置き換えだな。
そして C++ は永遠に表舞台から消える訳か…
それ良いな
縁の下の力持ちとして生き続けるということですね、わかります
いや、どちらかというと蚊帳の外
>>967 ARMは規格と違ってannotatedの部分が面白いけど、D&Eに置き換えだね。
「オブジェクトモデル」に相当するのがない。
今北産業
>>972 言語に依存すると移植が大変
有名な本は全部読め
次スレ頼む
>>972 c++は言語オタが素人に本売るために複雑になっている
>>961 > はっきり言って、こんなテクニックを理解する時間があれば、まともなコンパイラが実装できるのに。
それは無いなぁw
VCが最後の砦という感じはする
Windows Universe ではそうかもしれんね
C++は最近使用範囲が広がってる感じがする
GoogleもMozillaも使っている
新しく始めるプロジェクトでC++を使えるのにCで書く必要はないのだ
名前空間と関数のオーバーロードがあるだけでかなりベターなCとして使えるのだから
もちろん主要なターゲット環境にCコンパイラしかないのならCを使うしかないが
Mozilla は昔からでしょ
Google は Java も Python も JavaScript も独自言語も使っているし
そうだよ
ネイティブコードを吐く言語としてC++を選択している
JavaもPythonもJavaScriptも使われる場面や用途が違う
でも Yahoo! の Hadoop とかは Java なんだよね…
そんな><
名前空間はともかくオーバーロードはたまに困ったちゃん扱いされるじゃないか
ベターから外れる
JAVAそのものはC++じゃなかったけか?
C++を見捨てたというより、頭が悪くてC++についていけないだけの話だろ
>>985 残り少なくなった C++ 信者の脳内設定ではね。現実は真逆。
987 :
デフォルトの名無しさん:2008/05/17(土) 14:31:55
CとC++の中間に位置する言語があればいいのに。
中間もなにもC++でC++特有の機能を使わない様にコーティングすれば
済む話だと思うが。
C++の終わりなき拡張(でいいのかな?)のせいで
どんどんとっつきにくくなってるから
そろそろ現ANCI準拠のC++と今以上に拡張するC++は別物として扱って欲しい。
そんな俺は最近C++に触れ始めたC++初心者。
>>988 済まないからみんな困ってるんじゃないか
それで済むなら EC++ なんて作らないよ
もっと現実を直視しようぜ
ANCI
ANSIだったな。すまん
>>983 Cよりも新しい言語では関数のオーバーロードを許す言語は多いじゃない
そしてC++より新しい言語でも多いでしょ
言語設計者が有用であると判断しているケースが多いわけだ
C++を鼻で笑いつつ夢を追い求めて作ったJavaとC#も、
浸透し「現実のつらい部分」も自らが受け持たなくてはならなくなるにつれ、
結局はC++的な複雑さを取り込まざるを得なくなってるしね。
だな。
ただ、C#に関しては鼻で笑っていたわけでは無いと思うぞ。
structとかunsafeがあるように、
元々、コスト・効率についても結構意識されてるし、結構c++的な考えを持ってる。
LINQとか型推論とかむしろ積極的に構文を拡張してるしね。
javaとは違って、開発効率と実行効率のためなら複雑さ上等ってスタンス。
関数型言語が見直されて来たから
JavaやC#などで無理矢理関数型っぽいことできるようにして
カオスになった感じ。
>>989 gccでC89とC99がコンパイルオプションで分かれているように、
C++98とC++0xは別に分かれるなんて事例が起こりそうな気がする。
>>996 それでもC++と比べれば月とすっぽん。
>>993 それでもC++の多重定義解決の規則をそのまま使う言語なんてないはず。
少なくとも、Java/C#/DはC++と違う。
1000 :
デフォルトの名無しさん:2008/05/17(土) 21:50:25
【 html化されたこのスレを読んでいるお前へ 】
おい、お前。そう、お前だよ。
「このスレおもろいから見てみ」「2ちゃんの歴史に残る名スレだぜ」とか言われてホイホイと
このhtml化されたスレを見にきた、お前のことだ。
どうだ?このスレおもしれーだろ。
でもな、お前はこのスレを読むだけで、参加することはできねーんだよ。
可愛そうにな、プププ。
俺は今、ライブでこのスレに参加してる。
すっげー貴重な経験したよ。この先いつまでも自慢できる。
まあ、お前みたいな出遅れ君は、html化されたこのスレを指くわえて眺めてろってこった。
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。