キャリア20年超。ずっとプログラマで生き延びている女のコラム。

Visual Basicさん、ごめんなさい

»

 Ahfさんのコラム「Visual Basicだって捨てたものじゃない」を読ませていただきまして、なんか呼ばれたような気がした(←多分、気のせい)ので、ちょこっと書いてみました。

 ちなみに、この中で書いている「Visual Basic」は「Visual Basic .NET」のことです。5.0とか 6.0はあんまりお付き合いがない(ぶっちゃけ、あんまりお付き合いしたくない)ので対象外です。

■ ■ ■ ■

 とあるイベントでお会いした方に、「言語は何をやってらっしゃいますか?」と聞かれたので、「Visual Basicです!」と答えたら「なんであんなつまらない言語やってるんですか」的なことを言われて、「そういう指定だからです」と答えたら、「そんな仕事ばかりやってるとプログラマとしてダメになるから早々に逃げた方がよい」的なことを諭されまして、「Visual Basicってなんでそこまでdisられてんの」と思いました。

 そこまで言い切った方は初めてでしたが、「VBやってる」というと、なんかちょっと駄目プログラマを見るような目でみられる気配があって、試しに「もともとはC++をやってたんですけどね」とか言ってみたら、途端に「はやくC++に戻れるといいですね」と同情してくれたなんてこともあって、「Visual Basicってなんでそこまでdisられてんの」と感じる機会は、本当に多いです。

 Web上でも「はやくVBから逃げたい」とか「VBやってるプログラマはダメだ」的な声をちらほらと聞くんですが、なんでそこまでVisual Basicが嫌われるのか、わたしには分かりません。

 わたしがVisual Basicとで付き合いだしたのは、今の会社に入ってからで、つまり40歳を過ぎてはじめてVBに遭遇したわけです。

 付き合い始めてしばらく経ってからの印象は「なんてお気楽な言語なの~」でした(苦笑)。

 それまでメインで付き合ってきたC/C++さんが、ものすごく気難しい美人なお嬢様、とすると、Visual Basicさんはとてもフレンドリーで面倒見のいいお姉さんのイメージです。

 とてもゆるいところがあったり、かたくななところがあったり、お節介すぎるところがあったりと、なかなか他では見当たらない面を持つユニークな言語で、良くも悪くも「さすがはMicrosoftの箱入り娘!」だと思います。

 そして、たまに思いもよらない懐の深さをみせてくれて、「あなどれないっ!」とかつぶやいたりするのです。

 付き合えば付き合うほど、Visual Basicは楽しくなってきます。

 わたしが知らないだけで、実はもっと面白いことできるんじゃないの~、とつっつきながら、Visual Basicさんと付き合う日々は、結構、楽しいです。

 うわべだけで付き合っても、それなりに動くものができてしまう言語なので、それ以上のお付き合いを求めないで、そこそこのレベルで安住してしまう人が出てくるのも無理はありませんが、それはVisual Basicが悪いのではなく、単純にプログラマ個人の問題なんじゃないかと思います。

 多分、わたしはいまだにVisual Basicのことがよく分かっていません。

 きっと、もっと、うまく、深く、Visual Basicを使い切ることができるはずなのに、自分にはそれができていない、と感じます(まあ、これはどの言語にも言えることですが)。

 Visual Basicのとっつきやすさに甘えて、じっくりつきあうことを怠っていたなあ、と今さら反省して、「ちゃんと扱いきれてなくてごめんなさい」とVisual Basicさんに謝らなくてはいかんなあ、とか思っている今日この頃だったりします。

Comment(17)

コメント

Buzzsaw

へぇ、そんなにdisられてるんですか。
VB6で社会人になり、VBScript(レガシーASP)で初めてWEB案件に携わり、
VB.NETで「オレオレFW」を乱発して楽しんでいる身としては、まさにVB様さま
です。C++さんほど気高くないけれど、「初心者でもカンタンですよ~」
と言いながらいつの間にやらOOPも本格装備して年々ナウい機能を装備する姿には、
ある意味非常にしたたかな方かも、と感じますです。

今のVisual Basicはそんなに悪くいわれるような言語ですかね。
妙に初心者に優しい仕様が一部残ってはいますが、
C#とほぼ同じ機能を揃えているので、何をするにも不足ということはないと思います。

VBの6以前と混同してdisられているんじゃないですかね。
6以前は別物なので、だとすると不当にdisられていることになりますが。

Anubis

お世話になっております。
なんとなくVisual Basicで流れを繋げてみました。

私はC#しか使ってないですが、クラス名やメソッド名でサンプルを探すと外人の方のブログ記事とか出てきて、VBのコードしか書いてないことが案外多いんですよね。
そんなときはなんでVBやねんって突っ込みたくなります。

