Microsoft Quick
BASICは、かつて
マイクロソフトが開発・提供していた
プログラミング言語、およびその
統合開発環境(IDE)です。特に
MS-DOS環境向けに広く普及し、その後のMicrosoft
Visual Basicへと繋がる重要な位置を占めました。
MS-DOS版のIDEは、当時のテキストベースの環境としては非常に高機能で、文字を用いてGUIのような視覚的な操作感を提供していた点が大きな特徴です。Macintosh版もリリースされました。
歴史
Quick
BASICは1985年に
IBM PC向けにその第一歩を踏み出しました。1986年のバージョン2.0で、本格的な
統合開発環境が導入され、開発効率が飛躍的に向上します。バージョン3.0では
コプロセッサやより柔軟なループ構文である`do-loop`文に対応しました。バージョン4.0では、
ソースコード入力時のリアルタイムな文法チェック機能や、プログラム実行中に処理を一時停止させるブレークポイント機能などが追加され、デバッグ機能が強化されました。
1988年には
Macintosh II向けのQuick
BASICが登場します。日本国内では、同年にバージョン4.2が
PC-9800シリーズや
AXシリーズ向けに発売され、日本IBMや
富士通からも各社プラットフォーム向けに提供されました。
Quick
BASIC単体製品としての最終リリースは、1988年(日本では1989年)のバージョン4.5です。しかし、OS/2アプリケーション開発が可能な上位製品「Microsoft
BASIC Professional Development System」には、「Quick
BASIC Extended Version」(QBX)という互換性の高い開発環境が含まれており、これは1990年10月(日本では1991年6月)のバージョン7.1まで継続して提供されました。
Quick
BASICの後継としては、1992年(日本では1993年)に
イベント駆動型プログラミングを容易にした「Microsoft
Visual Basic Programming System for
MS-DOS」が登場しました。Quick
BASICの
ソースコードはこのVB for DOSへ比較的容易に移行できましたが、これが
MS-DOS版
Visual Basicの最初で最後のリリースとなり、その
言語仕様はWindows版
Visual Basicとは互換性がありませんでした。
開発環境
Quick
BASICのIDEは、当時の技術水準において非常に先進的な機能を持っていました。
コンパイラ・インタプリタ
プログラムの実行形式を生成する
コンパイラと、コードを逐次実行する
インタプリタの機能を提供しました。コンパイラは、実行ファイルサイズが小さい「ランタイム版」と、より高速に動作する「独立版」のバイナリを生成できました。インタプリタ実行時には、強力なデバッガ機能を利用できました。また、複数のソースファイルを個別にコンパイルし、それらをリンクして一つのプログラムを作成する分割コンパイルや、プロジェクト管理にも対応していました。
エディタ
ソースコードを記述するためのエディタは、入力中に構文エラーを検出し、開発者に知らせる機能を搭載していました。テキストの範囲指定、コピー、ペースト、検索、置換、インデント調整など、現代の多くのエディタに通じる豊富な編集機能がありました。また、サブルーチンや関数の単位でコードを表示・編集することが可能でした。日本のPC-9801版では、標準的なテキスト形式に加え、N88-
BASICのバイナリ形式でのファイル読み込み・保存にも対応していました。
オンラインヘルプ
コード編集作業を中断することなく、必要な情報を参照できるオンラインヘルプ機能が利用できました。
デバッガ
プログラムのバグを発見・修正するためのデバッガは、以下の主要な機能を提供しました。
ブレークポイント: プログラム実行を指定した行で一時停止させる機能。
ステップ実行: プログラムを1行ずつ実行する機能。
ウォッチ: プログラムの実行中に変数や式の現在の値を監視・確認する機能。
Quick
BASICは、それまでのMicrosoft
BASIC(例えばGW-
BASIC)と比較して、
構造化プログラミングをサポートするための機能が大幅に拡張されました。
データ型
基本的な数値型(
整数型、単精度・倍精度浮動小数点数型)、
文字列型に加え、
多次元配列や、複数の異なるデータ型をまとめて扱える
構造体が導入されました。
変数
変数のスコープとして、プログラム全体で有効な
グローバル変数と、特定のサブルーチンや関数内でのみ有効な
ローカル変数を区別できるようになりました。また、値が保持される期間によって、静的な
スタティック変数と、ブロックに入るたびに初期化される(
C言語のauto変数に相当する)変数を扱うことができました。
制御構造
プログラムの流れを制御するための構文が強化されました。
ループ: `for ... next`, `while ... wend`, `do ... loop` といった繰り返し処理のための構文を提供しました。特に`do ... loop`は、条件をループの開始前または終了後に指定できるなど、柔軟な記述が可能でした。
*
分岐: 条件に応じて処理を切り替える構文として、1行で記述できる`if 条件 then ... else ...` 形式や、複数行にわたって条件分岐を詳細に記述できる`if 条件 then ... else ... end if` 形式がありました。また、
C言語のswitch文に似た`select case`構文も利用でき、
整数だけでなく
文字列なども条件に指定でき、値の範囲を指定することも可能でした。
関数・サブルーチン
処理のまとまりを再利用可能な単位として記述するための
サブルーチンや、値を返す
関数を定義できました。サブルーチンや関数から抜け出すための`Exit Sub`や`Exit Function`といったステートメント(
C言語のreturnに相当)が用意されていました。また、自身を呼び出す
再帰呼び出しもサポートしていました。
割り込み処理
特定のイベント発生時に、実行中の処理を中断してあらかじめ指定した処理(割り込みハンドラ)を実行する機能がありました。割り込みを発生させられるタイミングとしては、エラー発生時、キーが押された時、タイマー満了時、音楽演奏バッファの状況変化時などがありました。割り込み処理が完了した後、`resume`ステートメントを用いて中断された元の処理に復帰することも可能でした。
Quick
BASICは、その後のGUIベースのプログラミング環境である
Visual Basicへの橋渡し役となり、多くのプログラマーにとって
BASIC言語による本格的な開発を可能にした画期的な製品でした。