プログラミング
Show HN: Thoreau BASIC – BASICが時代遅れにならなかったら?
Show HN: Thoreau BASIC – What if BASIC hadn't gone out of fashion? (thoreaubasic.com)
要約
Thoreau BASICは、古いGW-BASICにインスパイアされた、現代的なx64環境(WindowsまたはUEFIベアメタル)で動作するBASICインタプリタです。一見すると昔ながらのBASICのように見えますが、内部にはネイティブx64 JITコンパイル、マルチスレッド、SSE2/AVX2アクセラレーション、64ビットアドレス指定、大規模配列、複素数、高解像度グラフィックス、TCP/IPネットワーク、デバッガなどの高度な機能が搭載されています。このプロジェクトは、「BASICが時代遅れにならなかったらどうなるか」という問いを探求しており、現代的なハードウェアとソフトウェアの機能と、昔ながらのBASICの構文や概念を組み合わせることを目指しています。
全文翻訳
Thoreau BASICはジョークとして始まりました。
私は、次のようなばかげたことを入力できるBASICを望んでいました。
<pre><code> DIM A%(12000000000)
</code></pre>
…そしてそれが実際に機能すること。それから私は物事を追加し続けました。その結果がThoreau BASICです。これは、Windowsプログラムとして、またオペレーティングシステムなしでベアメタルUEFI上で直接実行できる、GW-BASICにインスパイアされた無料のx64 BASICインタプリタです。
バージョン3.2は、私が最初に書こうとした小さなインタプリタよりもかなり野心的になりました。言語は依然として意図的に古いMicrosoft BASICのように見え、感じられます。行番号、GOTO、GOSUB、PRINT、PSET、LINE、CIRCLE、DRAWなどはすべてそこにあります。しかし、そのかなり無邪気な表面の下には、今やかなりの量の仕組みがあります。
現在の機能の一部:
<pre><code> ネイティブx64 JITコンパイル、インタプリタへの自動フォールバック付き
マルチスレッド数値ループのためのPARFOR
利用可能な場所でのSSE2 / AVX2アクセラレーション
64ビットアドレス指定と非常に大きな配列
ネイティブ複素数、四元数、その他の超複素数
任意の解像度の24ビットグラフィックス
スプライト、ビットマップ操作、ポリゴンフィル、マウス入力
WindowsおよびUEFIでのTCP/IPネットワーキング
統合されたプロファイラ、デバッガ、トレーシング、プログラム分析ツール
BASICプログラムをスタンドアロンWindows実行可能ファイルに変換するCREATEEXE
同じプログラムを直接起動可能なUEFIアプリケーションに変換するCREATEEFI
</code></pre>
サウンドシステムもかなり大きくなりました。Thoreau BASICは、最大32のライブインストゥルメントチャンネル、64のサウンドエフェクトチャンネル、256のボイスを処理でき、リアルタイムのパンと明るさ制御が可能です。NOTEとSOUNDKEYは、単なる昔ながらのBASICのビープ音よりも、演奏可能なシンセシスプリミティブとして使用できます。
3.2はまた、あまり華やかではありませんが驚くほど便利な環境の部分も拡張しています。GETFILESとSELECTBOXによるファイルブラウジングと選択の改善、大文字/小文字を区別するパスの延長、リカバリ/ファイルフラッシュ機能、そして実行環境とパフォーマンスの違いをデバッグする際に役立つ、かなり詳細なSYSTEMINFO$診断機能があります。
最近私が多くの時間を費やしていることの一つは、BASICプログラム自体が、インタプリタのデモンストレーションのように感じられないほど高速にすることです。例えば、現在のマンデルブロートデモは、リアルタイムのインタラクティブなフラクタルエクスプローラーです。マウスの移動でフラクタルがパンし、左クリックでズームイン、右クリックでズームアウトし、BASICプログラムはフレームレートを継続的に再描画して表示します。
3Dおよびプロシージャルデモ、スプライトプログラム、ネットワーキング例、超複素数フラクタル、ゲームもあります。
プロジェクト全体を通しての重要な設計上の制約は、WindowsとUEFIが実質的に同じBASIC言語を実行することでした。オペレーティングシステムが下になくても、プログラムは突然別の種になるべきではありません。
そしてはい、GOTO 100とAVX2、マルチスレッド、TCP/IP、四元数演算を組み合わせることの不条理さは十分に認識しています。それがますますポイントになっています。私は、「BASICが時代遅れにならなかったらどうなるか?」という問いに興味があります。Thoreau BASIC 3.2は私の現在の答えです。
特に、GW-BASIC/QBasic、コンパイラ/インタプリタの人々、そして現代のx64 PCをBASICインタプリタ/JITコンパイラに直接起動するという考えを楽しむのに十分不合理な人からのフィードバックに興味があります。