VB.NETって嫌われ者?

そんないっぱいある言語の中で皆さんはVB.NETと聞いてどんな印象を抱くでしょうか!
おそらく、ポジティブな印象を持っている人は少ないんじゃないかなぁと思います。
ですが!VB.NETはプログラミング初学者にとって、非常に学習しやすく、また今後のキャリアに役立てることができる言語だと思っています!
そんなVB.NETの魅力をお伝えしていきます!!!
VB.NETの歴史って?
初心者向けに作られたBASIC言語
VB.NETの源流となっているのは、BASIC言語という言語です。
この言語はC言語等と比べて、プログラム初学者に分かりやすいような構文を意識して設計されています。
歴史的にもBASIC系言語は、プログラム初学者向きだと言えますね!

MicrosoftがBASIC言語を元に開発したVisual Basic
そんな初学者向けのBASIC言語を元に、Windowsのアプリを作成するために設計されたのがVB.NETの直接の前身となる、Visual Basic(VB)です。
BASICと同様、Visual Basicも初心者向けの言語となります。
特に愛された理由としては、開発ツールであるVisual StudioというRADツールの存在でしょう。
RADツールというのは、画面部分の作成をきわめて簡潔に実装できるツールの事で
C++とかだと画面レイアウトも初期化~座標などのコーディングと画面のコーディングに時間と労力をかけなければならないところを、ツールボックスから必要なコントロールを選んで画面にドラッグで貼り付ける。
というような簡単操作で自動コーディングされるため、非常に人気がありました。

絵を描くようにさらって作れるのは楽そうだ!
.NET Frameworkという進化
そんな人気があったVisual Basicですが、決定的な弱点が一つありました。
それはVisual Basicが手続き型言語であったこと!
特に業務案件において、オブジェクト指向型言語の有用性は強かったのですが、Javaが出るまではオブジェクト指向型言語の有力な候補がC++等だったため、状況によってVisual Basicが選ばれることが多かったのです。
ですが、Javaという黒船が来航したことにより状況が変わり、Visual Basicは非常に不利な立場に立つことになりました。
そんな中MicrosoftはVisual Basicを元にオブジェクト指向型言語として再設計した言語を発表します。
それが今回ご紹介するVisual Basic.NET(VB.NET)です。
VB.NETのデメリットは初学者にとってのメリットとなる!
メリットとなるデメリット

