アカウント名:
パスワード:
C++で記述し直すことによりメンテナンスがしやすく成るとか性能が上がるとかいった利点が有ったのでしょうか?C++コンパイラは実質的にCコンパイラも内包しているので言語の陳腐化等も問題にはならないと思うのですが
> C++で記述し直すことによりメンテナンスがしやすく成るとか性能が上がるとかいった利点が有ったのでしょうか?
メンテナンス関係以外は思い浮かばないですねー。吐き出すバイナリは原則同じでしょうし、性能(←これってコンパイルに要する時間ですかね)は、最大限頑張って”C”実装と同等になるかもしれないけど、まずそうはならないでしょう。(-_-;;
私はアプリ屋なんですが、普段は”C++”で書いていて、”C”で書くことはもうほとんどありません。なんというか書いているアプリの複雑さが”C++”を使うことが前提になっちゃてて、もう”C”で書ける気がまったくしないんですよね。コンパイラ屋さんも、とうとう「”C”でのメンテナンスは厄介だ!」的な気分になってきたとか?
> 性能(←これってコンパイルに要する時間ですかね)は、実行時の性能に決まってるだろ。いくら根拠のないデマでC++をdisりたいからって曲解にもほどがある
出力したバイナリが実行時に速いということなら意味が通らないよ。”C++”実装のコンパイラでそういうバイナリが出力できるなら、”C”実装のコンパイラでもまったく同じバイナリが出力できるだろ。
ものがコンパイラだけに話がややっこしいですね。1. C++コンパイラがgccをコンパイルするのにかかる時間2. C++でコンパイルしたgccが何かをコンパイルするのにかかる時間3. C++版gccでコンパイルされたものが何かを処理するのにかかる時間何よりも先に、どれについて話しているか明確にした上で話し始めないと会話が成立しなさそうです。
それはさておき、もしC++化によって(2)が高速化して、その結果、時間がかかるけど効果がある最適化手法が使えるようになってそのうち(3)も高速化されるといいですね。逆パターンもあり得ると思いますが。
けれど、C++で実装するのとCで実装するのでは、手間が全然違うだろ?論理上は同じものが書けるとしても、現実的に非常に手間がかかる場合は、「現実的には同じものは書けない」と言える。
極論するなら、今のgccと同等のバイナリを、バイナリエディタ直打ちで書ける神はいるか?
「現実的には、出力バイナリの実行時性能に差が出るほどには違わない」となる可能性のほうが高いのでは?
コンパイラの最適化に目に見える程に差が出るためには、どれくらいの高速化が必要?実装をC++に変えてコードの整理がし易くなったして、最適化に違いが出るほどの高速化ができる気がしない。
…「実用上はたいして違わない」という考え方もあると思うけどね。
今後出てくる最適化がどれくらいの効果を発揮するかなんて、知ってる人いるのか?
いやいや「コンパイラの実装をC++に変えてコードのメンテナンスが行い易くなって、コンパイラ自体のメモリ効率と実行効率が良くなることによって、組み合わせ爆発するCPU命令の組み合わせをどれくらい試せるようになるか?」の話でしょ。一般的な最適化の話じゃなくて。
↑この話に限定すればハードルはけっこう高いと思うが。
いろんな組み合わせを、ブルートフォースで試すのだったら、CでもC++でもあんまり変わらないだろうね。そんなバカなことはしないだろうけど。
> ブルートフォースで試すのだったら、
いや、基本でしょ。いろいろ工夫はあるかもしれないが。というか、オーダーで判断するならむしろ基準になるんじゃね。
じゃあ、いろいろ工夫する場合に、C++にしたことによる効果が現れるんじゃないの?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson
必要性があったの? (スコア:0)
C++で記述し直すことによりメンテナンスがしやすく成るとか性能が上がるとかいった利点が有ったのでしょうか?
C++コンパイラは実質的にCコンパイラも内包しているので言語の陳腐化等も問題にはならないと思うのですが
Re: (スコア:0)
> C++で記述し直すことによりメンテナンスがしやすく成るとか性能が上がるとかいった利点が有ったのでしょうか?
メンテナンス関係以外は思い浮かばないですねー。
吐き出すバイナリは原則同じでしょうし、性能(←これってコンパイルに要する時間ですかね)は、最大限頑張って”C”実装と同等になるかもしれないけど、まずそうはならないでしょう。(-_-;;
私はアプリ屋なんですが、普段は”C++”で書いていて、”C”で書くことはもうほとんどありません。なんというか書いているアプリの複雑さが”C++”を使うことが前提になっちゃてて、もう”C”で書ける気がまったくしないんですよね。
コンパイラ屋さんも、とうとう「”C”でのメンテナンスは厄介だ!」的な気分になってきたとか?
Re:必要性があったの? (スコア:0)
> 性能(←これってコンパイルに要する時間ですかね)は、
実行時の性能に決まってるだろ。いくら根拠のないデマでC++をdisりたいからって曲解にもほどがある
Re: (スコア:0)
出力したバイナリが実行時に速いということなら意味が通らないよ。
”C++”実装のコンパイラでそういうバイナリが出力できるなら、
”C”実装のコンパイラでもまったく同じバイナリが出力できるだろ。
Re:必要性があったの? (スコア:1)
ものがコンパイラだけに話がややっこしいですね。
1. C++コンパイラがgccをコンパイルするのにかかる時間
2. C++でコンパイルしたgccが何かをコンパイルするのにかかる時間
3. C++版gccでコンパイルされたものが何かを処理するのにかかる時間
何よりも先に、どれについて話しているか明確にした上で話し始めないと会話が成立しなさそうです。
それはさておき、もしC++化によって(2)が高速化して、
その結果、時間がかかるけど効果がある最適化手法が使えるようになって
そのうち(3)も高速化されるといいですね。逆パターンもあり得ると思いますが。
Re:必要性があったの? (スコア:1)
けれど、C++で実装するのとCで実装するのでは、手間が全然違うだろ?
論理上は同じものが書けるとしても、現実的に非常に手間がかかる場合は、「現実的には同じものは書けない」と言える。
極論するなら、今のgccと同等のバイナリを、バイナリエディタ直打ちで書ける神はいるか?
1を聞いて0を知れ!
Re: (スコア:0)
「現実的には、出力バイナリの実行時性能に差が出るほどには違わない」となる可能性のほうが高いのでは?
コンパイラの最適化に目に見える程に差が出るためには、どれくらいの高速化が必要?
実装をC++に変えてコードの整理がし易くなったして、最適化に違いが出るほどの高速化ができる気がしない。
…「実用上はたいして違わない」という考え方もあると思うけどね。
Re:必要性があったの? (スコア:1)
今後出てくる最適化がどれくらいの効果を発揮するかなんて、知ってる人いるのか?
1を聞いて0を知れ!
Re: (スコア:0)
いやいや「コンパイラの実装をC++に変えてコードのメンテナンスが行い易くなって、コンパイラ自体のメモリ効率と実行効率が良くなることによって、組み合わせ爆発するCPU命令の組み合わせをどれくらい試せるようになるか?」の話でしょ。一般的な最適化の話じゃなくて。
↑この話に限定すればハードルはけっこう高いと思うが。
Re:必要性があったの? (スコア:1)
いろんな組み合わせを、ブルートフォースで試すのだったら、CでもC++でもあんまり変わらないだろうね。そんなバカなことはしないだろうけど。
1を聞いて0を知れ!
Re: (スコア:0)
> ブルートフォースで試すのだったら、
いや、基本でしょ。いろいろ工夫はあるかもしれないが。
というか、オーダーで判断するならむしろ基準になるんじゃね。
Re:必要性があったの? (スコア:1)
じゃあ、いろいろ工夫する場合に、C++にしたことによる効果が現れるんじゃないの?
1を聞いて0を知れ!