C++のGC談義
C++はスタック上にクラスのインスタンスを作れないようにしてヒープ上にしかクラスのインスタンスを置けないように設計思想を変えるべき!そうすれば面倒なクラス内ギミックも不必要になるし、GCも効率的になるのに。
2012-04-09 23:54:43nice joke. RT @studiokingyo: C++はスタック上にクラスのインスタンスを作れないようにしてヒープ上にしかクラスのインスタンスを置けないように設計思想を変えるべき!そうすれば面倒なクラス内ギミックも不必要になるし、GCも効率的になるのに。
2012-04-09 23:56:52僕は <chrono> みたいな設計が大好きなので,自由にオブジェクトを配置できないと困るっていうか C++ を使う理由なくなるっていうか
2012-04-09 23:58:28@SubaruG ええっ?絡むの?でもでも、インスタンス毎にどこのアドレス空間に置くかを指定しておけばmark and sweepのGC効率はよくなる筈だよ。
2012-04-09 23:59:32オブジェクトをヒープに作ってGCに頼りたいならJavaやれとか思っちゃうけどまあ彼には彼なりのC++に期待したい理由があったんだろう。
2012-04-10 00:00:38あえてマジレスするなら, RAII が不完全になるので GC は要らないです,っていうのは,まぁ良く言われていることでありまして.
2012-04-10 00:02:26@SubaruG そうだったのかー。私はスタックは大切にしたい人なのでPODと再帰にしか使いたくないなーと思っていたのです。あとGCなんかにスタックの中を覗き見られて操作されたくないし…。
2012-04-10 00:03:09別にプログラムで使う資源っていうのはメモリ領域だけじゃないので, RAII はなんだかんだで便利だし,っていうか C++ 使ってて new を書きたくなるケースって本当に僅かっていうか
2012-04-10 00:03:40@SubaruG とあるクラスがメモリ破壊のバグを持っていて、スタック壊してとんでもないことになったらやだなーってのがかなり深刻な理由であったりします。なので、クラスは別メモリ領域に確保したいのです。
2012-04-10 00:06:01C++ に GC が要らないっていうのは,散々に言い尽くされた議論なので,本気で言ってるとしたら正直 勉強不足だなとしか. (だから nice joke と反応した
2012-04-10 00:10:28いや, flyweight パターンとか,あるいは immutable な string を効率よく扱おうと思ったら, GC は有って良いですよ,もちろん. そこは否定しない.
2012-04-10 00:11:10@SubaruG 私的にはコールスタックを破壊されるよりはマシだと思います。エラー忘却型だとした場合、不正な値があったらエラーが起こったであろうオブジェクト郡を廃棄してまだプロセスは実行できるでしょうし…、ですが、スタックの破壊はどうやって元の状態に戻せばいいか思いつきません。
2012-04-10 00:11:19C++ に GC があれば(例えば) string を constexpr に出来る,っていうのは,まぁ良く言われていることであって,別に GC が要らない訳じゃあない.
2012-04-10 00:12:02@SubaruG native環境でGCを局所的に使いたいというニッチなニーズはやっぱりD的なアレをC++にもライブラリとして存在させようという狂気的な何かです。やっぱりC++は全能な言語でないと許せないって皆さん思っているように感じられますし。
2012-04-10 00:12:34@studiokingyo はぁ. ちなみにコールスタックを破壊したほうが即座にエラーになるという意味ではマシですね
2012-04-10 00:13:08@studiokingyo 言っている意味が良くわかりませんが,とりあえず C++ に GC が入ったら僕は C++ を使うのを止めます.
2012-04-10 00:14:37