現在、新システム開発における言語選択で悩んでおります。

Windows向けのデスクトップアプリケーションを開発予定で、  
開発環境はVisualStudio、言語の選択肢はVBまたはC#です。  
開発規模は200人月x5ヶ月程度。

いずれも.NET Frameworkを用いた開発になるため、  
機能面での差異はほぼないと考えています。

強いて挙げるならば、構文が冗長くらいしかイメージはないのですが、  
C#を選択することのメリット・デメリットがあればご教授いただきたく存じます。
CC BY-SA 4.0
2018-07-18T07:45:27.660
46689
2018-07-18T21:54:32.160
7501
question
c# visual-studio .net vb.net
言語の優位性について
> いずれも.NET Frameworkを用いた開発になるため、  
>  機能面での差異はほぼないと考えています。

私もそう思います。  
C# も VB.NET も言語仕様が異なるだけで、実現できることにあまり差異はないと思います。

細かな言語仕様のメリット・デメリットよりも、  
以下のような観点で考えられるほうが良いと思います。

  * どちらの言語経験者を集めやすいか?
  * プロジェクトの技術的なリーダー(技術的な問題が起きた時に解決する人たち)がどちらの言語が好きか?
CC BY-SA 4.0
2018-07-18T08:28:47.320
46691
2018-07-18T08:28:47.320
46689
answer
言語を選択する権限及び責任があるのでしたら精通しているほうを選択したほうが間違いがないと思います。  
C#を選択する理由としては、マイクロソフトが.NETを扱う言語としてC#をデザインしているからという曖昧な答えにしかならないと思います。  
特にGUIライブラリの選定と学習にはおそらくC#・VBどちらから進めても手間がかかるものだと思います。そのときに不慣れな言語だと間違いなく足をとられますので、ご自身の職責とチームメンバーの方向性を今一度確認されたほうがいいと思います。
CC BY-SA 4.0
2018-07-18T10:42:29.030
46696
2018-07-18T10:42:29.030
25980
46689
answer
他の方もコメントされていますが、メンバーの経験を優先した方がいいとは思います。とはいえ、200人月x5ヶ月とのことで、200人 or
40人となるとまとまらないかもしれませんね。

* * *

その上で、「言語の優位性について」答えてみたいと思います。

プログラミングでは一般的に[ **式**
；expression](https://ja.wikipedia.org/wiki/%E5%BC%8F_\(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0\))と[
**文**
；statement](https://ja.wikipedia.org/wiki/%E6%96%87_\(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0\))とがあります。Visual
Basicはご存知のように構文が冗長です。つまりC#言語であれば **式** でシンプルに記述できるような内容が、冗長が故に **文**
で記述する必要が出てきたりもします。  
例えば`i++`であれば式であり、他の式と組み合わせることもできますが、`i = i + 1`なら文として完結させてしまうでしょう。

またC#言語の方が開発が活発です。Visual Studio 2017とともにC# [7.0](https://docs.microsoft.com/ja-
jp/dotnet/csharp/whats-
new/csharp-7)がリリースされ、[7.1](https://docs.microsoft.com/ja-
jp/dotnet/csharp/whats-new/csharp-7-1)、[7.2](https://docs.microsoft.com/ja-
jp/dotnet/csharp/whats-new/csharp-7-2)、[7.3](https://docs.microsoft.com/ja-
jp/dotnet/csharp/whats-new/csharp-7-3)と多数の機能強化がされていますが、Visual
Basicは[15.0](https://docs.microsoft.com/ja-jp/dotnet/visual-basic/getting-
started/whats-new#visual-basic-2017)、[15.3](https://docs.microsoft.com/ja-
jp/dotnet/visual-basic/getting-started/whats-new#visual-
basic-153)、[15.5](https://docs.microsoft.com/ja-jp/dotnet/visual-
basic/getting-started/whats-new#visual-basic-155)とあるものの強化機能はさして多くありません。

クローズ済みですが[VB.NETよりもC#の方が求人が多いのはなぜ？に書いた回答](https://ja.stackoverflow.com/a/7298/4236)も参考にしていただけたらと。
CC BY-SA 4.0
2018-07-18T14:11:27.013
46704
2018-07-18T14:11:27.013
4236
46689
answer
言語機能の差で選ぶべきではないという意見はその通りだと私も思いますが、C#を選択する(VB.Netを選択できない)理由として、unsafeがあると思います  
unsafe必須であるなら言語選択の余地はありません

それ以外の機能差として、拡張メソッドの参照渡しとか、匿名型のkeyプロパティとか思いつきますが、新規設計／作成なら言語を決定するほどの要素ではないと思います

開発規模が、２００人×５ヶ月＝１０００人月なのか、４０人×５ヶ月＝２００人月なのかわかりませんが、この開発規模で単一のアセンブリしかないとは考えにくいので、アセンブリごとに違う言語で開発するということも可能であることは考慮しといて損はないと思います
CC BY-SA 4.0
2018-07-18T21:54:32.160
46706
2018-07-18T21:54:32.160
9811
46689
answer