2011年2月22日火曜日

Efficient & Exceptional C++を目指して


C++のコーディングの技術をもう一段向上させたいと思っていたので、ビックカメラに行って良さそうな本を物色してきた。その中で上の2冊を購入した。Efficient C++はプログラムの速さなどのパフォーマンスの改善、Exceptional C++は例外処理などの技術の向上が期待できる。どちらもちょうど欲しかった内容でよかった。
しばらく、C++の技術向上に取り組みたい

3 件のコメント:

maru さんのコメント...

すいません、以下を御教示頂きたく。

金融の数値演算において、C++を使う理由はなにでしょう?

個人的には、全部C言語でいいのではないかと思います。それも、ポインタもあんまり使う必要がないので、Cでなくてもいいくらい(MATLABを使う理由は非常にわかり、それがCライクだからC言語を使うという理由は理解できます)。

オブジェクト試行で、システムを組まないといけない必要性がどうしても理解できません。

御教示頂けると幸いです。

J.S.エコハ さんのコメント...

私はプログラミングに関しては素人なのであまり参考にならないと思います。ただ、たまたま昨日、プログラミングのプロの方とお話をしてその話題になりました。

速さを追求するのならC++よりもCかFortranの方が速いそうです。だから金融の数値演算においてC++を使う必要性はなくてCの方がいいともいえます。オブジェクト指向でシステムを組む必要はないです。

私がC++を使うのは、私が面倒くさがりで、似たような長いコードを書くのが面倒くさいからです。

私はプログラミングは素人なので、for ループをしばしば使うのですが、そうするとMatlabは絶望的に遅いです。

maru さんのコメント...

>C++を使う必要性はなくてCの方がいいともいえます。オブジェクト指向でシステムを組む必要はないです。

で、やはり、そうですよね。私もまるでないと思っておりました。

一応、プロでやっていたので、C++とCとの根本的な違いは理解しているつもりです。

>私がC++を使うのは、私が面倒くさがりで、似たような長いコードを書くのが面倒くさいからです。

「似たような長いコードを書くの」減らす効果について、失礼ながら、C++を使っても、あんまりそのような効果をもたらさない気がしますよ。

で、その効果については、言語どうのうではなく、使いまわせる関数やデータ構造の設計(変数のメモリ領域をどこにするかとか、データ構造をどう作るか)などが重要になると思います。

書いてて気づいたのですが、C++の言語仕様上をC++でコードを作ると、上記の構造体とその構造体の関数を一緒に考えてコードをつくるようになるというのであれば、よくわかる話かもしれませんね。

>そうするとMatlabは絶望的に遅いです。

MatlabやRにおけるベクターの加算等の表現のことでしょうか?

そうであれば、確かに、forは普通使わないでしょうね。実行系内部でforやるのに、実行系上でforやると遅くなるのは、道理です。

とはいえ、プログラムのコード作る人の技量に関係なく、どんな高級言語でも普通にfor使いますよ。

では、御教示ありがとうございました。