もしBASICが廃れずに進化し続けたら?現代のx64とUEFIで蘇る『Thoreau BASIC』
Show HN: Thoreau BASIC – What if BASIC hadn't gone out of fashion?
Thoreau BASICは、元々は冗談から始まったプロジェクトでした。例えば、こんなとんでもないコードを書いても実際に動くBASICが欲しかったのです:
```
DIM A%(12000000000)
```
そこから機能を追加し続けた結果、GW-BASICにインスパイアされたx64環境向けBASICインタプリタ『Thoreau BASIC』が誕生しました。Windowsプログラムとして動作するだけでなく、OSを介さずベアメタルのUEFI上で直接実行することも可能です。
バージョン3.2は、当初の想定をはるかに超える野心的なプロジェクトへと成長しました。言語仕様はあえて往年のMicrosoft BASICの雰囲気(行番号、GOTO、GOSUB、PRINT、PSET、LINE、CIRCLE、DRAWなど)を保ちつつ、その裏側には強力なエンジンが搭載されています。
現在の主な機能:
```
ネイティブx64 JITコンパイル(インタプリタへの自動フォールバック機能付き)
マルチスレッド数値計算用PARFOR
SSE2 / AVX2の高速化対応
64bitアドレッシングと巨大配列のサポート
複素数、四元数などの超複素数をネイティブサポート
任意の解像度を持つ24bitグラフィックス
スプライト、ビットマップ操作、ポリゴン塗りつぶし、マウス入力
Windows/UEFI上でのTCP/IPネットワーク対応
統合プロファイラ、デバッガ、トレース、プログラム解析ツール
BASICプログラムを単体Windows実行ファイル化するCREATEEXE
プログラムを直接起動可能なUEFIアプリケーション化するCREATEEFI
```
サウンドシステムも大幅に強化されました。Thoreau BASICは現在、最大32の楽器チャンネル、64のサウンドエフェクトチャンネル、256の音声を扱え、リアルタイムのパンや明度制御が可能です。NOTEやSOUNDKEYは、もはや昔ながらのビープ音ではなく、演奏可能なシンセサイザーのプリミティブとして機能します。
3.2では、地味ですが非常に実用的な機能も拡充されました。GETFILESやSELECTBOXによるファイルブラウジング、大文字小文字を区別するロングパス名、リカバリ/ファイルフラッシュ機能、そして詳細なSYSTEMINFO$診断などが追加されています。これはCPUの能力や実行環境をデバッグする際に非常に役立ちます。
最近は、BASICプログラム自体が「インタプリタのデモ」であることを忘れさせるほど高速に動作するように注力しています。例えば、現在のMandelbrotデモはリアルタイムのインタラクティブなフラクタル探索ツールになっており、マウス操作でパンやズームを行いながら、プログラムが継続的にフレームレートを表示します。
その他、3Dデモ、プロシージャル生成、スプライト制御、ネットワーク例、超複素数フラクタルやゲームなども同梱しています。設計上の重要な制約として、WindowsとUEFIの両方で全く同じBASIC言語が動作するようにしています。OSの有無によってプログラムが別物になってしまうようなことはありません。
GOTO 100という古いスタイルに、AVX2やマルチスレッド、TCP/IP、四元数演算を組み合わせるという矛盾。それこそがこのプロジェクトの真骨頂です。「もしBASICが廃れずに進化していたら?」という問いに対する、現時点での私の答えがThoreau BASIC 3.2です。
GW-BASICやQBasicの思い出がある方、コンパイラやインタプリタの開発者、そして「現代のx64 PCを直接BASICでブートさせる」というクレイジーなアイデアを楽しめる方からのフィードバックを心待ちにしています。