元ネタ:画面Load時のClose処理について。(スレッドの途中に飛びます)
マイクロソフトでは、“プロフェッショナル”という言葉と、“ディベロッパー”という言葉を分けて使います。“ディベロッパー”は、ソフトウェア開発言語を使ってソフトウェアを作ることの専門家。“プロフェッショナル”には、2つの意味があります。“ディベロッパー”と対比して使うときには、ソフトウェア開発者以外の人々。そして、開発者もひっくるめて“専門家”や“達人”を指すときがあります。この後者の例は、Microsoft Most Valuable Professionals です。この“プロフェッショナル”には、ソフトウェア開発者だけでなく、インストラクターやウェブ デザイナーも含まれます。
ソフトウェア開発という作業について要求される理解度、習熟度は、ソフトウェア開発者と、ソフトウェア開発者ではないがソフトウェアを作りたい人々に対してで違ってきます。この具体例を、ソフトウェア開発以外のことで挙げてみましょう。
私は、「応急手当」をするために、血液の濃度がどれくらいだの、白血球の寿命が何時間だの、そういうことを知る必要を感じません。
同じように、日曜大工で「棚を作る」のに、木材の材質による強度の違いや腐食の進行度合い、そういうことを学ぶ必要を感じません
そういうことを知っていなくても、応急手当や日曜大工を行うことが出来ます。また、しかるべき店に行けば、そうすることを助けてくれる道具が売っています。
しかし、医師や建築士が、そのような知識を持っていなければ、どの様に感じるでしょうか?
なぜこのようなことを持ち出すかというと、Visual Basic という言語が開発された目的は、ソフトウェア開発ではないと考えるからです。
VB は元々、医者、建築家、弁護士など、仕事の一部を IT 化することで効率的に仕事が出来るようになる人を販売ターゲットとした言語です(と、聞いている…と、逃げ道を用意しておく)。
このような人たちは、ソフトウェア開発が主な仕事ではありませんから、プログラムの書き方のトレンドを追いかけたり、どういう仕組みでプログラムが動くのか知っていたりする必要はないでしょう。
だからこそ、少ないソフトウェア開発の知識・・・プログラムの書き方ですね。プログラムの書き方さえ知っていれば、ある程度のアプリケーションが作れるようになっています。
この中には、「文字列と数値は違うものだから、単純に比較することは出来ない」とか、「変数はメモリに格納領域が確保された後、初期化されなければならない」とか、「Form に何か書くためには、描くという操作を列挙しなければならない」といったことが含まれます。(最後のは「ダイアログ フォーム」のことね)
ところが。効率主義な世の中。ほとんど専門知識なしにアプリケーションが作れてしまうこの仕様を、本当なら専門知識を持っていなければならない人たちが「効率的だ!」ということで目を付けてしまったんですね。
ということで、ソフトウェア開発者にも、VB ユーザが増えてきます。
ところがですね。子供の夏休みの宿題で工作をするのと、家を建築するのとで、必要な道具、その道具に求められる精度が変わります。家を建てるのに、100 円ショップで買ってきたカナヅチやノコギリを使わないでしょう。
そこで、要望が上がるわけです。「もっと精度を良くしてくれ」
マイクロソフトは、この要望に応えてしまったんですね。でも、それにも限界があります。そこでいいました。「手軽さと精度を両立することは出来ない。精度を上げる代わりに手軽さを犠牲にする」。私は、至極まともな意見だと思うんですけどね。
でも、忘れちゃいけない。使っているのはソフトウェア開発者、精度が必要な人たちだけではないのです。精度は必要なく、手軽であって欲しい人たちも使っています。こういう人たちが、ブーイングを上げるんですね。当然だと思います。
すると、精度が必要な人たちまで、ブーイングを始めました。私は、「そりゃ、違うだろ」と思うんですけどね。
で、マイクロソフトは、「設定」という形で、どちらかに切り替えることができるようにしてしまったんですね。で、デフォルトは、「手軽」に設定されているわけです。
さて、では次に、マイクロソフトはどのように動くべきなのでしょうか?
私は、「今のままでよい」と思うのです。
マイクロソフトは、VB だけを提供しているわけではありません。C# もあれば C++ もある。VB が「精度不足だ」と感じたら、そういった他の言語に移行していけばいい。VB にとどまるも、他の言語に移行するも、選ぶ自由を我々は持っているわけです。
C# では、VB の手軽さを残したまま、オブジェクト指向言語として、より洗練されています。VB 独特の宣言の仕方故、最初はとまどうでしょうが、慣れればどちらでも書けるはずです。現に、私をはじめ、多くの人が両方の言語を使えます。
というより。ソフトウェア開発にとって、言語はツールの一部です。使えるツールがたくさんある方が、いろいろなものを作ることができます。他の言語にも手を出すか、ひとつの言語だけで終わるか。それは、その人に選ぶ権利があります。他の人は提案できても、選ばせることはできません。
おそらく、一致しないのはここらあたりの考え方ではないでしょうか。私は、VB の言語仕様は今のまま、ソフトウェア開発を主たる業務とする人/しない人の両方に対応できるという方向で進むことに、反対はしません。こういう、中途半端な仕様を維持するのは難しいでしょうし、また、中途半端な状態を必要とする人もいるのですから。
そして、VB の言語仕様が、より発展的な考え方への妨げになるとは思いません。それは、その人の意志に依存することです。
「なぜ?」という疑問を持って、それを突き詰めようとし、突き止め、今のままとどまるかどうか。これはたかが一言語仕様が影響するものではありません。その人の考え方に強く依存します。
逆に、VB は、そういう疑問を持つのに好都合だと思います。「だから VB はダメだ」という声が多いですから。
「イヤ、そんなことはない」「そうなのか。じゃぁ、他も見てみよう」「ふ~ん。だから、何?」
どう思うかはわかりませんし、どう思わせるかの責任を、マイクロソフトは持っていません。
ものにはすべて、向き不向き、必要とされる原因があります。「過去のもの」と、切り捨てるものではないと思います。
「COBOLはどうなんだ!?」という声も、お忘れなく。
投稿日時 : 2006年9月21日 23:11