佐々木屋

技術的なことから趣味まで色々書きます

似ているようで違うC#とVB.NET

私はC#VB.NETどちらでもプログラミング出来ますが、片方しか知らない方向けに違いをいくつか紹介していきたいと思います。

そもそも親戚?他人?

C#VB.NETはどちらもWindows系アプリケーション(ASP.NET)を作成できるプログラミングとして有名です。.NET Framework上で動作し、開発ツールはVisualStudioを使うところも一緒、同じオブジェクト指向型の言語です。

ここまでくると、ほとんど一緒?と思われますが、実は結構違います。
性格の違いをいくつか出してみます。

項目 C#
VB.NET
出身 C系言語(C、C++Javaなど)からの派生
言語機能としてはDelphiの影響も大きく受けている
VB6の後継として登場
互換性 CやC++との互換性はない VB6と互換性はないが同じ記法が可能
言語構成 C++Javaに近い
形式言語に近い
自然言語に近い
難易度 やや難しい
C++に比べるとはるかに簡単
簡単
VB6、VBAよりは難しい
文法規制 厳しい ゆるい

VB.NETが有利(C#が不利)なこと

  • 自然言語に近いので、初学者でも分かりやすい
  • VB6やVBAからの派生なので、マクロがある程度組めればVB.NETも理解できる
  • 文法規制がゆるいので多少間違えても正しく動作する
  • オブジェクト指向を理解する必要がないため、習得時間が短い
  • .NET Frameworkのクラスの他にVB独自の関数が使える(C#でも使用可だがひと手間必要)


C#が有利(VB.NETが不利)なこと

  • 文法規制が厳しいので、逆にWEBアプリケーションやdllなどのクラスライブラリ作成に向いている
  • ネットや書籍などの資料が非常に豊富
  • 演算子やキーワードがシンプル
  • コードが全体的に短い(VB.NETの2/3くらいで済む)
  • VB.NETにない機能(null演算子やインクリメントなど)が多い


誤解

× VB.NETよりC#の方が速度が早い
.NET Framework上で動作するので速度は一緒。

× C#はポインタが使えるがVB.NETでは使えない
そもそも.NET Frameworkはガベージコレクタが動いているので、C#でポインタを使うのが間違い。

× C#に比べてVB.NETの方が劣る
そもそも言語自体に優劣はない。
こういう風潮になった背景として、VB6やVBAなどが少し触れる「なんちゃってプログラマ」がC#に比べて圧倒的に多いことと、言語自体が覚えやすい、分かりやすく敷居が低いので、一般的にプログラマレベルが低いことが誤解を生んでいると思われる。


これからちょっとずつ機能の違いを紹介していこうと思います。