|
VB6.0とVB.NETとの大きな違いは、ネットにより近くなったということです。
しかし、具体的なことを質問されるとなかなか答えることは難しいでしょう。
それでは、具体的なことを説明します。
例えば、VBでメッセージボックスを出したいときはMSGBOXと記載します。
しかし、.NETではMSGBOXを出す際の命令語も異なります。
正確には、使えますが、クラスを使用することになります。
通常、VBエンジニアは関数やサブルーチンと呼ぶ部分を
VB以外ではクラスと呼ぶ場合が多いので、クラスと呼ぶと思えばOKです。
本当はクラスとモジュールを同じ扱いにしない方がいいですが、
今回は主旨がエンジニアにVB.NETを知ってもらいたいため、カンタンに説明しています。
それでも、VBで開発を数年行った経験があるエンジニアなら1週間でVB.NETで開発する方が
ラクだと気づきます。
なぜなら、今まで自前で作成していたユーザ関数がもともとあったり。
以前、使用した共通モジュールをインポートすればそのまま使用できる点や
開発の環境のレイアウトも俄然見やすくなっているからです。。
VBはプログラマーが多くプログラミングの知名度、操作性では群を抜いている
プログラミング言語です。
もちろん、実用にも十分耐えますし、コーデイング期間が短期間で済むように設計されています。
VBとC++の両方やってみるとわかると思いますが、VBではまずウィンドウのデザインを決め、
その後にそのウィンドウ上のコントロールソースを記載します。
イベントが発生したときに実行するイベントプロシージャを記載しなら開発します。
これは画面を他言語を書いている人には信じられないぐらい簡単に作れます。
とても簡単なVBですが、2002年に大幅なバージョンアップされ、
Visual Basic .Net(以後VB.Net)となりました。
これは.Netということで、仕組みから言語体系まで変わる変化でした。
そのためVB6ではソースコードはコンパイルされると、Windowsが直接理解できる
ネイティブコードに変換され、 Windows上で実行されていました。
しかし、VB.Netで作成されたプログラムはWindows上で直接実行されるのではなく、
中間コードにコンパイルされます。
その後にFrameworkで実行されるます。
VB6はネイティブとは言ってもVB6 Runtimeのサブルーチンを多く呼び出すのに
時間掛かるため、C++で作成したプログラムに比べると遅いです。
VB.Netの.Net FrameworkというのはJavaのバーチャルマシンと同じで、
コンパイルされたコードはOSに依存せず、.Net Frameworkという環境があれば、
どこでも実行できます。
そしてVBエンジニアはVB6ではかなり自由にコードを書くことができましたが、
VB.Netになりオブジェクト指向の色が強くなりました。
そのため、今までVB6に慣れたエンジニアには当初、抵抗があると思われます。
しかし、利点に加えて、Visual Basic2005(Visual Studio 2005 Express Edition)が無償で手に入ることを考えると、
VB.Netの有用性とVB6のエンジニアがVB.Netに抵抗なく移行できると思います。
VB6のイメージ
Windows→Native→Runtime→Windows
VB.Netのイメージ
Windows→.Net Framework→Native→Windows
VBの特徴としてはC言語のint a;のように変数の型を指定する必要がありませんでした。
VB6ではVariant型がありましたが、VB.NetではObject型と呼ばれます。
何でも代入できるというのはバグを生みやすく、一般的には整数型ではDim a As Integerのように
As以降にその型を明記するべきです。
VB6からVB.Netとなり変わったことの1つとして、オブジェクト指向がかなり取り入れられたことを説明しました。
C言語では関数を用いて、VB6ではサブルーチンを用いてプログラムを
開発して行きますが、オブジェクト指向プログラミングにおいては
クラスを用いて開発していきます。
このクラスというのはデータやその集合を現実世界の「モノ」になぞらえたものです。
ここで、車を例に取り、VB6風に書いた場合とVB.Net風に書いた場合の違いを示します。
VB6
Sub Main
Dim AAA As Long
Dim BBB As Long
BBB=処理A(AAA) '引数として値(AAA)渡す。戻り値BBB
End Sub
VB.Net
Public Class CCC
Public Sub 処理AAA
処理Z
End Sub
Public Sub 処理BBB
処理X
End Sub
End Class
Sub Main
Dim CCC As Bike = New Bike() 'Bike型のオブジェクトを生成する
CCC.処理AAA(10km/h) 'CCCに対して、メソッド処理AAAを実行させる
CCC.処理BBB(20L) 'CCCに対して、メソッド処理BBBを実行させる
End Sub
VB6ではサブルーチンを定義し、各サブルーチンを呼び出すたびに
変数を参照をして引数として渡しています。
小さなプログラムを書いている場合はこれで問題ありません。
しかし、プログラムが大きくなってくるとサブルーチンの数が膨大になり、
コーディングも複雑になります。
VB.Net風ではサブルーチンがクラスに所属しています。
これをメソッドと呼びます。
クラスというのは、所属するメソッドを呼び出してやれば、車の仕組みがわからなくても
ハンドルやアクセルを操作することで車の運転ができるのと同じように、ある特定の機能を利用することができます。
クラスはC言語で言う構造体にさらに関数もまとめてしまったを指すことが多い思います。
クラスに持たせたい意味や機能がはっきりするという点では、クラスの存在意義は大きなものであると思います。
また、VB.netではVB6でよく使われていた関数がクラスとそのメソッドに置き換えられているので注意が必要です。
フリーエンジニアとエンジニア転職求人サイト
|