• ベストアンサー

なぜ、VBよりC#を勧めるのですか?

プログラミング初心者やBASIC経験者に対して、C#を勧める人が結構いるみたいです。 C#よりVB2005を勧めるといった人はほとんど見かけません。 BASIC系の言語を知っていればVBScriptやVBAなどの理解も早いと思いますし、VB.NET(2005含む)の方が参考書や参考Webページが多いように思われます(初心者向けの物は特に多いのでは…) VB6の頃はオブジェクト指向の機能が不完全でしたが、VB.NETになってからは、完全なオブジェクト指向言語となったように聞いていますが… C#の方が洗練されているとか美しいとかいった事を聞きますが、その程度の事は所詮好みの問題ではないでしょうか 生産性や開発コスト、プログラムの管理といった具体的な観点でC#を勧める理由が知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • toby_jp
  • ベストアンサー率75% (6/8)
回答No.3

私が思うに、ひとつには、過去のVisualBasicの悲劇を体験している人が、 C#を勧めているのではないでしょうか? VisualBasicと言えば、使う人みなクソコードを量産し、 DLL HELL(DLL、ocx依存地獄)などもありました。 もちろん、C言語などでもそういうこともありますが、 特に、VBを使う人に多いという話です。 しかも、過去の話かというと、そうでもないのです。 C#を勧める人は、C#できちんとしたコードを書いてほしい、オブジェクト志向に基づいたプログラミングを学んでほしい、という希望をこめているのではないでしょうか? # 私は、VBで適当なコードを書く人が、C#でまともなコードを書けるとは到底思えませんが また、VB.netは、あまりの仕様変更に旧VBユーザーを裏切りました。 変更が多すぎるため、まったくの別言語だという認識もあります。 VB.netやるくらいなら、C#やるよという話も周りで聞きます。 とはいえ、VB.netもC#も言語仕様的には、実質は、大して変りないでしょう。ライブラリも.NET Frameworkのものを使う限りは、違いはすくないはず。 あえていうなら、.NETに関しては、しばらくは間違いなくC#がメインの言語という点でしょうか? 先に、新しい機能が追加される、開発環境が対応される、新しい情報が出やすい。 # とはいえ、ささいなことでしょうけど まとめると3点。 ・VBの悲劇を思い出したくない。Basicの名前を見るのもいや。 ・VB.netはVBじゃない。だったら、C#でもいいのでは? ・VB.netもC#も変わらないけれど、.NETのメインはC#だよ

pansy
質問者

補足

VBと言えばクソコードを量産というのは分かる気がします。 コントロールなどのいろんな機能の使い方の説明はありますが、VBを対象としたオブジェクト指向プログラミングの解説はあまり見かけません。 お手軽プログラムの意識でプログラムを作る人が多く、オブジェクト指向を避けてしまうのだと思います。 機能的にほぼ同じと言っても、オブジェクト指向に関する書籍が多い、C#を勉強しながらプログラミングするのが、将来的に大規模プログラムを作るための技術が身につくのかもしれませんね。

その他の回答 (2)

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

>>BASIC系の言語を知っていればVBScriptやVBAなどの理解も早いと思いますし、VB.NET(2005含む)の方が参考書や参考Webページが多いように思われます(初心者向けの物は特に多いのでは…) そのとおりでしょう。 >>VB6の頃はオブジェクト指向の機能が不完全でしたが、VB.NETになってからは、完全なオブジェクト指向言語となったように聞いていますが… 実際に触ってはいませんが、オブジェクト指向度を強めることで、従来のVBプログラマにとっては別言語に見えるでしょうね。 >>C#の方が洗練されているとか美しいとかいった事を聞きますが、その程度の事は所詮好みの問題ではないでしょうか いちおう文法的にみて、「洗練」「美しい」って評価はあると思います。でも、異性に対する評価がイロイロあるように、そういう評価と個人の好みが一致するとは限りませんね。 >>生産性や開発コスト、プログラムの管理といった具体的な観点でC#を勧める理由が知りたいです。 C#の成立については、ANo.1さんが書かれたような「MSの論理」が大きいと思いますね。でもMSが1押しだからでは理由にならないですよね。 私が思うには、消去法でC#を薦めているのではないでしょうか。 ・Javaは、構造体(共用体)がありません。ポインターも使えません。クラスでの代用ができそうですが、文字列がらみで面倒なこともあり、多くのデータを使うようなアプリケーションの構築には、やっぱり普通の構造体が欲しいと思います。また、いろいろとオプジェクト志向ってルールを厳密に適用したいみたいで、固苦しいコード(長いコード)になりがちだと思えます。そういうことで×。 ・VBは、構造体がありますし、オブジェクト指向も取り入れたってこともあるのですが、大規模アプリを考えたとき、生理的に受け付けられず、×。 ・C++はSTLっていわれる高生産性の仕組みがあります。しばしばC++経験者がC#を使うとき、「STLが欲しい!」って嘆きが聞こえてきます。実際に、きちんとC++とSTLを理解していれば、コード量が1/10~1/100まで削減できますし、コンパイルさえ通れば、1発で動作するコードが完成します。でも、「C++をマスターするのは難しい!」です。つまりは、「交通事故を少なく、早く配送したいのでF1レーサレベルのトラックの運転手を揃えたい」っていうようなものですね。そういう名人クラスが作成したコードは、凡人レベルでは理解不能、メンテ不可能になります。 なので、平均レベルのプログラマーチームで開発するなら、C++は×です。 ・C#はC++、Javaよりも後発で、それらの長所・短所を研究して作られた言語です。「C++は難しいけど、C#は、その難しい(美味しい?)機能が使えないので、かえって凡人にはいいかも。安定度あるUnix等では使えないけど、そこまで要求されないのでOSはWindows。だから、残ったC#ってことで、○。 ってことではないでしょうか。生産性でいうなら、ベテランプログラマをそろえて、C++とか。あるいは、ちょっと冒険して、どのOSでも使えるRubyってのもいいかもしれませんね。専門学校では、プログラミング授業をRubyでやるところもあるようですから。プログラマにとっては、「なんだこんなお手軽命令は?」っていうような、便利な命令がありますからね。 でも、プログラムを仕事としてやっていきたいと思うなら、C言語とアセンブラを(最初でなくてもいいから)学ぶべきだと思っています。(RubyもC言語で作られているし) そうじゃあなく、「自分の趣味・仕事での作業をプログラム作って楽したい」っていうなら、VBでもRubyでもPerlでも、好みにあったものを選択すればいいと思います。C++、C#はあまりお勧めしません。 (でも、仕事では、SOX法がらみでやりにくくなる可能性ありですね)

  • ape5
  • ベストアンサー率57% (85/148)
回答No.1

私見ですが、まず.NETが出てきたときにマイクロソフトはC#を勧めていたということもあるとおもいます。C#はC++とJAVAを参考に作られた言語です。なので、ライバルである(?)JAVAのプログラマが.NETに移りやすいという環境を作るのにもC#が主流である方がいいと考えていたのかもしれません。 とは、言ってもVB6から来た人にはVB.NETの方がわかりやすいのかもしれません。 .NETに対応している言語であればどの言語で作成してもILにコンパイルされればほぼ同じものができるはずであるので、極論すれば好みだとは思いますが・・・。 まあ、C#の方がCライクな文法や表現ができるのでそういったものを好む、またはVBよりCの方が優れているというようなことを考えている方もいるのかもしれませんので、Cに近いC#を勧めるというのもあるのかもしれません。 推測ばかりであまりあてにならないかもしれませんが・・・

関連するQ&A