基準の一つとしてベンチマークサイトを探したのですが(http://www.shudo.net/jit/perf/)、Windows環境でC#とVB.NETとCで++とCとVBの比較結果がわかるサイトがあれば教えて頂けないでしょうか?
開発でお金をもらうのは8年ぐらいのプログラマです。
ちょっと質問(ベンチ結果のサイト位置)とは異なる回答になります。すみません。
C#やVB、VCなどの使い分けは作り終わったプログラムの”速さ”ではないことが多いと思います。
(もちろん速さを求めるゲームや数値計算の分野もありますが、それらはASMかCの二択だと思います。しかし速度は言語よりもアルゴリズムに依存する場合が多いです。亜ロゴリズムが同じで言語に最適化したプログラムを書けるのでしたらASM>C>C++>C#>VBの順で有利だと思います)
私も長らくある雑誌のPCの速度比べで使われていたベンチマークソフトの開発をしたことがあります。ベンチマークというのは結果をどうにでも出せるものです。雑誌用のものも記事を書きやすいように雑誌側の意向で結構な”調節”を入れていました。今回の場合であればVBを速く見せたければそうすることもできるしC#を一位にすることも可能です。
言語を選ぶ簡単な考え方としては。。。納期がある程度ある場合は自分が一番得意としている言語で決定です。
納期が短くて画面が複雑なものはVBで手っ取り早く仕上げると思います。
バイナリファイルを直接開いたり各種DLLやCOMやサードパーティーのSDKを利用するものでは(VBでもできますが)開発側がきめ細かくコントロールできるVCの方が向いていると思います。
VCを使う場合はLinuxや組み込み系などへの移植を考えている場合や規模が小さい場合はC++でなくCを利用しますが、そうでなく一般的なWindowsプログラミング(GUIがあるもの)の場合はMFCやWTLを使うほうが効率的ですから必然的にC++にせざるをえません。さらに画像処理やメモリ操作など大量の情報処理が必要なときはインラインアセンブラを使うと有効です。
場合によってはVBAやWSHなどで十分すぎるということもあります。
.net frameworkの利用はインストールファイルが大きくなるので出来上がったソフトの利用方法で使うかどうかを決めることが多いと思います。カスタムで一つのPCにインストールして終わりというような場合は使っても問題ないですが、社内の全PCに入れるような場合はやめた方が無難です。
お初に御目文字いたしますわ。URLはダミーですのでお気になさらずに。
さて。「どの言語が一番いいか?」ですけれども、答えはまさに「ケースバイケース」としか言いようがないわ。
Webアプリケーションを作る、っていうお話が載っていたんですけれども。例えばそのWebアプリケーションが「どんな要求」で「どんな性質」なのか、によって、選ぶ言語は様々なの。
例えば、性能をぎりぎりまで追求することもあるでしょうし、「雨後の筍のような」仕様変更に耐えうる必要があるかもしれないわ。デザインの変更が頻繁にあるサイトや「可能な限りコストダウンを望む」事だってありえることよ。そしてもうひとつ。「その言語を扱える人間の単価」や「調達の容易性」っていうのも、場合によっては重要なの。
大切なのは「多くの言語を学び、その利点と問題点を的確に把握する」こと。そうして「状況を正確に見極めて、その状況にもっとも適切である言語をチョイスできること」よ。
もちろん、そのためにたくさんの勉強が必要であることは事実なんですけれども、プロフェッショナルとしてお金を頂いているんなら、自らのスキルを向上させるっていうのは当然よね?
銀の弾丸を望む気持ちがわからないではないんですけれども、そんな安易な考え方ではいつまでたっても二流三流以下になってしまうわ。
それよりも「あふれんばかりの手持ちのカードから臨機応変に対応策を取り出す」ほうが格好よくってよ?
「やっぱり」そういう回答になってしまうんですよね・・・
社内でもいろいろ聴いてみましたが、それに近い結論になってしまいました。
楽ばっかり望んではいけないということですね。
はい、ありがとうございました。
参考になる回答、ありがとうございます。勉強になりました。ちょっと説明不足でしたが、ASP.NETGでWebアプリケーションを構築する際に、単純にC#とVB.NETがいいか?というのがもともとの始まりでした。
>言語を選ぶ簡単な考え方としては。。。納期がある程度ある場合は自分が一番得意としている言語で決定です。
やっぱりそうなってしまうんですよね・・・。
今回自分で見つけたサイトがLinpackなどだった為、TPC-Cのような基準のものがあれば〜、と思った質問でした。
また、複数言語が中間言語に変換される・・・じゃあ実行時は異なる言語でも同一コードととして実行されるの???のような、初心者的疑問がわきあがってきたもので・・・