- 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/
- 175 名前:デフォルトの名無しさん mailto:sage [04/05/01 22:03]
- >>174
どういうところが限らないんですか? 内容無しの反論なら誰でも出来ます。
- 176 名前:デフォルトの名無しさん mailto:sage [04/05/01 23:49]
- >>175
>高級言語は、多かれ少なかれどこか影でこそこそやってます。 証明できないからじゃない?
- 177 名前:デフォルトの名無しさん mailto:sage [04/05/02 00:51]
- >>175
「高級言語では」何が「影でこそこそ」に当たるの? たとえばa = b + c * d; が tmp = c * d; a = b + tmp; とかに分解される事? マクロアセンブラでも、 ラベルがアドレスに展開されたりする事は 影でこそこそに当たらないの? たとえば、Cでは何が影でこそこそしてる?Pascalでは? どっちも高級言語じゃないのか、スマンな。
- 178 名前:デフォルトの名無しさん [04/05/02 01:04]
- >>177
GCの話じゃねーのか?
- 179 名前:デフォルトの名無しさん mailto:sage [04/05/02 02:50]
- 言語が高級になればなるほど、コンピュータがやってくれることが増えるってだけだろ。
コンピュータは元から人間の手間を省く道具。だからそれは自然なこと。 それが嫌いならアセンブラ(よりも機械語のほうがいいか?)を使えってことだろ。
- 180 名前:デフォルトの名無しさん mailto:sage [04/05/02 05:06]
- >>178-179
影でこそこそが気持ち悪いって言う人間に 考えもなしにアセンブラで組めなんていう煽りを何のするなということだ。 177で正論ぶってるから、更に気になっただけだ。
- 181 名前:デフォルトの名無しさん mailto:sage [04/05/02 05:07]
- ×考えもなしにアセンブラで組めなんていう煽りを何のするなということだ。
○何の考えもなしにアセンブラで組めなんていう煽りをするなということだ。 編集ミスった。
- 182 名前:デフォルトの名無しさん mailto:sage [04/05/02 05:07]
- ×177
○175 、、、orz
- 183 名前:デフォルトの名無しさん mailto:sage [04/05/02 11:50]
- アセンブラは全く知らないんだけどメモリ解放はどうするの?
やはりプログラマによる手動解放?
- 184 名前:デフォルトの名無しさん mailto:sage [04/05/02 12:51]
- >>183
mallocに相当するコード自分で買い解け
- 185 名前:デフォルトの名無しさん mailto:sage [04/05/02 14:25]
- brkとかHeapAllocとかOS提供のAPIを呼ぶ
あとは、cのライブラリをリンクするとか。
- 186 名前:デフォルトの名無しさん [04/05/03 23:09]
- C++を覚えるっつーか、使いこなすレベルになるころには
管理職をやらされるのが日本のコンピューター業界。 そして新人は今日もまたメモリリークしまくりのコードを量産する。
- 187 名前:デフォルトの名無しさん [04/05/03 23:15]
- >>186
年取ると新しい考え方を受け入れられくなったり、徹夜の仕事 がとても続けられなくなるからそれでいいのよ。
- 188 名前:デフォルトの名無しさん mailto:sage [04/05/04 09:42]
- >>187
若い頃から徹夜仕事しなかったし、この歳になっても睡眠時間3時間ですが何か。 あーでも、役職はついてるし部下もいるなぁ。
- 189 名前:デフォルトの名無しさん mailto:sage [04/05/04 11:47]
- >>188
過労死すんなよw
- 190 名前:デフォルトの名無しさん [04/06/12 19:50]
- 過労死しそうな人が出るほど C++は難しすぎ
- 191 名前:デフォルトの名無しさん [04/06/15 06:24]
- >>190
激しく同意
- 192 名前:デフォルトの名無しさん mailto:sage [04/06/18 14:54]
- c++の何が難しいのかがわからない。
難しいこともできるって話じゃないのか? 俺的にはVBの方が難しい(めんどい)ような あと、パールとかはキャストがきもい。
- 193 名前:デフォルトの名無しさん mailto:sage [04/06/18 15:26]
- Perlのキャスト?
- 194 名前:デフォルトの名無しさん mailto:sage [04/06/18 18:52]
- 俺も、Javaや、VBのほうが、よっぽど難しい。
- 195 名前:192 [04/06/18 21:30]
- >>193
いや、だいぶ前にちょろっとやっただけだからうろ覚えだが、 c++なら明示的にキャストして、キャストできないようならコンパイル時にエラーでるしょ? パールって何でもかんでも、暗黙的に型変換してるイメージあって、怖い。
- 196 名前:デフォルトの名無しさん [04/06/18 21:37]
- perlがCGIの筆頭であり続けるのは、そのきもいキャストのおかげなのだが。
- 197 名前:デフォルトの名無しさん mailto:sage [04/06/18 21:39]
- perlに型はありませんよ
- 198 名前:デフォルトの名無しさん mailto:sage [04/06/18 21:43]
- コード中に型宣言が無いだけで実行時にはどの言語には型判断されてるでしょ
バリアント型ってそういうもんだと思われ
- 199 名前:デフォルトの名無しさん mailto:sage [04/06/18 21:45]
- ×言語には
○言語でも
- 200 名前:デフォルトの名無しさん mailto:sage [04/06/18 21:49]
- なぜそこでVB?
- 201 名前:デフォルトの名無しさん mailto:sage [04/06/18 21:50]
- バリアント型ってVBだけか?jsとかのvarもそれだろ?
- 202 名前:192 mailto:sage [04/06/18 22:10]
- いや、そのキモイキャストがいやだってだけ・・・。筆頭であろうが気にしない。
実行時判断っていうのが怖いわけで、例外とかめんどくさ。 俺が個人的にVB嫌いなのは、ポインタ取得とかめんどくさいから。 あと、まぁ、なんか色々めんどくさい。とc++になれてるとそう思う。
- 203 名前:デフォルトの名無しさん mailto:sage [04/06/18 22:11]
- >>201
その気になればC++だってValiantクラスとか作れるだろう class Valiant { public operator (int)(); operator (char)(); operator (short)(); operator (long)(); operator (long long)(); operator (float)(); operator (double)(); operator (long double)(); operator (char *)(); operator (wchar_t *)(); ・・・
- 204 名前:192 mailto:sage [04/06/18 22:17]
- >>203
boost::anyとかあるけどね。 ATL系とかでも。 でもboost::anyの場合、 代入するときはともかく、値を取得するときは明示的にキャストして 失敗したら例外送出だからなぁ。 なんつか、この明示的にって段階踏まないといやなわけでして。
- 205 名前:デフォルトの名無しさん mailto:sage [04/06/18 23:59]
- boost::variant
- 206 名前:192 mailto:sage [04/06/19 00:10]
- >>205
そういや、それもあったなぁ。 いまだ使ったこと無いが。 なんに使うと効率てきなのかいまいちわからん。 ビジターパターンに使えるっていうが、ビジターパターン自体まだ使ったこと無いや。
- 207 名前:デフォルトの名無しさん [04/06/19 00:15]
- C++が難しくないなんて言えるなんてすごいな。
今までVB,C,C++,Dehphi,Java,PHPなどで業務アプリを作って来たけど、 一番生産性が低いと感じたのはC++だった。 もちろん、それなりに習熟すれば生産性はあがるのだろが、 習熟するまでの時間がかかりすぎる感がある。 今の職場では多分俺が一番C++に詳しいけど、C++をマスターしたなんてとても言えないし、 積極的にC++を採用したいか?と聞かれれば可能な限り他言語を選択したい。 C++マンセーになる理由が俺には解らん。。。
- 208 名前:デフォルトの名無しさん mailto:sage [04/06/19 00:27]
- >>207
WindowsのServiceアプリ組むときなんかはC系の言語が一番便利なわけで 人によってはCでそのまま組むよりもC++の方が開発時効率が上がる 少なくとも私はそう CよりもC++の方が一度に考えなければいけない要素が少なくて済む
- 209 名前:デフォルトの名無しさん mailto:sage [04/06/19 01:10]
- >>207
C++以前にCに十分習熟していないせいだと思うよ
- 210 名前:デフォルトの名無しさん mailto:sage [04/06/19 01:26]
- 生産性の低い言語=習熟しにくいだからな
熟練者が生産性高いよって言ってもサンプルにはならへんのが実情 個人的にはDに一番期待している
- 211 名前:デフォルトの名無しさん mailto:sage [04/06/19 01:31]
- つーか、業務系なんてどの言語で書いたって同じだろ。
C++のメリットが活きるのは寧ろ制御系だからな。
- 212 名前:デフォルトの名無しさん mailto:sage [04/06/19 01:36]
- てか、俺的イメージだが、
c++からcを省いたようなもんがJAVAって感じだが・・・。 VBで生産性あがるっていっても、簡単なもんだけでしょ?めんどいことになるとできなそうだし。 デルファイはいじったことないなぁ、簡単らしいって話はきくが。 PHPもまだないなぁ。 俺はc++2年ほどやったが、 後は、 アセンブラ、 ロケール、 メモリアロケータ、 modern c++ design 読んで、 デザパタ極めて、 マルチスレッドも極めるくらいかねぇ。 って先なげぇ。 まぁ、一部c++以外にもつかえるが・・・。
- 213 名前:デフォルトの名無しさん mailto:sage [04/06/19 20:53]
- ISO C++の規格策定にかかわっている人にとっても、C++は難しいらしい。
現行の規格に内在するバグというか不都合な点がバラバラ出てきている。 www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html
- 214 名前:デフォルトの名無しさん [04/06/20 11:10]
- C++もJavaも使ってる俺からすればJavaの方が圧倒的に簡単。
両者比較してJavaのほうが難しいなんていってる奴はオブジェクト指向理解して無いだろ(プププッ せっかくC++コンパイラ使ってるのにCみたいな書き方ばっかりする宝の持ち腐れオオバカや郎なんだろうな(www
- 215 名前:デフォルトの名無しさん mailto:sage [04/06/20 12:00]
- >>214
誰も「Javaのほうが難しい」なんていってないと思うが。
- 216 名前:デフォルトの名無しさん mailto:sage [04/06/20 12:07]
- Javaしか出来ないJava厨の思考回路は意味不明過ぎて難しい
- 217 名前:デフォルトの名無しさん mailto:sage [04/06/20 17:25]
- Cしか出来ないJavaを使った事のないような時代遅れの無能親父の煽りはもう沢山
- 218 名前:デフォルトの名無しさん mailto:sage [04/06/20 20:40]
- Javaしかできない連中はただいま大量生産中です。
正直言ってヤバいっすね。
- 219 名前:デフォルトの名無しさん mailto:sage [04/06/20 21:02]
- ほとんどc++しかできないです。
まぁ他の覚えるのはそれほど苦労はしないけど。使わんからすぐ忘れる。
- 220 名前:デフォルトの名無しさん mailto:sage [04/06/20 21:05]
- 次の本命はD言語だな
メモリリークを起こさない上に任意のタイミングでGCできる優れもの 2chブラウザもDで作れば無駄にメモリ取らずに済むよ
- 221 名前:デフォルトの名無しさん mailto:sage [04/06/20 21:23]
- >メモリリークを起こさない上に任意のタイミングでGCできる優れもの
大抵のGCはメモリリーク起こさないし、任意のタイミングでコレクトできると思うんだけど >2chブラウザもDで作れば無駄にメモリ取らずに済むよ なんで?
- 222 名前:デフォルトの名無しさん mailto:sage [04/06/20 21:37]
- >>221
>>メモリリークを起こさない上に任意のタイミングでGCできる優れもの >大抵のGCはメモリリーク起こさないし、任意のタイミングでコレクトできると思うんだけど ランタイムなしでそれを実現できるのさ >>2chブラウザもDで作れば無駄にメモリ取らずに済むよ >なんで? 2chブラウザは起動初期の倍近くのメモリリークが起こってるからね
- 223 名前:デフォルトの名無しさん mailto:sage [04/06/20 21:45]
- >>222
ランタイムなしでそれを実現出来るから何? 2chブラウザって沢山あるけど、そもそもどの2chブラウザなの?
- 224 名前:デフォルトの名無しさん mailto:sage [04/06/20 22:03]
- >>223
ランタイムが無いって事は早いって事じゃん! ちなみに俺にブラウザはLive2ch、最強だぜ
- 225 名前:デフォルトの名無しさん mailto:sage [04/06/20 22:17]
- Live2ch って VB製じゃなかったか?
速さとか軽さとかを追求したものではないだろう……。
- 226 名前:デフォルトの名無しさん mailto:sage [04/06/20 22:22]
- というかVBランタイムってGC無いんだと今知ったのは内緒w
- 227 名前:デフォルトの名無しさん mailto:sage [04/06/20 22:29]
- ネイティブでGC作る言語は強力だとは思うが
資産が無い上にMSがC#発表したばかりでのってくるとも思えないのが痛い
- 228 名前:デフォルトの名無しさん mailto:sage [04/06/20 22:38]
- おまいら、自分のケツぐらい自分でふけよ。
その内、下の世話までM$におながいすることになるぞ。
- 229 名前:デフォルトの名無しさん mailto:sage [04/06/20 23:09]
- てーか、GCいらない。
メモリ取得、解放するときの動作早くしろ。 自分でメモリアロケータをカスタマイズしなくても、 コンパイラオプションの設定で超高速で動くようにしてくれ。
- 230 名前:デフォルトの名無しさん mailto:sage [04/06/20 23:20]
- GC使ったほうが長時間安定した速度で動くから、
非GC環境が速いとも言い切れないらしいよ
- 231 名前:デフォルトの名無しさん mailto:sage [04/06/21 00:12]
- 今ホットゾヌ2使っているけど、メモリリークひどすぎ。Delphiなんだけどなぁ。
スレをどんどん見ていくとあっという間に500MBほどに未使用メモリが膨れあがる。 正直一番気に入っているので、C#で書き直して( ゚д゚)ホスィ…。
- 232 名前:デフォルトの名無しさん mailto:sage [04/06/21 00:21]
- >>230
できれば根拠が知りたい。
- 233 名前:デフォルトの名無しさん mailto:sage [04/06/21 00:55]
- >>232
良く>>230の言っている意味がわからんが、非GC環境で「メモリリーク」が どんどん起こったとして、メインメモリを食いつぶしてスワップ起きまくりに なるから遅くなる、とかそういう次元の話なのだろうか。
- 234 名前:デフォルトの名無しさん mailto:sage [04/06/21 01:07]
- メモリリークは非GC環境に限った話じゃないんだが。
- 235 名前:デフォルトの名無しさん mailto:sage [04/06/21 01:25]
- >>232-233
www.kmonos.net/alang/d/ より C/C++ プログラマは明示的なメモリ確保と解放に慣れていて、 ガベージコレクタの効率や利点については懐疑的なようです。 私は、 一からガベージコレクションを念頭に置いて書いたプロジェクトと、 既存のプロジェクトを GC を使うように方向転換した経験のどちらも持っていますが: ガベージコレクトされたプログラムの方が高速です。 これは直感に反するかもしれませんが、その理由は:
- 236 名前:デフォルトの名無しさん mailto:sage [04/06/21 01:25]
- ●明示的なメモリ管理の際によく使われる手法は、参照カウントです。
代入があるたびにカウントを増やしたり減らしたリソースを挿入するのは、 速度低下の原因になっています。 スマートポインタクラスでラップしても、 速度的な解決にはなりません。( またいずれにせよ、 循環参照を削除できない参照カウント方式は、 一般的な解決策ではありません。) ●オブジェクトによって獲得されたリソースの解放には、 デストラクタが使用されます。 多くのクラスでは、このリソースとは 割り当てられたメモリのことです。 GCを使えば、 ほとんどのデストラクタが空になり、完全に削除してしまえます。 ●メモリ管理のためのデストラクタは、 オブジェクトがスタックに置かれたときに影響が顕著になります。 例外が発生したときに、全てのスタックフレームでデストラクタが呼び出され、 メモリを解放するような仕組みが必要となるのです。 もしデストラクタが関係しなければ、例外を処理する特別なスタックフレームを 設定する必要がなくなり、コードは高速に実行されます。 ●メモリ管理に必要なコードは全てを合わせるとちょっとした量になります。 大きなプログラムになるほど、キャッシュに入らない部分が増え、 ページングが多く発生し、 プログラムが遅くなります。 ●GCは、メモリが残り少なくなってきたときのみ実行されます。 メモリに余裕があれば、プログラムは全速力で実行され、 メモリ解放に一切時間を取られません。 ●モダンなGCは、過去の遅いものより遙かに発展しています。 世代型のコピーGCには、 昔のマーク&スイープアルゴリズムの非効率さはありません。 ●モダンなGCはヒープの詰め直しを行います。 これによってプログラムが活発に参照するページの数を減らし、 キャッシュヒット率を高め、 スワップ回数が減ります。 ●GCを使うプログラムは、メモリリークの積み重ねで次第にパフォーマンスが悪化、 という事態に縁がありません。
- 237 名前:デフォルトの名無しさん mailto:sage [04/06/21 09:34]
- > ●GCを使うプログラムは、メモリリークの積み重ねで次第にパフォーマンスが悪化、
> という事態に縁がありません。 これはウソだな
- 238 名前:初期不良 mailto:sage [04/06/21 10:07]
- まあ、突っ込みたいのはわかるがメモリリークになる可能性は低くなっていると言う事でいいんじゃねーの?
- 239 名前:232 mailto:sage [04/06/21 10:57]
- >>235
提示してくれたページ、GC周りをさらっと目を通した。ありがとう。 ●スマートポインタは使いたいケースに応じて選ぶことができるから、 参照カウントだけと比べるのはどうかなぁと思う。 ●デストラクタが空になるのはスマートポインタでも同様。 ●例外に関しては同意。 ●メモリが少なくなって来た時にごっそりメモリ解放するんだと むしろその一瞬非常に不安定になるのではないか。(これは欠点に書いてあったな) 自分は例外バンバン投げたいのでデストラクタが重くならないなら それはありがたい。 ただ、Dって面白そうだね。autoを使ってscopedに解放もできちゃうようだし。 きめ細やかな言語だと感じた。GCの話題から外れてゴメン。
- 240 名前:デフォルトの名無しさん mailto:sage [04/06/21 12:00]
- まあ、スタイルにも依るんでしょうけど。
●明示的なメモリ管理の際によく使われる手法は、参照カウント... shared_ptrってそんなに頻繁にコピーってする? 俺は所有権のはっきりしないリソース(ファイル・ハンドル等)の管理に 使うことが多く、参照カウンタが変化するのってタスク相当の粒度の オブジェクト間の構成を初期化するときぐらい。 ●またいずれにせよ、 循環参照... 上記のような使い方をする場合は、保持するオブジェクトと 保持されるオブジェクトの関係が階層的になり、参照がループすることは 無い。むしろGC導入によるdtor呼び出し遅延のほうが俺的には大問題。 ●メモリ管理のためのデストラクタは、 オブジェクトがスタックに... 俺の場合、Appレベルでは例外って殆ど使わないし。 つうか、GCスレってないのね。
- 241 名前:デフォルトの名無しさん mailto:sage [04/06/21 18:54]
- >>240
「コンパイラ・スクリプトエンジン」相談室が失速気味なので 良かったら使ってやってください。 ttp://pc5.2ch.net/test/read.cgi/tech/1070089173/
- 242 名前:デフォルトの名無しさん mailto:sage [04/06/21 20:27]
- >>239
>●デストラクタが空になるのはスマートポインタでも同様。 同様じゃないよ。C++だと書かなくてよくなるだけで、実際はコンパイラが生成してる。 GCがあると、「完全に」削除できる。
- 243 名前:デフォルトの名無しさん mailto:sage [04/06/21 20:40]
- 脳内コンパイラキタ------
- 244 名前:デフォルトの名無しさん mailto:sage [04/06/21 20:47]
- ?
- 245 名前:デフォルトの名無しさん mailto:sage [04/06/21 21:33]
- >>242
dtorに書いてなくても暗黙的にメンバ変数のdtorが呼ばれるつう 意味ならその通りだけど。 ていうか、236の2番目のはどういうメリットなんだろう。 記述忘れてメモリリークって意味ではauto_ptr/shared_ptrで書けば ありえないし。まともなC++erならメンバにauto_ptr等を含んだ オブジェクトを頻繁に(例えばsortの比較関数オブジェクト内で) 生成・破棄するようなコードはかかないだろうし。 サイズが減ってキャッシュが云々ってのもいまいち説得力に欠ける。
- 246 名前:デフォルトの名無しさん mailto:sage [04/06/21 22:00]
- >>242
オブジェクトのデストラクタは空 スマートポインタのデストラクタは空でない ということがいいたいのだろう オブジェクト内にスマートポインタをもつなら 結局オブジェクトのデストラクタも空でなくなるが
- 247 名前:232 mailto:sage [04/06/21 22:06]
- >>242
デストラクタについては、 1. ソース上書かなくて良くなる 2. スコープが切れた瞬間に呼び出されるわけではなくなるから例外が効率良くなる と言っているように見えた。だから1についてスマートポインタと同様と書いたんだが、 文意は違ったのかもな。でも、把握した事実は変わらないと思う。 完全に削除って表現が微妙だな。デストラクタが呼ばれなくなるわけじゃなくて 呼ばれるタイミングがスコープから抜けるタイミングではなくて、GCのタイミングになるよ という意味だよね。 …C++から離れてる。そろそろやめたほうが良さそうだ。名無しに戻ります。
- 248 名前:デフォルトの名無しさん mailto:sage [04/06/21 22:50]
- >>235
一般論としてGC付のが速いって言うなら 理屈はいいから実際のベンチ出せといいたい。
- 249 名前:デフォルトの名無しさん mailto:sage [04/06/21 23:15]
- >>248
お前もGC無しの方が早いというならベンチ出せコラ つか、どういうベンチプログラムならうまく計れるんだコレ
- 250 名前:デフォルトの名無しさん mailto:sage [04/06/21 23:17]
- オブジェクトの生成と破棄(スコープアウト)をひたすら繰り返すベンチだな
- 251 名前:デフォルトの名無しさん mailto:sage [04/06/21 23:20]
- 計るんならゴミ回収遅延によるシステム全体の
ディスクキャッシュ効率の低下も考慮しとけって。
- 252 名前:デフォルトの名無しさん mailto:sage [04/06/21 23:24]
- >●GCは、メモリが残り少なくなってきたときのみ実行されます。
>メモリに余裕があれば、プログラムは全速力で実行され、 メモリ解放に一切時間を取られません。 これを素直に読むと GC有りのプログラムを多数常駐させると互いにメモリ圧迫しあって パフォーマンスががた落ちになりそうに聞こえるわけですが
- 253 名前:デフォルトの名無しさん mailto:sage [04/06/21 23:27]
- 言語とは関係ないとはいえ、現実的に
メモリが不足しがちだとOSまで不安定になるしねぇ。
- 254 名前:デフォルトの名無しさん mailto:sage [04/06/21 23:30]
- あとDのコンパイラの最適化ってどの程度やってるの?
もともとコンパイラ屋だから能力的にはできるんだろうけど 言語仕様決めてライブラリガリガリ書いてその上最適化もやるって無理っぽくない?
- 255 名前:デフォルトの名無しさん mailto:sage [04/06/22 01:47]
- ・メモリが不足したらGCが走る
・メモリが不足するとOSが不安定になる ということは、これに ・論理メモリよりも物理メモリの方が小さい をプラスすると ・GCが走るときはOSが不安定なとき ・OSが不安定になるまでGCが走らない ってなことになるんじゃないかしら?
- 256 名前:デフォルトの名無しさん mailto:sage [04/06/22 01:59]
- コンパイラ屋だけど、実際GCの方が総合的には速いと思う、
コンパイラ側が全部管理できればオプティマイザに特別なアプローチが出来るからね。 ただC++には似合わないと思う、最小限の機能強化でGCはライブラリにして今流のtemplateでエレガントに実装すべきだ! と主張してみたかったりもする。 C/C++は、組み込みから汎用までいかなる環境にも耐えられる言語であって欲しいです。 言語本体は最小限の機能のみをもつ機械語翻訳機がいい。 ところでDはGCを自作で置き換えるとかできるのかな? 日に日に強力になってきているDに興味が沸きつつある今日この頃。
- 257 名前:デフォルトの名無しさん [04/06/22 05:44]
- Cは恥かしすぎ
- 258 名前:デフォルトの名無しさん mailto:sage [04/06/22 10:13]
- >>256
>総合的には速いと思う GCの最適化で?それともコードの実行時最適化? もっともC++でもそういう総合的に早くするって考えは あるよね。例えばvectorにpush_backする時にサイズを 2倍ずつ増やすとか。C++erでもそういうトレードオフを 理解しないでSTLとか使ってる奴っているだろうし。
- 259 名前:デフォルトの名無しさん [04/06/24 17:21]
- vectorが完全に連続したメモリを確保するのに対して、
dequeがブロック単位でしか連続したメモリを確保しない事を知らない香具師が多すぎ
- 260 名前:デフォルトの名無しさん mailto:sage [04/06/24 17:25]
- 突然なんだ?
- 261 名前:デフォルトの名無しさん mailto:sage [04/06/24 17:29]
- で、ベンチはまだか?
- 262 名前:デフォルトの名無しさん mailto:sage [04/06/25 00:25]
- >>259
バッファ用のバイト配列をvectorで確保すると 知らない人間は面食らうよね
- 263 名前:デフォルトの名無しさん mailto:sage [04/06/25 01:43]
- C++の難しさって殆んどtemplateが占めてんじゃねーの?
と思ったら>>144みたいなのも居るのね。。。
- 264 名前:デフォルトの名無しさん mailto:sage [04/06/25 10:04]
- vector v(x);
read(&v[0]); なんてやるなら、素直にscoped_arrayや、 それが許されないならコピペや自作で対応した方が 見た目にも易しいし。
- 265 名前:デフォルトの名無しさん mailto:sage [04/06/25 10:27]
- >>264
同意しかねる。 その用法はvectorの設計コンセプトに合致するものであり、何の不満も無いよ。
- 266 名前:デフォルトの名無しさん mailto:sage [04/06/26 12:49]
- 同じく同意しかねる。ただ不満はある。
C++の言語が難しくて聖書のようにあげられる代表的な数冊の本を 読破理解しないと使いこなせないような言語になっちゃうのは 見た目に直感的じゃないからと思う。
- 267 名前:デフォルトの名無しさん mailto:sage [04/06/26 13:02]
- でも全体としての言語仕様の大きさはともかく、
すぐ上で挙げられている「テンプレート」や「STL」といった個々の要素に関しては、 習うより慣れろを地で行ってると思うよ。本はリファレンス的に使えばそれで。
- 268 名前:デフォルトの名無しさん mailto:sage [04/06/26 14:42]
- C++の難しさは言語仕様よりも使用方法のノウハウの難しさのような気がする
個々はたいした事はないのに組み合わさったときの威力は大きく、それを利用するためだと思う。 template <typename H,typename T> struct TypeList { typedef H head ; typedef T tail ; } ; と書かれれば、これがどんな定義なのかはC++をちょっと知っていれば判るが これをどう活用するのかとなると急に難しくなる。 分りやすい書籍を作るのに従来通りの言語仕様の本とライブラリの本だけでは補えない部分があるのに その部分を上手く解説した本はあまり無い気がする。
- 269 名前:デフォルトの名無しさん mailto:sage [04/06/26 15:16]
- >>268
それ、発想が Lisp 的なんよね。 Lisp 知ってる人からすると、そのコードも見ただけで何がしたいかすぐ分かる。 template を使ったメタプログラミングって関数型言語と似てるらしくて、 Lisp 的表現が良く使われる。
- 270 名前:デフォルトの名無しさん mailto:sage [04/06/26 15:29]
- 実際のコードは逐次処理的にかいてTypeList等で
それらのコードを組み合わせる構造を記述して GenScatterHierarchy等で実際にコードを組み合わせて 実装を生成する。 関数型言語だと構造だけでなく実際に実行されるコードも 関数型っぽく記述しなきゃいけないってのが、慣れてない人間 にとっては厳しい。 そういう意味でC++でのMPっての有難いんだよな。
- 271 名前:デフォルトの名無しさん mailto:sage [04/06/26 21:29]
- 馬鹿は馬鹿なりの使い方すればいいし、
頭いい奴は頭いいなりの使い方すればいい ってだけの話なんじゃないの?
- 272 名前:デフォルトの名無しさん mailto:sage [04/06/26 21:40]
- >>271
両者が一緒にいるときはどうしたらいいのでしょう。
- 273 名前:デフォルトの名無しさん mailto:sage [04/06/26 22:12]
- 一番はバカにコードを書かせないで頭いいヤツに全部かかせることかな。
そっちの方が早く、優秀なモノが出来るだろう。
- 274 名前:デフォルトの名無しさん mailto:sage [04/06/26 22:21]
- 根幹にあたる部分を、頭いい奴にザッと作らせる。
頭悪い奴には、ただひたすらそれを使うか、応用する部分を作らせる。 プログラミングに限った話じゃないがナ。
- 275 名前:デフォルトの名無しさん mailto:sage [04/06/27 02:40]
- >>272
ベアプログラミングで鍛えるべし。 勉強するきないやつなら、いじめるべし。
|

|