C#の方が予約語が小文字だからなのか、パッと見の印象がきれいに思うんですが、やっぱりVBの人にはVBの方が読みやすいわけですかね。まあ、そりゃそうですよね。

とものぶ

.Net以降、特に2005以降はだいぶトレンディな言語になっていると思います。
Windows環境限定で、あまり時間をかけずにそこそこのアプリケーションを作るにはちょうど良い感じです。
言語仕様がほぼ同じなので、VBAからの移行もしやすいですし。(自分がこのパターン)
Perlに比べれば、だいぶシッカリしたオブジェクト指向言語だと思います。

プログラミング言語は宗教戦争みたくなりがちなので、信者でもないなら「そ、そうかもね(--;)」と受け流すのがよいかなと思ってます。
個人的には、動作環境や要件、プログラマのスキルに応じて、その時に適していれば、どの言語で開発しても良いのかなと思います。

ひでみ

こんばんわです。ひでみです。


Buzzsawさん。

> C++さんほど気高くないけれど、「初心者でもカンタンですよ~」
> と言いながらいつの間にやらOOPも本格装備して年々ナウい機能を装備する姿には、
> ある意味非常にしたたかな方かも、と感じますです。

したたかな方、ですか。
そう言われたらそんな気がしてきました(笑)。
めんどうみがよくて、世間知らずなとこがあるけど、したたかなお姉さん。ちょっと萌えるじゃないかっ。


まりもさん。

> VBの6以前と混同してdisられているんじゃないですかね。
> 6以前は別物なので、だとすると不当にdisられていることになりますが。

VB6で離脱して以降、近寄らないようにしている方というのはいそうですよね。
Anubisさんがコラムで書いていらっしゃいましたが、似たような名前が多くて、いろいろと混同されてしまっているのかもしれません。


Anubisさん。

楽しく読ませていただきました。
正直、呼んだつもりはまったくないんですが(笑)、とてもうれしいです~。


ゆーすけさん。

> 私はC#しか使ってないですが、クラス名やメソッド名でサンプルを探すと外人の方の
> ブログ記事とか出てきて、VBのコードしか書いてないことが案外多いんですよね

あっ、そうなんですか。私はC#をやったことがないので、知りませんでした。


とものぶさん。

> プログラミング言語は宗教戦争みたくなりがちなので、信者でもないなら
> 「そ、そうかもね(--;)」と受け流すのがよいかなと思ってます。

私も基本的には受け流すんですけど、なぜだかVB否定派の方にやたらと遭遇するので、ちょっと不思議に思いまして。

Celles

VB.NETがdisれれる理由があまりコメントされていないようなので
(注意)あくまでも個人的にdisる理由ですので

1. VB.NETはC#とほぼ同じなのにC#にしないのか?
VB.NETはC#の構文を無理やりVB6の構文で記述しようとしている箇所が見受けられるので多少ムリ(.NET的に)があるように感じられる

2.VB.NETはC#とほぼ同じだが、一緒ではない点
今までの傾向として新しい機能は、まずC#で実装されてから次バージョンでVB.NETに実装という流れがあるように見える。
しかもC#の実装をVB.NETに落とし込んでくるのでここでも無理やり感がある

3.いつまでVB.NETがあるか分からない感がある点
直ちに無くなることはないでしょうが、C#実装が先であることと、海外的にはC++もしくはC#が主流(ほんとか?)という噂も聞くことがあるのでVB.NETの先があまり無いように見える。もともとC#が出たときにVB6からステップアップする場合構文とオブジェクト指向の両方を勉強しなければいけなかったので、せめて構文は同じという補助的な位置づけの言語だったように記憶してます。

4.C#ならJavaもできるよね?な点
C#を語るときにJavaのMaicrosoft実装という感じの話をすることがあるほどC#とJavaは言語的によく似ています。このためC#ユーザーの場合何の勉強をしなくともなんとかJavaのコードが分かる程度には理解できるようですが、VB.NETユーザーの場合最初からムリといわれてしまうことが多いように感じます。


だいたいこんな感じです。
いろいろ書いてありますが、VB.NET言語自体が悪いというつもりは毛頭ないのであしからず。
ただVB.NETとC#はできることが同じなのだから上記理由によりC#の方が良いかなと感じています。

仲澤@失業者

老人プログラマです。
BASICではだめだと考えたのは1988年頃のことです。
OSの主流がDISK-BASICからMS-DOSに変わりつつあり。
多くのソフトが乗り換えていきました。
このとき自分には2つの選択肢がありました。
今まで通りBASIC+アセンブラで行くか、C言語で全てを書き直すかです。
自分は後者を選択しました。OSの混乱を乗り越えられると考えたからです。
この時期多くのプログラマが同じ問題を抱えていたと考えられます。
そして数年後、BASICを選択したグループは、あらためて
C言語化するか撤退するかを迫られることになります。
そして『やっぱりBASICはだめだった』と言われるようになりました。
VBが発売されるずっと前のことです。
ひょっとするとこの事が『BASICだめ伝説』の始まりなのかもしれませんね。

