アカウント名:
パスワード:
ごく稀にでも+500%になりうるようなら失格です。そして、そうならない保証はGCという機能の性質から本質的に困難です。
乱暴すぎる議論では。GCによる中断の上限時間を保証するreal-time GCはありますし、 逆に普通のmalloc/freeに上限時間保証はついてないんじゃ? (というかリアルタイムOSを前提にしなけりゃ システムコールにさえそんな保証はありませんね)
C/C++だって、オブジェクトのエクステントがスコープと一致しない時は自前でリファレンスカウンティングを 実装したりしますが、リファレンスカウンティングの実行時間保証は難しいですよ (グラフの大きさの上限が 分かってればその範囲で保証できますが、それならGCも同じ)。 「そういう用途にリファレンスカウンティングは使わない。メモリプールでやる」っていうのなら、 同様のテクニックはLispでも昔から使われています。「初期化が終わってサービスループに入ったら決してGCを起こさない」という ふうに書くことはできるし、それがなぜ「C/C++より危険」なんでしょう。せいぜいリークを起こす危険が同程度あるって 程度では。アロケーションを起こすライブラリ関数が使えなくて不便っていうのはありますけどね。
まあ、GCのある言語でわざわざGCを使わないコーディングをするのは不自然なんで、そこまでして使わなくても そういう用途にはC/C++でいいじゃん、という結論には同意します。 でもGCの有無で世界が二分されるわけでもなくて、連続したスペクトルが あるんじゃないですか。C/C++だってその端っこだけで使われてるわけじゃなし、オーバーラップする大きな部分においては 比較することに意味があると思いますよ。
>ごく稀にでも+500%になりうるようなら失格です。
そういう理屈だとOSのシステムコールを読んでもダメ、キャッシュを使うのもパイプラインもダメということになるはずです。でも実際はそうじゃない。実際には一定の許容範囲があり、ごく希ならOKなのですけどね。
C言語を良く分かってない人ほど「GCは非決定的だから糞、C言語は決定的だから最強」という議論になりがちなのですね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」
結局はGC付き言語 (スコア:0)
もちろんC/C++から仕事の一部を奪える可能性はありますが、全部は不可能です。
Goの相手はむしろJava,C#などの方でしょう。
効率的で高性能なGC、実行速度はC++から平均+10%程度、素晴らしい性能です。しかし、C/C++が使われる分野では平均など意味はありません。
ごく稀にでも+500%になりうるようなら失格です。そして、そうならない保証はGCという機能の性質から本質的に困難です。
明示的なメモリ管理は、このような用途では必須です。それが出来る高級言語は、普及したものでは今でもC/C++くらいしかありません。
GC付き言語にも出来なくはないでしょうが、GC前提で作られた言語で無理矢理明示的なメモリ管理をするのはC/C++よりずっと危険です。
言語は適材適所ですからね。GoはC/C++が得意とする分野の適材ではないでしょう。
得意な分野は別にあるはずなので、C/C++にケンカ売ってもしょうがないですよ。
Re:結局はGC付き言語 (スコア:0)
乱暴すぎる議論では。GCによる中断の上限時間を保証するreal-time GCはありますし、 逆に普通のmalloc/freeに上限時間保証はついてないんじゃ? (というかリアルタイムOSを前提にしなけりゃ システムコールにさえそんな保証はありませんね)
C/C++だって、オブジェクトのエクステントがスコープと一致しない時は自前でリファレンスカウンティングを 実装したりしますが、リファレンスカウンティングの実行時間保証は難しいですよ (グラフの大きさの上限が 分かってればその範囲で保証できますが、それならGCも同じ)。 「そういう用途にリファレンスカウンティングは使わない。メモリプールでやる」っていうのなら、 同様のテクニックはLispでも昔から使われています。「初期化が終わってサービスループに入ったら決してGCを起こさない」という ふうに書くことはできるし、それがなぜ「C/C++より危険」なんでしょう。せいぜいリークを起こす危険が同程度あるって 程度では。アロケーションを起こすライブラリ関数が使えなくて不便っていうのはありますけどね。
まあ、GCのある言語でわざわざGCを使わないコーディングをするのは不自然なんで、そこまでして使わなくても そういう用途にはC/C++でいいじゃん、という結論には同意します。 でもGCの有無で世界が二分されるわけでもなくて、連続したスペクトルが あるんじゃないですか。C/C++だってその端っこだけで使われてるわけじゃなし、オーバーラップする大きな部分においては 比較することに意味があると思いますよ。
Re:結局はGC付き言語 (スコア:1)
>ごく稀にでも+500%になりうるようなら失格です。
そういう理屈だとOSのシステムコールを読んでもダメ、キャッシュを使うのも
パイプラインもダメということになるはずです。でも実際はそうじゃない。
実際には一定の許容範囲があり、ごく希ならOKなのですけどね。
C言語を良く分かってない人ほど「GCは非決定的だから糞、C言語は決定的だから最強」と
いう議論になりがちなのですね。
Re: (スコア:0)
やれ近頃の軟弱な言語はとか言ってるのはよく聞きます
で、そういう人が組み込み系のネタに回されたりすると
その筋のプロ連中に似たような感じで叩かれたりしてて微笑ましいですな
しまいには「イマドキそんな修行僧みたいなことやってられるか」と
「富豪的プログラミング」に戻っていくと