読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

C++ と C# を比べて・その2

C++ C#

こんどは C++C# を比べて C# のほうがいいところ
#まぁ、独断と偏見なので悪しからず。
C# というか、Visual Studio のいいところになってるかも(笑)

参照ベースってステキ:)

C# は参照ベースなので、インスタンスを戻り値で戻してもコストがかからない。
なので、戻り値のインスタンスからメソッドを呼ぶ書き方が C++ よりも多くの場所でできる。
#32bit データをバイト列にして反転させてバッファにコピーみたいな例
#バイト列を返す Reverse() は拡張メソッドで追加

BitConverter.GetBytes( Data ).Reverse().CopyTo( buffer, 6 );

#これって関数型言語に近いのかな??

インテリセンスが賢すぎ:)

なんでもかんでもインテリセンスが効く。
コードを書くというより、書くコードを選択してる感じ。

コンポーネントの分割がやりやすい:)

DLL の依存関係が簡単に解決できるので、コンポーネント単位に DLL を作って参照関係を作るのが最近のマイブーム:)
コンポーネント単位で作業分担をすれば、単体テストコンポーネント単位に行えるし、作業ソースがぶつかることも少なく、SVN なんかでのマージも楽ちん(衝突が発生しにくい)。


極端な話、メインの画面やらメニュー以外は全部 DLL でコンポーネント分け。
みてくれとロジックも分けてテストをし易くした。
#これって普通??

いろんなツールとの連携がしやすい:)

コンポーネント分割にからんで、分割や依存関係の解決がしやすいので、Hudson との相性が C++ より良い。
C++ の場合、ヘッダーだの、ライブラリだのの依存関係を自分で解決しないといけないので、その点では C# のほうが好きだったり。

コンポーネントがそろってる:)

MS-Office にしろ、XML-RPC にしろ、Wii リモコンにしろ、遊べるツールが多い。
いろんなツール同士の架け渡しになるソフトが作りやすい。

結局

言語としてはやっぱり C++ が一番好き。パワフルだし。
仕事で使う言語としては環境の良さで C# かな。
やっぱり、基本 C# で適宜 C++ やら C++/CLI で補っていくやり方が今の自分の中でのベストだと思う。