Windowsのプログラミングを勉強したい

プログラムの勉強を始めたいと思っていますが,Visual BasicとVisual C++のどちらから始めたらいいでしょうか?



まずはBASICとC++言語の違いを簡単に説明しましょう。

BASICはインタプリタ言語
 BASIC(Beginner’s All-purpose Symbolic Instruction Code)とはその名のとおり,もともとがプログラミングの入門用の言語であり,インタプリタ言語です。「インタプリタ」は「通訳」などと説明されるのが一般的で,つまりはBASICで書かれたプログラムを,逐次コンピュータの分かる言葉に通訳して実行されることになります。そのため,少し手直ししては試し実行してみる「プロトタイピング」には向いていますが,半面,実行速度はあまり期待できません。また,言語仕様以上の機能を持たせることはできず,できたとしても結局はほかの言語の力を借りることになるでしょう。

C言語はコンパイラ型言語
 それに対して,C++言語の基になったC言語は,プログラムを実行する前に,「コンパイル」と呼ばれる作業が必要になります(正確には,その後に「リンク」も行われます)。手間はかかりますが,一度コンパイルしてしまえば,コンピュータが分かるネイティブなプログラムに変換されますので,実行速度はBASICに比べてはるかに高速です。また,「高級言語の皮をかぶったアセンブラ」ともいわれ,基本的にC言語で実現できない機能はありません。C++言語は,そのC言語にオブジェクト指向的な要素を盛り込んだ上位互換の言語です。

Visual BasicとBASICの違いとVisual C++
 いうまでもなくVisual BasicはBASIC言語を基にした言語です。ただし,従来のBASICに比べ,オブジェクト指向的な要素を加えたり,ビジュアルな開発環境を備えるなど,かなり拡張されています。また,Visual Basic5.0(Professional Edition以上)からは,実行速度はそれほど速くないものの,ネイティブコードにコンパイルすることもできるようになりました。これに対し,Visual C++はC++言語の統合開発環境といった位置づけです。したがって,言語仕様自体はC++そのもので,何でもできる半面,すべて自分でしなければならないというのもまた事実です。簡単な例を挙げてみましょう。例えばBMPファイルを表示したい場合,Visual Basicではピクチャーボックスのプロパティにファイル名を指定するだけで済みます。ところがVisual C++の場合は,まずファイルを開いて,ヘッダを解析して,パレットを読み込んで……という作業を自分でやらなければなりません。ただし,このビット列に対して,フィルタなりの画像処理を加えようとした場合,Visual C++では「ポインタ」と呼ばれる演算子で値を書き換えていけますが,その能力のないVisual Basicは,とたんに無力になってしまいます。
 また,双方とも「Visual」と名が付きますが,その「Visual」の質はだいぶ異なります。Visual Basicの場合は,ウィンドウのベースとなる「フォーム」に対して,パレットから選んだコントロールを配置していき,そのコントロールが操作されたときの処理などをちょいちょいと書いていくだけで,ある程度のアプリケーションができてしまいます。それに対しVisual C++では,フォームに対してコントロールを載せること自体はVisual Basicと同じようにできますが,それらが操作されたときのイベントやメッセージは,プログラマがしっかりと把握して処理を記述しなければなりません。

プログラムを本気で勉強したいならC++
 いろいろ挙げてきたように,Visual Basicのほうが,圧倒的に初心者にとっては扱いやすい開発環境といえるでしょう。ただし,質問にあるように「プログラムを勉強したい」,とくにWindowsのメッセージやコントロールを学びたいというのであれば,Visual Basicを使っている限り,たいして習得できないのではないかと筆者は考えます。
 さらにいえば,Visual Basicをマスターしてもそれ以外も使いこなせるようにはなりませんが,Visual C++ならば,Visual C++以外(Windows用の開発環境以外)でも,C++をベースにした開発環境ならば対応できるでしょう。また,最初はVisual Basicを勉強して,ある程度習得したらVisual C++に移るくらいならば,最初からVisual C++を勧めます。確かにいきなりC++はハードルが高いかもしれませんが,Visual Basicができるようになったからといって,Visual C++のハードルが低くなるかといえば,それはかなり疑問だからです(言語仕様そのものは,C++がVisual Basicに比べて極端に複雑であるとは思いません)。結局遠回りをして,しかも複数の言語による混乱をきたす可能性大です。Visual C++を使っていて,「あ〜,こんなのはVisual Basicなら一発なのに」という状況に陥り,やる気を阻害されてしまうことも考えられます。
 以上のことから,本気でプログラミングを勉強したいというのであれば,Visual C++をお勧めします(それなりの覚悟は要します)。とくに,将来ゲームプログラマになりたい,とかいうのであれば,Visual C++あるいはほかのC++の開発環境にすべきです(現在のゲーム開発環境は,ほとんどがCないしはC++言語です)。そうではなくて,何か手軽にWindowsのプログラムを作ってみたいというのであれば,Visual Basicがいいでしょう。
 以前はVisual Basicのほうが価格的にも手ごろだったのですが,Visual C++もStandard Editionの登場で,値段の格差はなくなっています。それぞれ三つの Editionが存在し,Visual BasicのLearning Editionはネイティブコンパイル機能がなく,Visual C++のStandard Editionは最適化が弱いなどの制限があります。Enterprise Editionは分散アプリケーション開発など,企業開発をターゲットとしていますので,個人ではProfessional Editionで十分です。また,Visual Studioは,Visual BasicやVisual C++,それにJavaの開発環境であるVisual J++などがパッケージングされ,Visual BasicとVisual C++を別々に買うよりも安価なので,いろいろやってみたいという人は,こちらがお買い得です。新しいバージョンが出たさいに,Learning EditionやStandard EditionからProfessional Editionへ,あるいはVisual Studioへのアップグレードも可能なので,とりあえずLearning Edition,Standard Editionでようすを見る,というのも手かもしれません。
(菊地 功)


写真4 マイクロソフトの「Visual Studio 6.0J Enterprise Edition」
(価格:オープンプライス 実売価格:21万円 問マイクロソフト TEL03-5454-2300)


表1 マイクロソフトの各パッケージの実売価格(5月16日調べ)
パッケージ名
実売価格(5/16)
Visual Basic 6.0 Enterprise Edition
16万3000円
Visual Basic 6.0 Professional Edition
8万3800円
Visual Basic 6.0 Leaning Edition
2万3800円
Visual C++ 6.0 Enterprise Edition
16万3000円
Visual C++ 6.0 Professional Edition
8万3800円
Visual C++ 6.0 Standard Edition
2万4000円
Visual Studio 6.0J Enterprise Edition
21万円
Visual Studio 6.0J Professional
15万3800円
   
Visual Basic 6.0 Enterprise Edition アカデミック版
2万1200円
Visual Basic 6.0 Professional Edition アカデミック版
1万3500円
Visual Basic 6.0 Learning Edition アカデミック版
9800円
Visual C++ 6.0 Enterprise Edition アカデミック版
2万1200円
Visual C++ 6.0 Professional Edition アカデミック版
1万3500円
Visual C++ 6.0 Standard Edition アカデミック版
9800円
Visual Studio 6.0J Enterprise Edition アカデミック版
3万7300円
Visual Studio 6.0J Professional アカデミック版
2万9800円
*定価はすべてオープンプライスです。