Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。4万件22クローズされました。この質問では現在、回答を受け付けていません。質問を更新、この投稿を編集して事実と引用で回答されるようにしてください。私はかつて(約10年前)VisualBasic6.0を使っていました。その当時はVBを使える人材が重宝されていました。最近、たまに求人広告を見ることがあるのですが、VisualBasic.NETよりもC#の方が圧倒的に需要が高いように思います。私はVB.NETもC#も使ったことがありませんが、両者ともに開発環境の雰囲気が似ていたような記憶があります。すると、文法等分かりやすいのはVB.NETだと直感的に思っていてアプリケーションを開発しやすいのもVB.NETだと勝手に思っています。多くの企業ではVB.NETよりもC#を使える人材の募集をしています。個の銅バッジ興味をそそられる質問でしたが、客観的な回答を得るのは難しいかもしれないですね。2:47質問にクローズ票を投じます。プログラミングの質問ではない。票9文法が分かりやすいかどうか、アプリケーションが開発しやすいかどうかは主観的な問題ですので置いておきます。C#とVB.netは機能的に大きな差があるわけではありません。言語の人気に大きな差がありますので、わざわざ人気がなく情報量の少ないVB.netを選ぶ理由があまりないと言えます。C#の方に人気が出たのかという理由はちょっと難しいですが、私の思いつく限りでは、JavaやC++を利用している人には文法的にC#の方が馴染みやすいMonoのVB.netへの対応がC#に比べて遅いため、Windows以外の環境も考慮するとC#のほうが利用しやすいということになると思います。個の銅バッジなるほど。VB.NETの方が情報量が少ないのですね。昔は書店に行くとVBの本ばっかり置いてあった記憶があるのですが、今は違うのですね。文法が分かりやすいとかは、確かに私の勝手な考えですので無視しておいてください。SDKなどでVB対応が後回しにされたとVBが機能的に大きく劣っていた期間があり、VB.NETを利用していた企業もC#に流れたのもこの頃という印象です。両言語機能は当時導入されようとしてたLINQやLINQベースのORMに欠かせないものであり、VB.NETでは最新技術を生かせないという状況がしばらく続いていました。このギャップは.NET4.5までに徐々に解消するのですが、その間にC#側にdynamic機能が追加されたため、VBのメリットも失われてしまった格好です。TItemとなってしまうようにVBはキーワード中心のためとにかく打鍵量が多く好きになれません。|7もうちょっと低いレベルの話題を出しておきます。個人的には、変数スコープの違いが言語の違いを作っているのではと考えています。従来C言語では変数をスコープの先頭に記述する制限がありました。その制限を何をどう勘違いしたのか関数の先頭と思い込み、結果、C言語や(元より制限のない)C++言語において関数の先頭にずらずらと変数を並べるスタイルのソースコードをちょくちょく見かけます。仕様をきちんと理解している人から見ると「わかってない人が書いているな」とそのソースを避けたくも思うはずです。スコープの概念そのものはとても重要でJavaScriptのようにブロックスコープが存在しない場合、強引な手を使ってでもスコープを実現するわけですし。VB言語も似たような状況で、ブロックスコープはありますが関数の先頭に書かれる傾向があるように思います。VBと比較するとそのような傾向はかなり低いです。結果、言語仕様を理解せず、変数の有効期間及びそれに付随するオブジェクトの生存期間を考慮せずただ動けばいいという考えの人はVB言語を使う傾向にあり、仕様を理解しコードロジック、アルゴリズムを考える人はC#言語を使う傾向にある、というのが個人的な見解です。このような状況でソフトウェアを作ろうとする場合にどちらの言語を選択し、その言語の求人を行うかとなればやはり後者でしょう。VBのブロックスコープは罠もありますしね。|4現実問題としてC#で開発されたプロジェクトや資産が多く、またC#を理解できる人間が多いというのが表向きの理由かと思います。C#のほうが人気なのかという部分についてですが、これは客観的な理由よりも主観的な理由の方が大きい気がします。Serverを利用したWebアプリケーションの開発では、C#の採用数がVB.NETに比べるととても多いです。場合、VB.NETは古いVB.NETは遅い(実際にはC#と違いが出るかは疑問です)VB.NETは初心者向けなので、できることが限られている(どうなんでしょう)といった理由、あるいは暗黙の了解的なものでC#が選択されています。私自身もはじめて.NETを使うことになった際、あまり考えずにC#を採用しました。(VB.NETには初心者向けで本格的な業務用ではないというイメージはありました。)あるいは、書籍など情報の偏りもあるかもしれません。C#には初心者向けから中級者向けまで書籍は日本語でも充実していますが、VB.NETの本はC#ほど充実していないように思います。(O'ReillyもVB.NETの日本語の本は取り扱っていません。卵(書籍)が先か鶏(人気)が先かはわかりません。すると、物理学の世界で言う自発的対称性の破れのようなもので、最初はどちらに転がってもおかしくないような差だったのかもしれませんね。調べもせずに書いていますので、ご注意ください。|3技術的な回答は多く出ているので、人的リソースの視点で書かせて頂きます。VB6→VB.NETの移行期に活躍したプログラマーは現在既にいいお年で、新たにC#を習得させるコストを払うより現状維持または職種変更してもらい、C#erは外から調達する企業が多いのではないでしょうか。一部の優秀なプログラマーは除外しますが、日本の人月ビジネスが消費してきた「コーダー」については上記のことが言えると思います。|3文法等分かりやすいのはVB.NETだと直感的に思っていてアプリケーションを開発しやすいのもVB.NETだと勝手に思っています。VBとVB.NETは別物です。世の中に多く存在するであろうC/C++/Javaなどの開発者にとってC#の方がとっつきやすいと思います。(1)VB.NET登場時、旧VBとの言語的な差が大きく、どうせ覚えるなら.Netのために新しく作られてオープンな規格であるC#を勉強した方がいいよね、という流れになった。[補足]当時VBが流行っていたのは、プログラミングスキルの低い人でもGUIアプリケーションを簡単に作れる、Microsoft製言語というのが理由だと思います。VB.NETになって本格的なオブジェクト指向言語になった結果、習得難易度も増し、GUIアプリの作りやすさ(C#でも簡単に作れる)というアドバンテージも無くなってしまいました。難易度は初心者→VB中級者→Delphi上級者→C/C++というイメージ。Borland社(社名がコロコロ変わって現在は何になっているか知りませんが)のDelphiはVBより少し難しいがC/C++より簡単でGUIも簡単に作れて熱烈なファンもいましたが、OS開発元であるMicrosoft製の言語を使う人が圧倒的に多かったです。(2)文法がC/C++やJavaに似ているので、これらの言語を使っている人たちがC#に入りやすかった。[補足]VBブームの後はJavaブームが来ました。(3)VB系言語で開発されたアプリケーションは他の言語で作られたものに比べ、質の低いものが多い。これは実感した人、多いと思います。他人がVB系言語で作った質の悪いアプリをメンテすることになった苦い経験から、VB使いの技術力は低い、と多くの人に思われるようになったのです。実際、そう考えてあながち間違いではないでしょう。「VB系しかできません」なんて開発者は全く信用されません。趣味のプログラミングならいいのですが、仕事でやる場合、複数言語を使えるのは当たり前です。(4)2016年現在、Windows以外のプラットフォームも見据えた言語の存在感として、C#の圧勝です。VB.NETを選ぶ人はいないでしょう。(5)C#は書きやすい、使い勝手がよい「C#は書いていて気持ちがよい」「思考をそのままコードにできる」という表現を時折見ます。開発者にとっては取り組みやすい夢のような言語で、それほど勉強しなくても使うことができました。文法は実用性とサイエンスが絶妙。コード生成しやすいし、オブジェクト指向をベースに、コンポーネント志向も関数型もパラレルコンカレントも動的も無理なく取り込まれている。ReadWrite[日本版]C#で働いた技術者たちはC#を好きになる傾向があり、この言語はとても強いコミュニティを持っている。3Dの主要言語であり、iOSやLinux上で動くゲームエンジンにも使用されている。3Dの台頭は、C#の存在を確固たるものにし、バーチャルリアリティアプリの開発を支えている。|1プロジェクト規模が大きくなるとVB.NETのほうがVisualStudioが重くなりがちです。デフォルト設定のVB.NETは記述中の未改行状態のコードもエラーチェックしていたりしてC#よりも重くなっていました。コードの実行速度は変わらないはずです。変数宣言を強制しないことができたり、VB6の悪いところをイメージさせるものがあります。VB6は素人プログラマが品質の悪いコードを量産したのが大変問題になりそのイメージの悪さを引きずっているのでしょうかですので、C#になにかあるというよりはVB.NETが敬遠されているのだと感じます。実質の機能はほぼ同じですが、間違いを起こしにくいC#のほうが開発者から好まれています。ほかの方もおっしゃられるように差はとても小さいです。|1概ね同じような回答になりますが、VBを採用している開発部署は、コードの質を追究するプログラマが少ないように感じます。VB6.0の悪習を結構引き継いでるので、プログラマ次第ではバグ量産の温床になるから等も理由の一つかもしれません。タグが付いた他の質問を参照するか、自分で質問をする。