■ Visual Studio .NET 言語の選択

  • Visual Basic 6.0 / ASP (VBScript) / VBAユーザーは Visual Basic .NET
  • Visual C++ 6.0 ユーザーは C#

.NET Framework は、20 種類以上もの言語に対応しています。Microsoft だけでも Visual Basic .NET、C#、C++、Java 言語、JScript .NET と 5 つの言語に対応しています。これだけの言語の中で開発者はいったいどの言語を選択すればいいのでしょうか。Microsoft は C# を推奨しているのでしょうか?

「いいえ、そうではありません!」 (Microsoft Visual Studio プロダクトマネージャ談) 。

実際に、.NET Framework のパワーは、どの言語でも同様に活用することができます。Visual Studio 6.0 世代では、Visual Basic 6.0 の持つ生産性と Visual C++ 6.0 の持つパフォーマンスを組み合わせることにより、最強のアプリケーションを構築することができました。

図 7 に示した各言語の位置付けからもわかるように、Visual Basic .NET と C# は、Visual Basic 6.0 にまさる生産性と、Visual C++ 6.0 と肩を並べるパフォーマンスを共に実現しています。もはや、性能論議で各言語を比較する時代は終わったのです。

図7:各言語の生産性とパフォーマンス

図7:各言語の生産性とパフォーマンス

開発者は、生産性や、パフォーマンスではなく、好みの言語、使い慣れた言語での開発をすることができます。Visual Basic 6.0、ASP (VBScript)、VBA ユーザーにとって、Visual Basic .NET と C#、どちらが早く習熟でき、効率よく開発できそうでしょうか?

ここが選択のポイントになります。

実際に Visual Basic .NET と C# をコンパイルすることによって得られる実行コード (MSIL) を比較してみます。

まずは、それぞれの言語で同じことを実行するコードを作成します (リスト1・2)。


Sub Proc1()
     Dim x, y, z As Integer
     x = 10
     y = 20
     z = x + y
     Console.WriteLine(z)
 End Sub

リスト 1:Visual Basic .NET サンプルコード


void Proc1()
{
    int x, y, z;
    x = 10;
    y = 20;
    z = x + y; 
    Console.WriteLine(z);
}

リスト 2:C# サンプルコード

その後、コンパイル (ビルド) し [注 1]、その中のコードを ILDASM.EXE で覗いてみます。


.maxstack  2
.locals init ([0] int32 x,
              [1] int32 y,
              [2] int32 z)
IL_0000:  ldc.i4.s   10
IL_0002:  stloc.0
IL_0003:  ldc.i4.s   20
IL_0005:  stloc.1
IL_0006:  ldloc.0
IL_0007:  ldloc.1
IL_0008:  add
IL_0009:  stloc.2
IL_000a:  ldloc.2
IL_000b:  call void [mscorlib]System.Console::WriteLine(int32)
IL_0010:  ret

リスト 3:ILDASM.EXE で覗いてみる

すると、それぞれ異なる言語からコンパイルされた結果、リスト 3 のような同じコードが生成されることがわかります。

注 1) このとき、ビルドオプションが異なると結果が異なることがあります。なお、Visual Basic .NET と Visual C# のデフォルトのビルドオプションは異なるため、デフォルトのままでは同じコードは生成されません