VB.NET [雑談]
.NET Framework に関わる作業を生業としていると、Visual Basic (VB.NET) の評価の低さが気になることが多い。
Visual BASIC という名前の通り、初心者にでも扱える言語ではあるけれど、.NET Framework の環境で動作するものはオブジェクト指向を実践するための能力を備えていると思える。ただし、過去のバージョンのしがらみのせいか、いくつかの抜け道が用意されており、純粋なオブジェクト指向に徹しきれていないところが避けられてしまう要因なのではないかと思う。
逆に、C# は扱いやすくなった Java として認知されていることが、多くの .NET ファンが公開するコードの多くは C# で記述されていることからも感じられる。
Visual Basic と C# は、.NET Framework のバージョンアップに追従するフラグシップ的な存在している。そのため、どちらか一方だけに提供されている機能というのは(皆無ではないが)多くはない。C# のほうが最適化されたコードを吐くということを聞いたことがあるけれど、どの程度の違いが出るのか私自身は検証したことがない。
C# にあって Visual Basic にない機能と言えば、最初に思いつくのが unsafe。C/C++ のような、割とコアな作業をすることを得意とする言語から派生しているだけに、アセンブラ言語の優位性を求めるプログラマーのために盛り込んだような仕様。Java がポインターという概念を捨ててしまったのとは対照的に、C# では、それを使いたいと思うユーザーに機能を提供している。
Visual Basic には、元々ポインターなどという概念は存在しないために unsafe のような機能も存在しない。
逆に、Visual Basic にあって C# にない機能を言えば、、、XML リテラル、、、これは、私がそう思っているだけで反対意見をもつ人も多いかもしれない。ただ、その実装を見たときに「苦労して Basic にまったく関係ないものを取り込んでしまうなんて、おまえらバカだろう」と思ったことも確かではある。使い込んでいくいうちに、「バカ」というのは(プログラマーにとっての)最大の褒め言葉なんじゃないこともも思えてきた。
もうひとつは C# でいうところの dynamic 型。最近になって C# で遅延バインディングを(簡単に)実践するための機能として追加された機能ではあるけど、Visual Basic では標準機能としてずっと存在している機能。型が不明確になってしまうというデメリットはあるものの、新しい仕様として C# に取り込まれたということは、遅延バインディングのメリットが認知された結果なのではないだろうか。
Visual Basic という言語は C# ほど記号を多用しない。そのため、コードサイズが膨れ上がる傾向がある。その上、自由構文ではないために、行末に無意味に見える継続行のマークが散乱し、その意味を知らない人たちにとってはゴミにしか見えないコードになってしまうことも少なくないようだ。
Visual Basic では(この点を考慮してかどうかは知らないけど)、コードの自動生成機能が多く用意されている。スニペットのように、その存在を知っていて利用するものではなく、インテリセンスと自動補完によって提供される機能は、Visual Basic 特有のものではなく C# でも利用できるのだけれど、元々のコーディング量が多くなりがちな Visual Basic では、より効果が見えやすくなっているように思う。
C# に比べると Visual Basic の癖は結構強いものがあるとは思う。それでも、好き嫌いせずにてを出してみたら、意外にはまってしまうところがおおいと考えますが、いかがでしょう。
ちなみに、私は VB.NET より前の Visual Basic については殆ど触れたことがありません。
コメント 0