QB64

QB64
QB64のロゴ
開発者ロブ・ガレオン、QB64Team
初登場2007年9月8日 (2007年9月8日
安定版リリース
2.1 / 2022年9月9日 ( 2022-09-09 )
OSMicrosoft WindowsLinuxmacOS
ライセンスマサチューセッツ工科大学
Webサイトqb64.com
影響を受けた
クイックベーシックQBASIC

QB64(旧称QB32[ 1 ]は、Microsoft WindowsLinuxMac OS X用のセルフホスティングBASICコンパイラであり、Microsoft QBasicおよびQuickBASICとの互換性を持つように設計されています。QB64はC++へのトランスパイラであり、C++コンパイラと統合されており、C++コードによるコンパイルとGCCの最適化を提供します。[ 2 ]

QB64はQBasicのほとんどのステートメントを実装しており、MicrosoftのQBasic GorillasNibblesゲームを含む多くの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の実際のコーディングは今年の初めに始まり、それ以来着実に進歩を遂げてきました。私は以前にもプログラミング言語を書いた経験があったので、これから待ち受ける課題を事前に理解していました。

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 ) ONDO 'ウィンドウが閉じられるまで無限ループに入ります_LIMIT 1 'タイマーがメインプログラムフローから独立していることを示すために、メインループを1秒あたり1サイクルで実行しますLOOPタイマー.トラップ: PRINT "1s; " ; RETURNSUB mySub PRINT "500ms; " ; END SUB

QBASICの拡張

QB64 の拡張コマンドは、QuickBASIC プログラム内で使用される名前との競合を避けるため、アンダースコアで始まります。バージョン 1.4 以降では、メタコマンド$NOPREFIXを使用してアンダースコア プレフィックスを削除できます。[ 8 ] QB64 は、QuickBASIC 言語をいくつかの方法で拡張します。、、およびなどの新しいデータ型と、符号なしデータ型が追加されました。新しいデータ型には、従来の BASIC データ型と同様にサフィックスが付きます。QB64には、MP3、Ogg Vorbis、WAV ファイルなどの一般的なオーディオ形式のほとんどを再生できるオーディオライブラリQuickBASIC提供れる640×480 よりも高解像度のグラフィックスを使用できるようにするライブラリ、[ 9 ]さまざまなフォントを使用し、BMPPNGJPEG形式でイメージをプロットできるライブラリも含まれています。また、当初提供されていた256色(または16色、状況によって異なる)という制限に対し、32ビットカラーの使用が可能になりました。QB64は自動的にライブラリをインクルードするため、プログラマーはライブラリを指定する必要がありません。QuickBASICと同様に、$INCLUDEコマンドを使用して独自のライブラリをインクルードすることできます_BIT_BYTE_INTEGER64_FLOAT

追加されたもう一つの重要な機能はネットワーク機能です。当初は、 Input#/Print#命令を用いて読み書き可能なTCP/IPストリームを開くことができました。このモードは独自のパケットカプセル化形式を採用しており、QBasicで簡単に使用できる一方で、他のQB64プログラムや、アプリケーション専用に作成されたカスタムインターフェースを持つサーバーバックエンドとの通信にしか使用できませんでした。後のバージョンでは、ストリームから生のバイトを読み書きするためのGET#PUT#が追加されました。これにより、smtpやhttpなどの標準プロトコルのネイティブ実装が可能になります。

QB64の利点

  • さまざまなファイル形式をサポートし、クリップボードへのアクセスも提供します。
  • QB64 を使用すると、32 ビット グラフィック ファイル (最も一般的な形式) にすぐにアクセスできます。
  • QB64 を使用すると、さまざまなオーディオ形式に即座にアクセスできます。
  • ほとんどの最新オペレーティング システムでサポートされているため、エミュレーションは必要ありません。

図書館

QB64 はグラフィックスとテキストに FreeGLUTを統合しています。

GitHubでホストされているリポジトリの開発ブランチは、頻繁に修正や改善が行われており、最終的には次の安定版リリースとなります。開発ビルドは、ユーザーがベータテストできるように公式ウェブサイトでも提供されています。

QB64は、Windows用のDLLライブラリや、DECLARE LIBRARYブロックを使用したC++ヘッダーも使用できます。ユーザーはCヘッダーファイルにアクセスしてC関数を実行することもできます。

フォーク

2022年のコミュニティの激変により、QB64プロジェクトには現在少なくとも2つのフォークが存在します。[ 10 ]「QB64チーム」のGitHubリポジトリはアクティブではなくなり、すべての新しい開発は新しいフォークで行われています。

  • QB64 チームは2022 年 4 月まで正式なバージョンでした。
  • QB64 公式以前の開発者と新しい開発者が混在して開発をフォークし、再開しました。
  • QB64 Phoenix (メインサイト) ( Github ) 「Phoenix」フォークは、2022 年の再編後にプロジェクトを復活させるために作成されました。

参考文献

  1. ^ Stephane Richard (2007年11月16日). 「In The News」 . PCOPY! 第50号. Basic Programming. 2009年12月21日時点のオリジナルよりアーカイブ2008年8月17日閲覧。
  2. ^ EKVirtanen (2008年5月26日). 「Galleon氏へのインタビュー」 . PCOPY! 第70号. Basic Programming. 2008年8月21日時点のオリジナルよりアーカイブ2008年7月14日閲覧。
  3. ^ 「QB64スクリーンショット - QB64/QBASIC Gorillas in QB64」 2013年5月12日時点のオリジナルよりアーカイブ。 2010年7月27日閲覧
  4. ^ 「v2.0の変更ログ – QB64.org」 www.qb64.org . 2021年10月10日時点のオリジナルよりアーカイブ
  5. ^ 「もっとバグをお願いします! (本気で)」 2008年3月3日。
  6. ^ 「QB64フォーラムへようこそ!」 THE QBASIC FORUM . 2007年9月30日. 2020年1月28日閲覧
  7. ^ Rogoz, Ivan (2022-04-07). 「過去からの衝撃 - QBasic 4.5」 . Barn Lab . 2023-09-26閲覧。QB64にはInFormと呼ばれるWYSIWYG IDEエディタが付属しており、Windows向けの自動化のための手軽な言語として、より日常的に使いやすくなっています。
  8. ^ 「v1.4の変更ログ – QB64.org」 www.qb64.org . 2020年2月13日時点のオリジナルよりアーカイブ
  9. ^ 「QB Advisor: 画面モード 11、12、および 13」。Microsoft Corporation。1988年。2009年1月5日時点のオリジナルよりアーカイブ。 2008年7月25日閲覧
  10. ^ Proven, Liam (2023年3月28日). 「VBへのノスタルジック? BASICは死んだわけではない」 . The Register . 2023年10月1日閲覧。QB64も同様ですが、開発者間の分裂による混乱はまだ完全には収まっていません。QB64 Phoenixと呼ばれるコミュニティが、新しいPhoenix Editionの開発を積極的に進めています。