• ベストアンサー

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

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

  • pansy
  • お礼率40% (60/150)

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

  • ベストアンサー
  • 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

  • C++の将来性・・・

    昨年まで、C++プログラマをしていました。しかし恥ずかしながらぜんぜんオブジェクト指向じゃないコードを書いていました・・・ いまJavaで仕事していて感じるのですが、C++にはガベージコレクションがないので、実はオブジェクト指向プログラミングがとてもやりにくい言語ではないですか? そうなると、C++の必然性がなくなり、C Java C# に取って代わられてC++は消え去っていく言語なのでしょうか。 「いやC++はすばらしいオブジェクト指向言語だ!」というお叱りを期待しています。

  • C言語、C+、C++、C#の違い

    C言語、C+、C++、C#の違いがよくわかりません。 自分でも調べてみましたが、「オブジェクト指向」という言葉が出てきて、よくわかりません。 わかりやすく教えていただけたら幸いです。 初心者がプログラミング言語を始めるならどの言語がいいですか? 幅広い分野で活用でき、初心者でもわかりやすい言語がいいのです。 私は、C言語、C+、C++、C#のどれかを勉強しようと考えているのですが、この中の言語ならどれがいいでしょうか?もちろんこの中の言語以外に初心者にわかりやすく幅広い分野で活用できる言語があればそちらにしようと思います。ありましたら教えてください。

  • 将来、VBってどうなるの?

    MicrosoftがOS部門とソフト部門に強制分割されるとか、市場におけるLinuxのシェアが拡大しているとか、近頃VBユーザにとっては悲観的なニュースがとても多いように感じます。私のように趣味でやってるプログラマーにとっては、それが直接、死活問題になるわけではないのですが、将来もしVBが「大衆プログラミング言語」の座を奪われるとしたら、新たに、その地位を獲得する言語って何なんでしょうか?おそらくは、オブジェクト指向がますます台頭してくるのでしょうが、JAVAは思ったほどの勢いは無いし、C#は全くの未知数です。それともBasicが新たな変貌を遂げるとか?理論的な観測でも、偏見による思い込みでも構いません。皆さんのご意見をお聞かせください。

  • [参考書]洋書でオブジェクトC++

    趣味でC言語を数年やっています。 現在、C++でのオブジェクト指向でのプログラミングに着手しています。 いくつかの書籍を参考に学んでいますが、和書だけでなく洋書も読みたいと思っています。「C++でのオブジェクト指向」の入門書(洋書)でお勧めのものがありましたら教えてください。 お願いします。

  • C++とJava

    オブジェクト指向を採用しているC++とJava。オブジェクト指向プログラミングに関連している部分で、二つの言語の大まかな違いは何でしょうか。

  • なぜ「C言語」にOOPが実装されなかったの?

    1972年に開発された「C言語」(C++ではない)には「オブジェクト指向」というのがないのですが、なぜ「C言語」に「オブジェクト指向」というのが実装されなかったのですか? 「オブジェクト指向プログラミング」は1960年代後半に登場していたのですが、後発の「C言語」には「ポインタ」はあっても「オブジェクト指向」というのがありません。なぜ「オブジェクト指向」は実装されなかったのでしょうか? 当時コンピュータの性能が低かったため実装が難しかったことと、まだ当時オブジェクト指向自体が無名だった為、「C言語」の開発者自体も知らなかったということもあるのでしょうか?

  • VB.NETの環境と参考書について

    普遍的な言語を使ったことのないほぼ初心者です。 (ある会社が作った特定の言語しか使えません・・・。) VB.NETを勉強するように言われたのですが、VB自体の経験も全くなく、「VB.NET」=「Visual Basic .NET」ということしか分かりません。 まず、環境として何らかのバージョンのVBをインストールする必要があるのでしょうか? それとも、全く別の代物がいるのでしょうか? また、「.NET Framework」もインストールしなければいけないのでしょうか?「.NET Framework」にVB.NETのコンパイラも付属しているありましたが、よく分かりません。 あと、VB.NETを勉強するのに、良い参考書があれば教えてください。(オブジェクト指向などもあまり分かってません。) 本当に何も分からないので、とぼけた質問かと思いますが、どうぞよろしくお願い致します。

  • Cとjavaの違い

    学校でC言語プログラミングを学んでおり,新たにjavaも習うことになったのですが, C言語とjava言語の違いはどのような所なのでしょうか? java言語は「オブジェクト指向」ですが,C言語は何指向なのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • VisualBasicを学ぶよいテキストはありませんか?

    質問です。 VisualBaisc2005ExpressEditionを趣味で勉強しています。 私に適した参考書は何がいいでしょうか?お勧めのテキストを教えてください。 過去に経験した言語はMS-BaiscとC/C++です。 VB.NETの基礎的なIf ThenやFor Nextや配列や変数など制御構造の部分などは すぐに理解できて簡単なプログラミングが出来るようになったのですが。 VB特有のオブジェクト指向の応用と言うか利用の仕方がいまいちよくわかりません。 オブジェクト指向自体の知識はC++を勉強したのでわかりますが・・・ 簡単なプログラムは作れるのですが、オブジェクト指向をバリバリつかったプログラムを 作るのに必要な参考書を教えてください。よろしくお願いします。

  • VB.NETの参考文献、サイト

    VB.NET初心者です。 オブジェクト指向のプログラミングがほぼ初めてで、 簡単な検索ツール(エクセルか何かを検索してテキストベースで出力)を作ろうとしています。 文献やサイトで参考になりそうなものが多すぎて何が良いのかわかりません。 経験者の方の体験アドバイスをいただきたいです。 特に文献を探しています。よろしくお願いします。