| 開発者 | ロブ・ガレオン、QB64Team |
|---|---|
| 初登場 | 2007年9月8日 |
| 安定版リリース | 2.0.2 / 2021年11月7日 |
| OS | Microsoft Windows、Linux、macOS |
| ライセンス | マサチューセッツ工科大学 |
| Webサイト | ホームページ |
| 影響を受けた | |
| クイックベーシック、QBASIC | |
QB64(旧称QB32)[1]は、Microsoft Windows、Linux、Mac OS X用のセルフホスティング BASICコンパイラで、Microsoft QBasicおよびQuickBASICと互換性があるように設計されています。QB64はC++へのトランスパイラであり、C++コンパイラと統合され、C++コードとGCC最適化によるコンパイルを提供します。[2]
QB64 はほとんどの QBasic ステートメントを実装しており、Microsoft の QBasic GorillasやNibblesゲームを含む多くの QBasic プログラムを実行できます。[3]さらに、QB64 は QBASIC IDE に似た IDE を含むように設計されています。QB64 は QBASIC プログラミング言語を拡張して64 ビットデータ型を追加し、サウンドとグラフィックスのサポートも向上しています。また、 INT 33h マウス アクセスや複数のタイマーなどの DOS/x86 固有の機能もエミュレートできます。
バージョン2.0以降、QB64は新しい$DEBUGメタコマンドによるデバッグ機能を提供するようになりました。[4]
歴史
QB64は元々QuickBASIC 4.5でコンパイルされていました。開発が進んだ後、開発者のRob GalleonはQuickBASICのメモリ制限に悩まされ、Microsoft Basic PDS 7.1に切り替えました。これにより、これらの問題は短期間で解決されました。[5]バージョン0.63以降、QB64はコンパイルが可能になり、従来のメモリ制限は適用されなくなりました。
QB64の推進力について、ガレオンは次のように述べている。[6]
VISTAの導入によってQBASIC が機能不全に陥り、エミュレータでしか実行できない古い言語になってしまい、コンピュータの最新機能を利用する機会がほとんどなくなることが明らかになったとき、私は QB64 の必要性を感じ始めました。QB64 の実際のコーディングは今年の初めに始まり、それ以来 QB64 は着実に進歩してきました。私は以前にプログラミング言語を書いた経験があったので、これから待ち受ける課題を事前に知っていました。
2016年から、Visual Basicに似た機能を備えたグラフィカルユーザーインターフェイスビルダーとイベント駆動型 統合開発環境「InForm」の開発が開始されました。[7]
構文
QB64 の構文は、QuickBASIC と完全に下位互換性があるように設計されています。 行番号は不要で、ステートメントは改行で終了するか、コロン( )で区切られます:。
「Hello, World!」プログラムの例は次のとおりです。
「Hello, World!」を印刷します。
互換性のために QB64 が VGA メモリをエミュレートする例:
CLS
S$ = "Hello, World!" DEF SEG = & HB800 'セグメントをビデオメモリに設定しますFOR I = 1 TO LEN ( S$ ) POKE 160 + ( I - 1 ) * 2 , ASC ( MID$ ( S$ , I , 1 )) '文字NEXT DEF SEG 'セグメントをデフォルトにリセットします
QB64 がオーディオ ファイルを許可する方法の例:
sound_effect& = _SNDOPEN ( "sound.wav" ) 'WAV、OGG、または MP3 _SNDPLAY sound_effect&
QB64 で画像ファイルを許可する方法の例:
SCREEN _NEWIMAGE ( 800 , 600 , 32 ) '32ビットのスクリーンを作成しますimagename& = _LOADIMAGE ( "image__name.png" ) 'BMP、JPG、PNGなど_PUTIMAGE ( 0 , 0 ), imagename& _FREEIMAGE imagename& '割り当てられたメモリを解放します
QB64 が複数のタイマーを使用する例:
t1 = _FREETIMER t2 = _FREETIMER ON TIMER ( t1 , 1 ) GOSUB Timer . Trap 'Timer.Trapラベルに続くコードは1秒ごとに実行されます
ON TIMER ( t2 , .5 ) mySub 'QB64はTIMERでSUBプロシージャをトリガーすることもできます。' この場合、mySUBは500ミリ秒ごとにトリガーされます。
'タイマーをアクティブにする:
TIMER ( t1 ) ON TIMER ( t2 ) ON
DO 'ウィンドウが閉じられるまで無限ループに入ります_LIMIT 1 'タイマーがメインプログラムフローから独立していることを示すために、メインループを1秒あたり1サイクルで実行しますLOOP
タイマー.トラップ:
PRINT "1s; " ; RETURN
SUB mySub PRINT "500ms; " ; END SUB
QBASIC の拡張
QB64 の拡張コマンドは、QuickBASIC プログラム内で使用される可能性のある名前との競合を避けるため、アンダースコアで始まります。バージョン 1.4 以降では、メタコマンド$NOPREFIX を使用してアンダースコア プレフィックスを削除できます。[8]
QB64 は、QuickBASIC 言語をいくつかの方法で拡張します。、、およびなどの新しいデータ型と、符号なしデータ型が追加されます。新しいデータ型には、従来の BASIC データ型と同様にサフィックスが付きます。QB64には、MP3、Ogg Vorbis、WAV ファイルなどの一般的なオーディオ形式のほとんどを再生できるオーディオライブラリや、QuickBASICで提供される640×480 よりも高解像度のグラフィックスを使用できるようにするライブラリ、[9]さまざまなフォントを使用し、 BMP、PNG、JPEG形式で画像をプロットできるライブラリも含まれています。また、元々提供されていた 256 色 (または 16 色、状況によって異なります) の制限とは対照的に、32 ビット カラーの使用も可能になりました。また、QB64 では自動的に指定されるため、プログラマーはどのプログラミング ライブラリを含めるかを指定する必要がありません。プログラマーは、QuickBASICと同様に、$INCLUDEコマンドを使用して独自のライブラリを含めることもできます。
_BIT_BYTE_INTEGER64_FLOAT
追加されたもう 1 つの重要な機能は、ネットワークです。当初、これにより、Input#/Print#命令を使用して読み取りおよび書き込み可能な TCP/IP ストリームを開くことができました。このモードには独自のパケット カプセル化形式があり、QBasic で簡単に使用できますが、アプリケーション専用に作成されたカスタム インターフェイスを持つ他の QB64 プログラムまたはサーバー バックエンドと通信するためにのみ使用できます。後のバージョンでは、ストリームから生のバイトを読み書きするためのGET#とPUT#が追加されました。これにより、smtp や http などの標準プロトコルのネイティブ実装が可能になります。
QB64の利点
- さまざまなファイル形式をサポートし、クリップボードへのアクセスも提供します。
- QB64 を使用すると、32 ビット グラフィック ファイル (最も一般的な形式) に即座にアクセスできます。
- QB64 を使用すると、複数のオーディオ形式に即座にアクセスできます。
- ほとんどの最新オペレーティング システムでサポートされているため、エミュレーションは必要ありません。
図書館
QB64 はグラフィックスとテキストに FreeGLUT を統合しています。
GitHubでホストされているリポジトリの開発ブランチは、頻繁に修正や改善が行われ、最終的には次の安定リリースになります。開発ビルドは、ユーザーがベータ テストできるように公式 Web サイトでも提供されています。
QB64 は、DECLARE LIBRARY ブロックを使用して、Windows 用の DLL ライブラリや C++ ヘッダーも使用できます。ユーザーは C ヘッダー ファイルにアクセスして C 関数を実行することもできます。
フォーク
2022年のコミュニティの激変により、QB64プロジェクトには現在少なくとも2つのフォークがあります。[10]「QB64チーム」のGithubリポジトリはアクティブではなくなり、すべての新しい開発は新しいフォークで行われています。
- QB64 チームは 2022 年 4 月まで正式なバージョンでした。
- QB64 公式 以前の開発者と新しい開発者が混在して開発をフォークし、再開しました。
- QB64 Phoenix (メインサイト) (Github) 「Phoenix」フォークは、2022 年の大改革後にプロジェクトを復活させるために作成されました。
参考文献
- ^ Stephane Richard (2007-11-16). 「In The News」. PCOPY! Issue #50 . Basic Programming. 2009-12-21時点のオリジナルよりアーカイブ。2008-08-17 に取得。
- ^ EKVirtanen (2008-05-26). 「Galleon とのインタビュー」. PCOPY! 第 70 号. 基本プログラミング. 2008-08-21 時点のオリジナルからアーカイブ。2008-07-14に取得。
- ^ 「QB64 スクリーンショット - QB64/QBASIC Gorillas in QB64」。2013 年 5 月 12 日時点のオリジナルよりアーカイブ。2010 年 7 月 27 日閲覧。
- ^ 「Changelog for v2.0 – QB64.org」。www.qb64.org。2021年10月10日時点のオリジナルよりアーカイブ。
- ^ 「もっとバグをお願いします! (本気で)」 2008年3月3日。
- ^ 「QB64フォーラムへようこそ!」。THE QBASIC FORUM。2007年9月30日。 2020年1月28日閲覧。
- ^ Rogoz, Ivan (2022-04-07). 「過去からの衝撃 - QBasic 4.5」. Barn Lab . 2023-09-26取得。QB64
には InForm と呼ばれる WYSIWYG IDE エディターが付属しており、Windows の自動化のための手軽な言語として日常的に使用しやすくなります。
- ^ 「Changelog for v1.4 – QB64.org」。www.qb64.org。2020年2月13日時点のオリジナルよりアーカイブ。
- ^ 「QB Advisor: 画面モード 11、12、および 13」。Microsoft Corporation。1988 年。2009 年 1 月 5 日時点のオリジナルよりアーカイブ。2008年 7 月 25 日閲覧。
- ^ Proven, Liam (2023-03-28). 「VB が懐かしい? BASIC は死んでもいない」The Register . 2023-10-01取得。
QB64 も同様ですが、開発者間の分裂をめぐる騒動はまだ完全には収まっていません。 QB64 Phoenix と呼ばれるコミュニティが新しい Phoenix Edition を積極的に開発しています。
外部リンク
- 公式サイト
- QB64 (フェニックス) ウェブサイト
- QB64 (フェニックス) コミュニティ フォーラム
- QB64 (フェニックス) 言語 Wiki
- QB64 YouTubeチャンネルのYouTubeチャンネル
- QB64 (公式) GitHubリポジトリ
- GitHubの QB64 (Phoenix) リポジトリ
