いつまでVB 6.0を使い続けますか

http://itpro.nikkeibp.co.jp/article/OPINION/20050927/221731/
メモ.
最近のITProって提灯記事が増えてる気がする.

VB6ユーザーがVB.NETに移行しない理由.

  1. VB6と互換性がない.
  2. よってVB6で作った資産を継承できない.
  3. VB6上で動くアプリを.NET上で使うには移植が必要になるが,そのような無駄なコストは要求できない.
  4. それに加えて別言語を覚える負担がかかる.
  5. 苦労して移行しても,またもサポート打ち切りとなるかもしれない.
  6. どうせ移行するならC#Javaという選択肢もあり,VB.NETに拘る意味がない.


VB.NETオブジェクト指向言語であるということにより別言語を覚える負担を大きくしているが,それ以外の問題はオブジェクト指向であろうと無かろうと関係ない.問題の本質はVB6とVB.NETが互換性のない別言語であるということで,オブジェクト指向云々はそのオマケ程度だ.*1

次に,仮にVB6ユーザーがVB.NETに移行できたとして,それで何のメリットがあるだろう?VB.NETに移行するならC#Javaでも大差ない.「手軽で簡単」が一番のメリットであるVBを捨てるからにはVB.NETに拘る意味がない.

サポート延長,あるいはVB 6.0に近い形の新しいVBを求めるユーザーもいるが,そんなことが現実になるとは思わない方がよい。

別に「近い形の言語」が欲しいわけでもあるまい.VBユーザーに必要なのは「VB6の後継言語」であって,「VBの見た目を真似した異なる言語」ではない.見た目がどれだけ似ていても,言語としての互換性が無く従来の資産を継承できない限りは見た目の類似性には価値がない.

また,もしこれが事実なら,次の疑問が出る.「VB.NETはいつまでサポートされますか?VB.NETならばサポート延長が期待できますか?」だ.しかし良い答は期待しない方がいい.あれだけ多くの利用者のいるVBでさえもMS側の都合で一方的にサポートを打ち切ったのだ*2.利用者の少ないVB.NETでそれが起こらないと誰が言えよう?


ところで

現在広く普及しているプログラミング言語で,オブジェクト指向を採り入れていない言語がどれだけあるだろうか。

まず「広く普及している」をどのレベルで考えるかだが,まあこれはいいとしよう.「取り入れていない言語」となるとC言語くらいでたしかに少ないが,「オブジェクト指向が中心となっていない言語」なら結構ある.C++PerlLISP,VB6あたりがそうか.マイナーな言語ならもっとあるだろう.

オブジェクト指向buzzwordなので,「オブジェクト指向対応」をうたう言語が多くても不思議ではない*3.しかしそこでいうオブジェクト指向も十人十色,言語が異なれば異なると考えて良いだろう.

オブジェクト指向の考え方からすると,インスタンス化せずにフォームにいきなりアクセスできるということはおかしいからだ。

これはどうだろう.その辺りは実行モデル次第でどうとでもなるだろう.確かに一貫性はなくなるだろうが,その辺はVB.NETに期待するものではない.

*1:「Perl4からPerl5」ではなく「Perl4からRuby」や「VBからJava」のような関係かな?

*2:当時はこれは無謀な決断だと思った.一度でもそういうことをすれば,その会社は二度と信用されなくなる.たとえ今までどれほど時間をかけて信用を培ってきたとしても,たった一度の決断でその信用は脆くも崩れ去ってしまうのだ.

*3:結局Javaが出るまでは「普及したオブジェクト指向言語」がC++くらいしかなかった.しかもこれについても本当にオブジェクト指向を理解して利用しているものは,C++ユーザーのごく一部だと言われてきた.オブジェクト指向が本格的に普及しだしたのはJava以降だが,それについてさえ日本の現状はお寒い限りで,未だ上流行程神話が幅を利かせている.