VB.NETよりもC#の方が求人が多いのはなぜ？


私はかつて（約10年前）VisualBasic6.0を使っていました。  
その当時はVBを使える人材が重宝されていました。

最近、たまに求人広告を見ることがあるのですが、VisualBasic.NET  
よりもC#の方が圧倒的に需要が高いように思います。

私はVB.NETもC#も使ったことがありませんが、両者ともに開発環境の  
雰囲気が似ていたような記憶があります。

だとすると、文法等分かりやすいのはVB.NETだと直感的に思っていて  
アプリケーションを開発しやすいのもVB.NETだと勝手に思っています。

でも、多くの企業ではVB.NETよりもC#を使える人材の募集をしています。  
これは何故でしょうか？  
C#に特別な何かがあるのでしょうか？




文法が分かりやすいかどうか、アプリケーションが開発しやすいかどうかは主観的な問題ですので置いておきます。

`C#`と`VB.net`は機能的に大きな差があるわけではありません。しかし言語の人気に[大きな差](http://goo.gl/H5ci7Z)がありますので、わざわざ人気がなく情報量の少ない`VB.net`を選ぶ理由があまりないと言えます。

ではなぜ`C#`の方に人気が出たのかという理由はちょっと難しいですが、私の思いつく限りでは、

  * `Java`や`C++`を利用している人には文法的に`C#`の方が馴染みやすい
  * `Mono`の`VB.net`への対応が`C#`に比べて遅いため、`Windows`以外の環境も考慮すると`C#`のほうが利用しやすい

ということになると思います。




歴史的には.NET Framework 3.5の時期に

  * 言語機能の差が一時的に大きくなった(`yield`、自動実装プロパティ等)
  * Windows Phone SDKなどでVB対応が後回しにされた

とVBが機能的に大きく劣っていた期間があり、VB.NETを利用していた企業もC#に流れたのもこの頃という印象です。  
両言語機能は当時導入されようとしてたLINQやLINQベースのORMに欠かせないものであり、VB.NETでは最新技術を生かせないという状況がしばらく続いていました。  
このギャップは.NET4.5までに徐々に解消するのですが、その間にC#側に`dynamic`機能が追加されたため、VBのメリットも失われてしまった格好です。

* * *

なお個人の主観的な意見としては、C#で  

[code]

    public TItem this[TKey key] { get; }
    
[/code]

と書けるプロパティがVBでは  

[code]

    Default Public Overloads ReadOnly Property Item(ByVal key As TKey) As TItem
    
[/code]

となってしまうようにVBはキーワード中心のためとにかく打鍵量が多く好きになれません。