言語は、現在ではもっと沢山の選択肢があります。
但し、ほとんどの言語がオブジェクト指向なので、その本質を外さなければ
ソース上の書き方の違いは将来を左右する問題ではないかもしれません。
もっとも、C/C++を選んだということは
『1.CPUが直接実行可能なバイナリを出力できる言語』
を選択したのであり、VB,C#,C++(CLI),Javaを選んだ人は
『2.特定のエンジンが実行可能な中間コードを出力できる言語』
を選んだわけです。
この違いは本質的で、将来に影響があるかもしれません。

自分は生粋のWindows + C++じじいですが、Androidアプリを
Javaで書くのはたいしたストレスも無い簡単な作業でした。
まぁお子様向け(高度に自動化された)のC++みたいなもので、
この点ではC#も似たり寄ったり。
好みの違いは置いといて、色々な言語をやってみるのが良いのではないでしょうか。
まぁその結果自分としては(現在の)VBは学ぶべき部分なしってことに
なりましたけど(vv;)。
MacBookも買ったし、この夏はiOSアプリをObjective-Cで書くつもり、
所詮オブジェクト指向言語だしっ(笑)。

30代目前プログラマ

VB.net嫌いな人結構いるんですね。
各言語には特徴や得意不得意があるのは技術者なら誰でも
分かると思うんですが、ただ好き嫌いや周りの意見で決めているならば
悲しいですね。

僕は、お客様の案件の内容でC/SかWebシステムかを決めて、使用する言語やOSやミドルウェアやフレームワークを選んで行くんですが、VB.netではないですが、VBA、C#、C++、PHP、etcなど使用目的をはっきり決めて選択していきます。
(VB.netでASP.netのWebアプリケーションを作成していましたが)

嫌いな人にもちゃんとした理由もあると思いますが、極論を言えばお客様の案件を最低限守れればどの言語でもいいと考えることができるのですが。
どうでしょうか?

ひでみ

こんばんわです。ひでみです。


Cellesさん。

VBとC#を比較して「だからVBはいらない子」的な意見はたまにみるんですけど、C#をやったことがない身としては、なんともお答えのしようがありません。
それでもあえて言えば、VBにはVBの長所があり、C#よりもVBの個性の方が活きる場面もあるはずですから、VBの方が使い勝手がいい場合はVB使えばいいじゃない、と思います。

仲澤@失業者さん。

私が新人の頃は「BASICはプログラマの基礎教養」と言われてましたね。
私も一応、勉強しましたけど、あまり好きじゃなかった記憶が(汗)。

私の場合は会社側から強制的にCプログラマにさせられましたけど、そういう選択を迫られた方々もいらっしゃるんですか。
でも、あの頃って選択肢がずいぶんと少なかったですよね。
プログラマにとって、言語や進路の選択肢は本当に増えましたけど、それはそれで迷うことが多くなっているのかもしれません。


30代目前プログラマさん。

> 極論を言えばお客様の案件を最低限守れればどの言語でもいいと考えることができるのですが。

確かに、職業プログラマとしては、それが真っ当な考えだと思います。

言語の好き嫌いはプログラマの個性なので、そういうものがあってもよいと思うんですが、「なんかみんながdisってるから」という理由でなんとなく敬遠されているのなら悲しいです。

仲澤@失業者

>私の場合は会社側から強制的にCプログラマにさせられましたけど、そういう選択を迫られた方々もいらっしゃるんですか。

参考になるかどうかわかりませんが、自分が教えた全てのプログラマに
強制的(笑)に「C言語」を、希望者に「C++言語」と後には「VB」を
教えました。自分が30代の頃に20代だった人たちです。
彼らは現在40代になっているはずです。

当時、WindowsのUIを素早くプロトタイプするにはVBは最適な言語でした。
客先にはVBのプロトタイプでプレゼンテーション(又は仕様書を作成)し、
実装はC++というスタイルでした。
従って、VBはむしろUIの設計担当に必要なスキルだったのです。

ちょびちょび

以前ひでみさんのコラムに勇気を貰って旅に出ていたちょびちょびです。
帰って参りました。って、スマホから業務系に戻っただけなんですが。
業務です。そうですVBです。ちょび的になんてタイムリーな話題。
帰還早々、スタート画面で目についたのが以下の「ちょいとひと事」

http://msdn.microsoft.com/ja-jp/magazine/jj133828.aspx

なるほどーと思いました。

