どのプログラミング言語がオススメなのか

今日のセミナーでは、(ちょっと元の質問とは違うのですが)「今は C++ を使っているのですが、今後のためには、どの言語を覚えればよいでしょうか」という質問がありました。

これはときどきある質問なのですが、マイクロソフトは「これが一番」という答えは持っていません。.NET Framework のベースには「共通言語ランタイム(Common Language Runtime)」があり、どの言語にも対応できる汎用性を持っているので、開発者は「好きな言語」を選ぶことができるというのが、一般的な回答になるでしょう。��こでは、少し“個人的な意見”を書いてみます。

「これから覚える」としたら、やはり Visual Basic か Visual C# をお薦めします。少なくとも「これからどうしようか」と迷う余地があるなら、このいずれかがよいでしょう(既存の C++ 資産を保守し続けなければならないといった「迷う余地」の無い方は別です)。日本にはとくに(C や)C++ の開発者が多いので、Visual C++ はこれからも使われ続けていくでしょうし、C++ プログラマの方のスキルをほぼそのまま活かせるのは Visual C++ です。Visual J# も基本は Java“言語”ですから、Java 開発者のスキルを活かせるものだといえます。しかし、Visual Studio 2005 においては、これらよりもVisual Basic と Visual C# の方が .NET Framework を活用しやすいのです。

実際、共通言語・・・といっても、Visual Studio 2005 のサポートが、すべての言語で共通しているわけではありません。たとえば、スマートデバイス(Pocket PC のようなデバイス向けのアプリケーション)をビジュアルに開発したり、Visual Studio Tools for Office(VSTO)で Excel や Word 用のアプリケーションをビジュアルに開発できるのは、Basic か C# のみです。その代わり、C++ ではアンマネージコードの開発ができますし、バリエーションも色々あります。

「Basic と C# のどちらか」という点については、“個人的には”C# の方がお薦めです。ただし、これは個人の実績や好みの問題も大きく左右するでしょう。また、VSTO を使って Office アプリケーションを開発する場合には Basic の方が使いやすい場合もあります。Basic では引数を省略できたり、参照渡しのために ref をつけなくてもよいからです(歴史的に、Office 開発ではこういう呼び出しがしばしば登場します)。

さて、話が最初に戻ってしまいますが、効率的によりよいアプリケーションを開発するためには、実はプログラミング言語にこだわるよりも、.NET Framework が持つ機能を覚える方が重要です。「.NET Framework」そのものに比べれば、「言語の違い」は、それほど大きなものではないでしょう。

※本エントリは、MSDNブログのアカウント削除にともない転載しました(2010/12/26)。