- 書き方が冗長である。
歴史的な背景上、VBの構文は人が読みやすい構文を意識しています。
これはプログラミング上、冗長な書き方になりやすいです。ただ、これは初学者にとってみれば悪いことではなく、読みやすいという事でもあります。
例えば、下記の構文を例に、兄弟言語であるC#と比較してみます。
VB.NET
1 2 3 4 5 6 7 |
Private Sub test01 as Integer Dim i as Integer = 0 Dim Result as Integer = 0 For i=1 to 10 step 1 Result = Result + i Next End Sub |
C#.NET
1 2 3 4 5 6 |
void test01{ int i = 0; for(i=1;i<10;i++){ Messagebox.Show(i); } } |
まず、構文の開始宣言、終了宣言ですが、VB.NETは Sub~End Subという構文になっており
ここからSubが始まるよ!ここでSubが終わるよ!というのが視覚的に分かるようになっています。
また、このメソッドが戻り値を返す場合だとこのように変わります。
VB.NET
1 2 3 4 5 6 7 8 |
Private Function test01 as Integer Dim i as Integer = 0 Dim Result as Integer = 0 For i=1 to 10 step 1 Result = Result + i Next Return Result End Function |
C#.NET
1 2 3 4 5 6 7 8 |
int test01{ int i = 0; int Result = 0; for(i=1;i<10;i++){ Result = Result + i; } return Result; } |
VB.NETだと、SubがFunctionに変わっています。
これはSubは戻り値を返さない、Functionは戻り値を返すと明確に区分けされているためです。
C#においては冒頭がvoidからintになっているだけとなります。
これはC#の方がコーディングが少なくなるというメリットとしてよく捉えられますし、私自身も慣れてきたらC#の方が書きやすく感じますが、最初の勉強時には挫折の原因にしかなりませんね・・・
他にもfor文とかもそうですが、多少英語力があれば、何をしようとしてるのかが直感的に分かる感じの構文になっています。
- 大文字と小文字を区別しない。
これもVB.NETのデメリットとしてよく叫ばれる点ですが、C#においてStringとstringは全然別のものと認識されます。
なので、例えばですがこんな変数宣言が可能です。
1 2 |
int count = 0; int Count = 10; |
VB.NETで同じ構文を書くと、コンパイルエラーとなって通りません。
これも、初学者にとっては大文字小文字を意識しなきゃいけないC#よりも、意識しないでもいいVB.NETの方が勉強しやすいのではないかな、と感じますよね。
- VBとの下位互換性を高めるために、変な言語仕様が存在している。
これは歴史的背景があるのですが、VBは元々手続き型言語でした。
なので、オブジェクト指向型言語としてはありえない構文がいくつか残っています。特に有名なのがGoTo文ですね。
GoTo文は忌み嫌われており、自分としても封印するべき構文だと思うのであえて内容は解説しません。(興味がある方はググってみてください。)
ただ、こういった構文はそもそも使わなければいいだけです。
あくまでも下位互換性のために残っている機能であり、そんな構文は無かったと思って学習すれば、特に邪魔にはなりません。
ここは気をつけなきゃいけないポイント
- Webでの情報検索時に、VB.NETではない情報がHITしやすい
これも同じく歴史的な背景になるのですが、古くからBASIC⇒VB⇒VB.NETと進化してきて、かつVBとVB.NETは非常に構文が似通っていることもあり、VBの情報がHITすることも多いです。また、ExcelやAccessに組み込まれたVBであるVBAという言語も存在して、正直情報がぐちゃぐちゃだなと感じることは多々あります。
言語仕様が似ているという意味で言えば、C#は源流がJavaですので似ているのですが、こちらは言語名がJava⇒C#と似ても似つかない感じなのであまり気にならないのです。
言語の変更に伴って、あまり言語名に変化がない辺りは明確なデメリットになってしまっていますね。
- 求人の単価が安い
正直安いです(笑)VB.NETは初めてのプログラミング学習には適した言語だとは思いますが、VB.NETさえ覚えておけばOK!という万能言語ではありません。
あくまでも学習のための言語と割り切って、ある程度プログラムの知識が得られたら別の言語も覚えていく必要はあるかなと思います。他の言語の選択に関しては
1.同じ.NET Frameworkを利用しており基盤部分の考え方が同じC#
2.Webアプリのサーバ側にVB.NETを利用して、フロント側でTypeScript or JavaScript
あたりがとっつきやすいかなと思います。
まぁ一つ言語を習得すれば、基礎知識はついてますのでどんな言語を選択しても覚えやすいかと思います。まとめ
よく技術者の方には嫌われている言語のVB.NETですが、嫌われてる理由として大きいのは初心者向け言語で、技術者とは言えないレベルの人がVB.NETを利用していることも多く
言語そのものというよりはVB.NETを利用した開発現場に対する嫌悪である部分も多いです。(実際、VB.NETの言語仕様そのものに対して文句を言っている人はそんなに聞いたことありません。)
これは結果として、最初に覚えるプログラム言語としては最適だという事でもあります。
ただ、気を付けたいのはVB.NETを覚えて、そこで終わってしまわないことです。
あくまでも一つ目のステップと考えて次のステップに進むことで、技術者が嫌っている
VB.NETしかできないホビーブログラマから脱却できるはずです。最初からRuby、C#、Java等を選択するのもいいですが、挫折してしまうくらいならVB.NETから学習するのも大いに価値があると思いますよ
ぜひVB.NETに触れてみて、プログラムの面白さを体験してみてください!
