連載:熱血VBプログラマ応援団 |
|
− 今回のご相談 − |
||
|
BASIC/Visual Basicこそ、これから先のプログラム言語の本命!
筆者の個人的な判断で答えると、駄目ではないと思います。むしろ、JavaよりもC#よりも、Visual Basic一族のニューフェイスである「Visual Basic .NET」を選ぶことの方が、より正しい選択であるとさえ思っています。
恐らくこれを読んで、そんな馬鹿な、と思った読者の方々が多いと思います。Visual Basic 6.0プログラマの中にも、そう思った人が多いかもしれません。ですから、その理由をこれから説明しましょう。
現実はVisual Basicを支持している
「BASICあるいはVisual Basicは出来の悪い時代遅れのプログラム言語であるが、それしか使えないプログラマが大勢いるので、仕方なく使うことになっている」というように思ったり、あるいは発言したりする人たちがいます。私自身も、そういう気持ちを抱いていた時期がありました。
しかし最近になって、その考えはひょっとして間違いではないかと思うようになってきました。実は、BASIC/Visual Basicこそが、現在の使い勝手と未来への発展の可能性を秘めた、最も本命のプログラム言語なのではないかと。
BASICは1964年、米ダートマス大学にて開発されました。そして1975年には、マイクロソフトが、現在のパソコンの直接的なルーツとなるAltair 8800というマイクロ・コンピュータ用としてBASICインタープリタを開発しました。その後、途中さまざまな変化を経て、Visual Basicという存在になりつつも、2004年の現在に至るまでパソコン上の主力開発言語の1つとしてその立場を守っています。
そして現時点でも、パソコン上の主力開発言語から退く兆候はないどころか、ますますその立場を強めています。.NET Frameworkの時代を迎えて、Visual Basicは徐々にC#にバトンタッチしていくという予測を立てる人たちもいました。しかし、いざ蓋を開けてみると、あくまでVisual Basicを使いたいという多くのプログラマの声に押され、マイクロソフトもVisual Basic .NETに対する熱意を高めているように見えます。
このような状況をどう考えるべきでしょうか。BASICは悪いもの、と決めつけるのなら、「悪貨が良貨を駆逐する」とBASICを悪貨に例えることもできるでしょう。しかし、それは正しい態度とはいえないのではないでしょうか。もし、本当に問題のあるものであれば、一時的な流行は起こり得ても、それが長続きすることはあり得ません。例えば、問題のあるプログラム言語が何かの勢いで数年間にわたって主役となるケースはあるかもしれません。しかし、マイクロソフトが最初のBASICを開発してから約30年間、主力開発言語の一角をずっと維持し続けるというのは、なまじっかな勢いだけで可能なことではないでしょう。
やはり、BASICには、それだけ長い期間を生き続けるだけの合理的な理由がある、と考える方が妥当ではないでしょうか。ただ単に、VBプログラマが無知で馬鹿だから、などと短絡的に考えるのは失礼というだけでなく、論理的な根拠に基づく態度とはいえません。
完璧ではないことが希望の光
そうはいっても、いろいろな意味で、BASICにはプログラム言語として煮え切らない部分、不完全な部分があることは確かです。それにもかかわらず、BASICの正しさを理由付ける理屈などあるのでしょうか。
『適応型ソフトウェア開発』(ジム・ハイスミス著 翔泳社)という本を読んでいるときに、もしかしたらその理由になるかもしれないものを見つけました。
この本の主眼は、複雑適応系という科学の1つの考え方によってソフトウェア開発の方法論を説明することにありますが、それは本題ではないので横に置きます。興味のある人はこの本を読んでみてください。
さて、この本では、面白い説明がなされています。まず、プログラムを開発する場合の態度として、官僚主義、場当たり主義の2つが紹介されます。官僚主義はすべてを厳密に扱う完全に管理されたやり方です。すべての作業には正しく定められた手順があり、すべての作業は秩序正しく行われます。一方、場当たり主義は何も計画せず、その場の思いつきで作業を進めます。つまり、官僚主義とは完全な秩序であって、場当たり主義は完全な無秩序を意味します。
そして、次に出てくる話が実に興味深いのですが、どちらもソフトウェア開発を成功させるには十分ではないと結論しています。少々意外ではありますが、このことは多くの人が納得できるのではないかと思います。場当たり主義では、きちんと結果が出てこなくても当たり前。これがうまく行く方法とは誰も思わないでしょう。かといって、官僚主義も、くだらない形式にこだわって本当に重要な作業が進まないなどの弊害が起こる場合があります。
そしてこの本では、成功するために必要な方法は、このどちらでもなく、両者の折衷案でもない、と述べています。成功するためには、秩序と無秩序の中間に存在する「カオスの縁」という状態を維持する必要があるというのです。恐らく、カオスの縁という言葉は、そのような分野に興味を持っている人でなければ、まったく理解できないでしょう。ここでは、理解する必要はありません。ただ、「官僚主義」と「場当たり主義」、つまり「完全な秩序」と「完全な無秩序」のほかに、目指すべき理想的な状態があると理解すれば十分です。それは、秩序と無秩序の境界という極めて狭いところにあります。
さて、そのように考えた場合、理論的に完全である、あるいは完全に近いといわれるプログラム言語は、その完全さゆえに成功の本命たり得ないことになります。BASICに見られる不完全な部分は、逆説的に「完全な秩序」という破局を回避するために役立っていると考えることができます。例えば、JavaやC#のような、完全でありすぎるプログラム言語よりも、BASICの方が未来への可能性があるといえるかもしれません。
しかし、完全な秩序ではないからといって、成功が約束されるわけではありません。無秩序の度合いが多ければ、やはり失敗を避けることができません。
意外にも健全に優れた発展を遂げているVisual Basic
多くのマニアがUNIXを起源とするOSを使い、そして、その標準言語であるCや、その影響を受けたC++、Javaなどを使っている関係からか、見落とされていることがあります。それは、すべてのプログラム言語が、Cの系譜の上にあるわけではないということです。
例えば1980年ごろには、将来のパソコンの主力開発言語として、CよりもPascalの名前が挙がることもありました。そして、Pascalを生み出したニクラス・ヴィルトが、その後継言語というべき位置付けで生み出したのがModula-2というプログラム言語です。このModula-2は、Cよりももっと洗練された美しいプログラム言語だと筆者は思います。このModula-2で感心したことはいくつかありますが、そのうちの1つに無限ループ構文があります。これは繰り返しを記述するための構文ですが、終了条件を記述する手段が存在しない構文です。では、ループを終了させられないのかというと、もちろんそうではなく、中途脱出のための構文が存在します。
そして、Visual Basicの構文を調べているときに、「ほほう! これは!」と思ったのが、Do-Loopによる無限ループ構文とExit文による中途脱出です。少なくともCしか見ていない人には発想できない構文です。Cでも、無限ループを記述することはできますが、無限ループ専用の構文はありません。単なる筆者の感想にすぎないといわれればそれまでですが、少なくともVisual Basicの構文を考えている人たちは、Modula-2などのマイナーなプログラム言語もよく調べ、そしてシェアの大小と関係なく、本当によいものを取り込むこともできるのだと感じました。
もちろん、現実のVisual Basicはよいものばかりとはいえません。そこにはさまざまな現実との妥協もあるでしょう。しかし、一方でよいものを取り込もうという態度があり、他方で現実のニーズという重圧に対応する必要に迫られた状態で、意図せずしてBASICは最も成功する領域「カオスの縁」を歩いていたのではないか、という想像はできます。
この想像が当たっているかどうかは分かりません。そもそも、カオスの縁という領域があるとしても、それが本当によいものであるかも定かではありません。しかし、ここではそれは重要な問題ではないと考えます。なぜなら、どうせVisual Basicを使うのなら、駄目な言語だと思って使うよりも、もしかしたら素晴らしい言語だという可能性があると思って使った方が気持ちがよいからです。気持ちよく使えば、よりよい成果を出せることもあるでしょう。プログラム言語の良しあしは、使い込むことによって変化することもあります。気持ちよければ、どんどん深く使い込んで、誰もが認める優良言語と呼ばれる日がくるかもしれません。
まさにそのような意味で、私はVBプログラマを熱血応援する価値があると信じて、この「熱血VBプログラマ応援団」の連載を始めようと思っています。
頑張れVBプログラマ、君たちが使うVisual Basic .NETは使うに値する価値あるプログラム言語だ!
「熱血VBプログラマ応援団」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -