Microsoftは、8088アセンブリ言語で記述されたGW-BASIC 1.0インタプリタのオリジナルソースをGitHubで公開した。Beginner's All-Purpose Symbolic Instruction Code(BASIC)の一種であるこのプログラミング言語は1983年にリリースされ、IBM PC互換機用のMS-DOS オペレーティングシステムにバンドルされていた。MS-DOCの再オープンソース化に続いてMicrosoftは、リクエストの多かったGA-BASICをMITライセンス下でリリースしたのだ。
新たなオープンソースリリースの理由と、それに伴う制限について、同社は次のように説明している。
これらのソースは、リポジトリのreadmeにも明記されているように、1983年2月10日版の8080アセンブリ言語ソースであり、歴史的な参照および教育の目的でオープンソースとして公開されるものです。従って、ソースを変更するPRについては、いかなる形でも受け入れません。
GW-BASICはMicrosoft BASICにヒントを得たBASICインタプリタである。Microsoft BASICバージョン5はCP/Mシステムと28KB以上のランダムアクセスメモリ(RAM)、最低1台のディスケットドライブが実行時に必要で、外部デバイスとのインタラクションはほとんど提供されていなかった。例えば、出力デバイス(グラフィックスやカラー、音声、ネットワークなど)や入力デバイス(ジョイスティックやマウスなど)を通じて可能な、さまざまな機能にアクセスする能力は持っていなかったのだ。それでもMicrosoft Basicは、(当時としては)BASICの強力な実装という評価を受けていた。
GW-BASICは自己完結型の実行ファイルとして提供され、IBM PC上のMS-DOSオペレーティングシステムにバンドルされたもので、Microsoft Basicに対して機能面で進化を見せていた。ジョイスティックとのインターフェースが含まれており、COMシリアルポートを通じた双方向通信が可能で、音楽を演奏することができたのだ。その一方で、批判の的であるGOTO文が含まれている、ローカル変数がサポートされていない、など、構造化プログラミングのサポートは十分ではなかった。
実際、A.M. Turing賞の受賞者であるEdsger W. Dijkstra氏が、有名な論文(A Case against the GO TO Statement)を著して、GOTO文に関する問題点を論じたのは、まだ10年ほど前のことだったのだ。GOTO文への批判が一般的なものになり、whileループのような構造化された制御構造に置き換わる上で、同書は大きな一歩であったと評価されている。ちなみに、Dijkstra氏の著書"Structured Programming"は、プログラム設計を理解し、構造化プログラミングを使用する上で極めて有用な書籍である。
GW-BASICプログラムの実行速度は比較的遅いが、その大きな理由はインタプリタ言語であることだ。MicrosoftはBASCO BASICコンパイラを提供して、速度の改善を実現した。その結果、GW-BASICは、単純なゲームやビジネスプログラムの実行用となった。MS-DOSにバンドルされていたため、すべての世代のプログラマが、BASICを通じてプログラミングを学ぶことができたのだ。
GW-BASICのこの位置は、最終的にはQuickBASICコンパイラのインタプリタ部分を分離して実行可能にしたQBasicに取って代わられた。
一部の開発者からは、ノスタルジアを持って迎え入れられている。Luis Alonso Ramos氏は次のようにコメントした。
すばらしい!!1991~1992年、プログラミングを学んでいた9歳か10歳の頃を思い出しました。
10PRINT “Hi!"
20 GOTO 100
100 END最も印象的なのは、GWMAIN.ASMの著作権に関する記載です。
COPYRIGHT 1975 BY BILL GATES AND PAUL ALLEN
"Microsoft"とは書いてありません!
実際に、ソースコードの中には次のようなコメントもあります。
BILL GATES WROTE A LOT OF STUFF.
PAUL ALLEN WROTE A LOT OF OTHER STUFF AND FAST CODE.
MONTE DAVIDOFF WROTE THE MATH PACKAGE (F4I.MAC).
Paul Pacheco氏は、次のように感嘆している。
GW-BASICでコードを学んでいたのは32年前です。その頃のことを思い出しました。
リリースされたソースにはビルドスクリプトも、makefileも、実行可能なバイナリを生成するためのツールも含まれず、ビルド済のバイナリや実行可能ファイルも用意されていない。
次はVB-6(Visual Basic)のオープンソースを求める声が再び高まりそうだ(最初は2011年、Visual Basic 20周年の時)。