昨日と今日、VB.NETの研修を受けてきた。VisualStudioは、相変わらず凄いと感じた。が、プログラムソースは汚いと感じた。
私の前提知識だが、SE全盛期の頃はCOBOLで開発を行っていた。時代が変わり、Javaに手を出したが、オブジェクト指向でつまづいて挫折した。その1年後、再度Javaにチャレンジし、SJC-Pに合格することができ、オブジェクト指向の良さを感じられる程になった。
VB.NETは、VB6で開発経験もあった為、これも手を出してみたが挫折した。
何がダメだったかといえば、Windowsの画面、いわゆるユーザインターフェイスの部分は、作り方に関して変わっていなかったので問題なかったが、モジュールの考えからクラス、いわゆるオブジェクト指向的な考えにプログラムがなってしまい、ソースコードが肌に合わなかった事にある。
今回は、VB.NETの依頼があり、久々にまた取り組む事になった。
前回取り組んだ時と今回とで違うことは、オブジェクト指向がどのようなものか、どんな利点があるか、などを押さえている事である。継承やポリモーフィズムなどもしっかりと押さえている。
そこで感じたことは、VB.NETのソースコードが汚くて、Javaのソースコードがシンプルに感じたことだ。
元々VB.NETは、Javaの「Write once, run anywhere」の考えが広まった為、追随して無理矢理、VBをオブジェクト指向に変えたものと思っている。だから、VBユーザーから避難を浴びる事になったはずだ。
追随なんだから、ユーザー側からすれば、オブジェクト指向の考えをシンプルにそのまま取り入れてくれればよいわけだ。それなのに、これもベンダーの意地なのだろうか、独自の解釈を随所に取り入れてくれたわけだ。ベンダーからいわせれば、ユーザーに使いやすいようにしてあげた、というだろうが、これが理解を妨げるもとになっていて、ソースコードが汚い原因にある。
例えば、インターフェイスを実装する場合、クラス名に続けてImplements句を記述する所までは良いが、なぜ、オーバーライドするメソッドにまでImplements句を付けなければいけないのか。Javaにはない。
良く使うポリモーフィズムについてもそうだ。
インスタンス生成時に、親クラスの型で生成すると、なぜオーバーライドしたはずのメソッドなのに親クラスのメソッドにアクセスがいくのだ。子クラスのメソッドにアクセスしたければ、OverridableとOverrides句をそれぞれに付ければ出来るそうだが、Javaにはない。他にもいくつか不可解な命令に出くわすことがある。
オブジェクト指向の考えを統一することは出来ないのだろうか。
最近、国も政府もおかしくなっているが、IT業界も同様な気がする。何が原因か考えて思ったことは、すべて複雑になり過ぎてしまったことだと思う。
年金問題もそうだし、米国の金融破綻もそうだ。ITのトラブル増加も同様だと思う。
昨日、TVタックルでたけしがいっていた、「仕組みが複雑になりすぎている。シンプルにすればいい。」その通りだ。(これは年金の仕組みについていったものだったと思う)
テレビリモコンの流れを見ればよくわかる。
バブル時のテレビリモコンは、技術が進歩すればする程、リモコンに機能が追加され、いつの間にか高機能リモコンが主流になった。しかし、利用者が使い切れないから今ではシンプルリモコンが主流だ。
IT業界も少しこの点を見直したらどうだろうか。
IDEなどツールは高機能になっているが、利用者の技術がついていけてない。言語も簡易的なものが増えてきているが、どれも使いこなして主流になる程ではない。中途半端だ。
ベンダーの思惑もあると思うが、もう少し協力して統一した考えのもとで開発環境を整えてもらいたい。
それを考えるとCOBOLは凄いと思う。未だ主流で使われている。でも、聞く話によるとCOBOLもオブジェクト指向になっているとか聞く。止めてほしい。中途半端なことは・・・
最後に、世の中、物資がたくさんになって、賢い人が増えて、便利になったのはいいが、便利を通り超して複雑になってしまったように感じる。
何事も「・・・し過ぎる」ことは良くない。
何事もシンプルがいい!