Access2.0とかVB4.0とか太古の話ですが、丁度その頃産休を余儀なくされておりました。社員でもない身で仕事復帰が容易だったのはVBのおかげです。VBというかMicrosoft様には非常に感謝しております。多少妙な動きがあっても「VBですからね~」で意外とお客様が納得して下さる現実。お客様がうなずいて下さっている隙にさくっと修正したりできなかったり……。なんというか、もしかしてそんな現場のシナリオを想定して設計してくれているのかというほど奥の深い言語です。

というわけで、.netもそれ以前でもVBに一票入れさせていただきます。

ひでみ

こんばんわです。ひでみです。


ちょびちょびさん。おや、ごぶさたです。

> 多少妙な動きがあっても「VBですからね~」で意外とお客様が納得して下さる現実。

え~っ、VBにそんな便利機能(?)があったんですか?
そっ、そんなお客様にはお目にかかったことがありません。残念なことです(←お客様をたばかってどうする)。
てか、お客様まで「VBはダメだ」とか言い出したら、逆の意味で残念なような気が。

リンクされていた記事はなかなか興味深く読ませていただきました。
私は正直、VB 5.0 や 6.0 はあまり好きではないのですが、やはりそれなりの理由があって生き延びているんですね。
それを「怠惰」と判断するか「利便性」と判断するかは、人それぞれでしょうが。
私の場合は単純に、「かわいい」と思えない、というのが避けたい理由なんですが。

光次

つまらないというより手遅れなのだと思う。俺はSB使ってるけど、SB使わないと面白さがみんなに理解できないのかな。
俺は実は                                小4
だけど、独学するのが「つまらない」の原因であり、続かない理由でもあると思う。俺は本とページでSBでいろいろゲーム作りに挑戦してみてるけど、あれでつまらないはないと思う。SBも面白いのに。
ということで決定的にVBに一票。

nix

執筆されてから4年以上経過しましたが少なくともシステム開発案件ではVB.NETは健在です。
なんでも屋のようにいろんな言語、フレームワークの開発案件をやってきましたが、VisualStudioの入力補完前提であれば冗長的な記述も気になりません。
最低評価をするにしてもプログラムを作るためのGUIツールなどを作るにはVB.NETが最速だと思ってます。Rubyのほうが処理自体は速く書けますがVisualStudioほど高性能なIDEが無いのとGUIを使う場合かえって面倒なので。

数時間でドキュメントの表を元に別言語での定義を自動プログラミングするツールを作るような場合、C#だと比較時の型チェックがVBより厳しくいちいちキャストしないといけなかったり、改行するたびにセミコロンをタイプしたり、ブロックの始まりのたびにShift+[をタイプ(VB.NETだとENTERだけ)させられたりするのが煩わしいです。長すぎる行を分割したいケースより普通に改行したいケースのほうが圧倒的に多いので個人的にはセミコロンは無い方が生産性が向上すると思います。

匿名

Stack Overflow調査の言語人気度ランキングが出ましたよ。

[開発者に愛されている言語]
8位、C#
※VBはランク外

[開発者に嫌われている言語]
1位、Visual Basic 6
2位、VBA
4位、VB.NET
※C#はランク外

嫌われる理由は、敷居が低い分、質の低いコードが量産され、
それをメンテする人がVB嫌いになる、というサイクルでしょうね。

以前まではC#とVB.NETの言語的な機能差はそれほど無かったですが、
現在だとWindowsに限定せずにmac, iOS, Android向けのアプリやゲームの分野なども視野に入れるとVB.NETは選択肢にも入りません。

匿名

世の中の状況は、VBよりもむしろC#の方が危機的状況と思います。

長年の経験上、VB6のシステム移行は大概VB.netが選択されているし、
顧客の情シスとか開発のPM、PLがVB嫌いの場合は、C#でなくJavaを選ぶ場合が多いように思います。

要するに、オブジェクト指向言語としてJavaに対抗できないどころかVB6の受け皿にも慣れていない。
.NetFrameworkが出た当初は、MSがC#推しなのは見え見えでしたし、ネット上のサンプルコードがC#のみというサイトも結構ありました。
しかし今は大概のTipsサイトはVBとC#の併記もしくはVBのみです。
要するに、VBの方が、VB6マイグレを中心に需要が多いということです。

TIOBE Index ランキングでも、C#はVB.netもしくはJSに抜かれるのは時間の問題、
C#は右肩下がりです。

2010くらいまでは、VBの欠点ばかり強調する人が多く、逆の状況でした。
しかし、VB.netが需要が無かったというよりは、
VB.netの受け皿になるべきシステムをお客さんが我慢してVB6で使っていたという方が正しい認識かと。
理由はVB6で十分動くから。

5年後にまた状況は変わるかもしれませんが、
現状は、少なくとも私関わる業務アプリでは、

Java>VB>C#

という需要状況と思います。

コメントを投稿する