PowerBASIC(旧称Turbo BASIC )は、 PowerBASIC Inc. が開発した、BASICプログラミング言語の方言をコンパイルする商用コンパイラのブランド名でした。MS -DOS版とWindows版があり、Windows 版にはコンソール版と Windows 版の 2 種類がありました。MS-DOS 版の構文はQBasicやQuickBASICに似ていました。Windows 版は、多くの Windows 関数を含むように拡張された BASIC 構文を使用しており、ステートメントはWindows APIの呼び出しと組み合わせることができました。
このコンパイラは、当初BASIC/Zとして発表され、 CP/MおよびMDOS(Micropolis DOS)向けの最初の対話型コンパイラでした。BASIC/Zは、ロバート・「ボブ」・S・ゼール(1945年~2012年)によって設計・開発されました。後に、 MS-DOS互換のオペレーティングシステムにも対応するように拡張されました。
1987年、ボーランド社はBASIC/Zの全権利を取得し、Turbo Basic 1.0-1.1としてブランド名を変更した。これはQuickBASIC 3.0、GW-BASIC 3.2、BASICA 3.3と互換性があった。
1988年末から1989年初頭にかけて、BorlandはMicrosoft QuickBASIC 4.5-4.0の成功を受けて、Turbo BASICの今後の開発を断念することを決定しました。1989年、Bob ZaleはTurbo BASICのソースコードのすべての権利を買い戻し、PowerBASICと改名してPowerBASIC Inc.を設立し、さらなる開発とサポートを継続しました。1990年5月、PowerBASIC 2.0がSpectra Publishingから発売され、QuickBASIC 4.5と互換性のある多くの機能と追加の機能強化がサポートされました。PowerBASICはMicrosoftのものよりも実行ファイルのサイズが小さいため人気が高まり、PowerBASIC Incは1993年にリリース3.0を直接発売しました。このバージョンでは、ISAMとOS/2を除くPDS 7.1とVBDOS 1.0のほとんどの機能が追加され、多くの機能強化が加えられました。 DOS 版の最終リリースは 1997 年の PowerBASIC 3.5 でした。PowerBASIC の Windows 版が登場したことで、オリジナルの PowerBASIC for DOS は PB/DOS というレトロなブランド名で呼ばれるようになりました。[ 3 ] [ 4 ] [ 5 ]
[別名 PB/DOS] PowerBASIC 3.5 1997 ← PowerBASIC 3.0 1993 ← PowerBASIC 2.0 1990 ← Borland Turbo BASIC 1.1/1.0 1987 ← CP/M 用 BASIC/Z 1.11 1983
PowerBASICはその後、Windows向けのBASICコンパイラを開発し、まず主力製品であるPBWINを開発し、次に後述するPBCCを開発しました。
2012年11月6日、PowerBASICの生みの親であるロバート・ゼールが死去した。一時は、同社がすぐに事業を停止すると思われた。彼の妻であるヴィヴィアン・ゼールは、2014年3月8日にPowerBASICフォーラムに、同社は事業を継続すると投稿した。[ 6 ] 2015年5月10日、ヴィヴィアン・ゼールは、PowerBASICコンパイラの新バージョンの開発が継続されていると発表した。[ 7 ]
2016年11月2日、ヴィヴィアン・ゼールは同社の買い手を探す意向を発表した。
2017年1月31日、アダム・ドレイクは、ドレイク・ソフトウェアがPowerBASIC社からPowerBASICのソースコードを取得し、製品の機能を更新および改善する意向であることを発表した。[ 8 ]これは後にヴィヴィアン・ゼールがフォーラムへの投稿でメンバーのサポートに感謝することで確認された。[ 9 ]
ボブ・ゼールが亡くなった当時、PBWin11とPBCC7はベータテスト中で、64ビットコンパイラとPB/Pro(PBWinとCCを1つのコンパイラに統合したもの)はアルファ版の段階でした。しかし、PowerBASIC製品の開発は停止しました。2011年版v10.04以降(2026年5月時点で15年前)、新しいバージョンはリリースされていません。64ビット版やベータ版のリリースも発表されていません。開発活動も報告されていません。IDEの正しいDPI設定を追加するなどの修正もリリースされていません。PowerBASIC Tools LLCは、32ビットWindowsコンパイラの新規ライセンスの販売を終了しました。PowerBASICのWebサイトは2025年に閉鎖されました。
PowerBASICプログラムは自己完結型であり、実行時にランタイムファイルを使用しません。コンパイラのすべてのバージョンにおいて、アプリケーションは外部ライブラリなしでコンパイルされますが、必要に応じてライブラリを使用することもできます。PBDOSは16ビットのDOS MZ実行可能ファイルを作成し、PBWINとPBCCは32ビットのポータブル実行可能ファイル(PE)を作成します。
BorlandのTurbo BASICには、従来のBASICとの互換性を損なうことなく、描画APIやマウスアクセスなどの拡張機能が含まれています。
当時のほとんどのBASIC実装とは異なり、Turbo BasicはMS-DOS用のネイティブコードを生成する完全なコンパイラでした。他の実装はインタプリタであったり、ランタイムライブラリに大きく依存していたりしました。統合開発環境は、従来のBASICデバッグのためにBASICプログラムを内部で実行することも(下記のサンプルを参照)、Turbo Basic製品やランタイムライブラリがなくても他のシステムで実行できるMS-DOSスタンドアロン実行可能ファイルを生成することもできました。
以下のプログラムは、Turbo BasicがサポートしていたALGOLライクなBASIC方言の例です。行番号を使用し、制御構造が限られており、ALGOLライクなサブルーチンをサポートしていなかった従来のBASICとは異なり、この時期から始まった現代のBASIC方言は、行番号をオプションにし、構造化プログラミングに必要な制御構造とサブルーチン定義を追加することで、現代の構造化プログラミングスタイルと互換性を持つように拡張されました。
INPUT "あなたの名前は何ですか?: " 、n$ PRINT "こんにちは" ; n$ DO s$ = "" INPUT "星をいくつ印刷しますか" ; s FOR i = 1 TO s s$ = s$ + "*" NEXT i PRINT s$ DO INPUT "もっと星を印刷しますか" ; q$ LOOP WHILE LEN ( q$ ) = 0 q$ = LCASE$ ( LEFT$ ( q$ , 1 )) LOOP WHILE q$ = "y" PRINT "さようなら" ; n$(s$は文字列、は単精度浮動小数点s数です。これらは別々の変数です。)
この時代の他のボーランド製品と同様に、このコードも統合開発環境内で実行されます。
PB/DOS には統合開発環境が含まれており、MS-DOS 3.30 以降のすべてのバージョンをサポートしていました。PowerBASIC 3.5 1997 $149 for DOS は、レトロブランドの PB/DOS 3.5 として最終リリースされました。PowerBASIC 3.0 1993 $149 は、Microsoft がDOS 専用のPDS 7.1 とVBDOS 1.0 を終了した後、急速に人気を博しました。PowerBASIC 2.0 1990 $129 は、 Borland Turbo BASIC 1.1 1988-1987 1.0の後継として最初にリリースされました。Borland Turbo BASIC 1.1 1988-1987 1.0 自体は、Zilog Z80用の Bob Zale の BASIC/Z 1.11 1983 for CP/Mおよび MDOS ( Micropolis DOS)から進化しました。
PowerBASICの人気は、主に3つの要因から生まれた。
さらに、PowerBASICは効率的(編集・コンパイルが高速)、堅牢(安定していてバグが少ない)、そしてユーザーフレンドリーなIDE(DOS開発者にとって馴染みのあるメニューとエディタコマンド)であった。
PowerBASIC 3.5 は、PDS 7.1 1990 ( ISAMおよびOS/2を除く)、QuickBASIC 4.5 1988、QBasic 1.1 1993 ( WinMe 2000 まで変更なし (CD:\Tools\OldMSDOS))、GW-BASIC 3.23 1989、BASICA 3.40 1992、MBASIC 5.28 1983 、さらには VBDOS 1.0 1992 (QuickBASIC 言語、RAD、フォーム、コントロールなどを除く)と互換性のある豊富な機能セットを備えており、さらに多数の機能強化が追加されていました。
1997年末まで、PowerBASIC 3.5は、通常のDOS環境のみを必要とする最新のBASICコンパイラを提供していた。
新規顧客向けの定価は149ドルで、マイクロソフトのPDS 7.1やVBDOS 1.0の定価495ドルよりもはるかに安かった。ほとんどの顧客は割引価格で購入した。
PBCCは、 Windows XP、Windows Server 2008、Windows Vista、Windows 7を含む、 Windows 9xシリーズおよびWindows NTシリーズのオペレーティングシステム向けの32ビットコンパイラです。PBCCアプリケーションは、ダイナミックリンクライブラリ(DLL)を使用できます。このコンパイラには、エディタとステップ実行デバッガを含むIDEが付属しています。
このコンパイラを使用すれば、文字モードアプリケーションやグラフィカルアプリケーションを作成するのに、Windowsプログラミングの知識は一切必要ありません。PBCCでコンパイルされた実行ファイルは、共通ゲートウェイインターフェース(CGI )実行ファイル(Webサーバー用)としても使用できます。
PBCCは実行ファイルのみを作成し、DLLは作成しません。(PBWin(下記参照)は両方を作成できます。)
PBWin は、 Windows XP、Windows Server 2008、Windows Vista、Windows 7、Windows 8 ( 8.1 )、Windows 10、Windows 11 [ 11 ]を含むWindows 9xシリーズおよびWindows NTシリーズのオペレーティングシステムと互換性のある 32 ビット コンパイラです。PBWin はダイナミック リンク ライブラリを作成できます。PBWin アプリケーションはダイナミック リンク ライブラリを読み取ることができます。PBWin には、コンパイラ、エディタ付きIDE 、およびステップデバッガが付属しています。
アプリケーションのグラフィカルユーザーインターフェイスは、 Windows API を使用するか、組み込みの DDT 言語拡張機能を使用して作成できます。Windows API関数をラップする一連の BASIC ステートメントは、特にダイアログボックスや子コントロールの作成と処理において、まとめて動的ダイアログツール (DDT) と呼ばれます。DDT を使用すると、 Windows APIを使用して同様のプログラムを作成する場合よりもコーディング量が少なくて済みます。DDT と Windows API ( Microsoft Windows SDKのように SDK スタイルとして知られています) は、互いに排他的ではありません。
PowerBASICはPBWin v9.07とPB/CC v5.07をそれぞれ「Classic PBWin」と「Classic PB/CC」に改名し、2016年11月1日にPBForms v1.0(PowerBASIC Forms)とともに、オンラインストアを通じて短期間、無料かつ通知なしの試用版として提供した。[ 12 ]
PowerBASIC Formsは、別売のPBWin用グラフィカルユーザーインターフェース設計ツールアドオンです。DDT言語拡張機能を使用してソースコードを自動的に生成し、Windowsのグラフィカルユーザーインターフェースを用いたフォームを作成します。
PBWin に付属する PowerBASIC COM ブラウザーは、タイプ ライブラリ ファイルで記述された COM オブジェクトのインターフェイス、メソッド、プロパティを公開するアプリケーションです。PowerBASIC COM ブラウザーは、PowerBASIC コードでの早期バインディングのために COM オブジェクトのインターフェイス構造をエクスポートし、COM オブジェクトによって公開されるインターフェイス メンバーの構文リファレンスとコンテキスト ヘルプを提供します。[ 13 ]
PowerBASIC はネイティブコードの BASIC コンパイラで、他の言語と比較して使いやすさと速度が優れていると報告されています。[ 14 ] [ 15 ] コンパイルされたコードはほとんどの用途で十分な速度ですが、コンパイラは重要なルーチンの手動最適化に使用できるインラインアセンブラもサポートしています。Windows コンパイラ (PBWin および PBCC) は、 FPU、SIMD、MMXを含むほぼすべてのx86 命令セットをサポートしており、主な例外は主にシステム プログラマに役立ついくつかの命令です。サポートされていない命令は、オペコードを"db"、"dw"、"dd" ステートメントで挿入することで挿入できます。アセンブラ コードの行は、BASIC コードの行と自由に混在させることができますが、2 種類のコード間の潜在的な相互作用を常に考慮する必要があります。
「Hello World」は、プログラミング言語で使用される構文の非常に小さな例を示すために用いられ、多くの場合、特定のプログラミング言語における最小のプログラムとなる。
以下は、PBCC のハローワールドプログラムの例です。デフォルトでは、PBCC は実行時に出力を表示するためのコンソールウィンドウを作成します。この例では、Waitkey$ を使用することで、オペレーターが表示されたテキストを確認するまでコンソールウィンドウが自動的に閉じないようにしています。
関数PBMain「こんにちは、世界!」と表示します。待機キー$関数終了こちらはPBWin版で、Windowsの「ダイアログ」メッセージボックスを表示します。
関数PBMainMsgBox "こんにちは、世界!"関数終了これらの構造化された制御文は、GOTO文やラベルの使用を必要とする多くの場面を排除します。
PBWinとPBCCはCOMクラスの形式でオブジェクト指向プログラミングをサポートしていますが、コンパイラはオブジェクト指向プログラミングの使用を強制するものではなく、あくまでオプションです。これらのコンパイラを使用して、プロセス内およびプロセス外のCOMサーバーを構築することもできます。
コンソールコンパイラとWindowsコンパイラの両方でグラフィックウィンドウを作成できます。GRAPHICsステートメントは、WindowsのGraphics Device Interface(GDI)ライブラリ関数よりも高レベルです。[ 16 ] [ 17 ]
グラフィック ウィンドウは専用のダイアログで、それぞれにダイアログのクライアント領域を埋める単一のコントロールが含まれています。グラフィック コントロールは子ウィンドウであり、グラフィック ウィンドウと同じグラフィック描画機能をサポートします。グラフィック ビットマップも定義されており、これもグラフィック描画機能をサポートしますが、Windows ビットマップやDIB セクションのように、純粋にメモリ オブジェクトとして扱われます。キーボードとマウスの操作に関するステートメントは、グラフィック ステートメントに含まれています。グラフィック ターゲットへの文字出力には、FONT NEW ステートメントで指定されたフォントが使用されます。
グラフィックウィンドウは、描画操作を実行できる静的コントロールを含むWindowsダイアログボックスに相当します。単一のBASICステートメントでグラフィックウィンドウを作成し、そのサイズ、位置、タイトルを指定できます。グラフィックウィンドウにWNDPROCを指定する必要はありません。完全なグラフィックウィンドウアプリケーションの短いソースコード例を以下に示します。
# PBCC6 または PBWIN10 コンパイラを使用してExeをコンパイルします# Dim AllFunction PBMain Local GW As Dword ' グラフィック ウィンドウを開始Graphic Window New "graphic window" , 100 , 100 , 200 , 200 to GW ' 色の付いた円盤を表示Graphic Ellipse ( 10 , 10 ) - ( 190 , 190 ), % rgb_Red , % rgb_SeaGreen , 0 ' キー入力を待機Graphic Waitkey$ End FunctionPB GRAPHIC ステートメントを使用すると、まずグラフィック (ウィンドウ、ビットマップ、またはコントロール) が現在のグラフィック ターゲットとして選択され、その後、再度識別することなく操作を実行できます。これに対し、GDI API では、描画操作ごとにデバイス コンテキストハンドルが必要になります。
PB GRAPHIC ステートメントを使用する場合、ブラシやペンを個別のエンティティとして定義する必要はありません。また、 WM_PAINT や WM_ERASEBKGND などのWindows メッセージに応答して、GRAPHIC ターゲット (表示されている場合) を再描画する必要もありません。GRAPHIC ターゲットは永続的です。
GRAPHIC ターゲットがアタッチされている場合、REDRAW オプションを指定すると、描画操作の結果が明示的に要求されるまでバッファリングされます。この手法を使用すると、GDI API を使用する際にメモリDCに描画する手法[ 18 ]と同様に、ちらつきが軽減されます。
ピクセル操作は、GDI API の GetPixel/SetPixel と同様の方法で、GRAPHIC GET|SET PIXEL ステートメントを使用して実行できます。GRAPHIC GET BITS を使用すると、ビットマップ全体を動的文字列に読み込むことができます。この文字列は、文字列として操作することも、配列をマッピングして操作することもできます。GRAPHIC SET BITS を使用すると、これを GRAPHIC ターゲットに戻すことができます。
GRAPHIC ステートメントには、一般的に使用されるすべての GDI API 関数が含まれていますが、含まれていない関数が必要な場合は、任意の GRAPHIC ターゲットのhDCを取得し、それに対して GDI API 関数を使用することが可能です。
PowerBASIC は、ユーザーが質問したり知識を共有したりするためのオンライン フォーラムを提供しています。[ 19 ] 2012 年 7 月 8 日時点で、このフォーラムには 5,623 人のメンバーがおり (そのうちのごく一部のみが現在も活動中)、1998 年 8 月 26 日以降、408,642 件の投稿を含む 50,093 件のスレッドがありました。ソース コード セクションだけでも 3,768 件のスレッドがありました。[ 20 ]
2024年初頭、PowerBASICのメインウェブサイトは「工事中」に切り替わりました。これはPBフォーラムで盛んに議論されました。IP権利所有者[ 21 ]が文書化したように、ウェブサイトは復活しませんが、フォーラムは引き続きアクティブになります。2025年秋、フォーラムのサブドメインはアクセスできなくなりました。
ベンダーがスポンサーとなっているフォーラムが利用できなくなったため、PowerBASIC の主要貢献者からなる委員会が選出され、コミュニティが資金提供し管理する新しいフォーラムを設立することになりました。[ 22 ] 2025 年 9 月、PowerBASIC ユーザー コミュニティのメンバーは、元のフォーラムへのアクセスが失われた後も PowerBASIC ユーザー間の議論と知識共有の継続性を維持するために、独立したディスカッション フォーラムとして pbusers.org を設立しました。このサイトはコミュニティ メンバーによって運営され、クラウド ファンディングで資金提供されており、元の PowerBASIC ピア サポート コミュニティのガイドラインをモデルにしています。[ 23 ]このフォーラムは、新しいディスカッションをホストするだけでなく、gbThreads アーカイブに基づく過去の PowerBASIC フォーラム スレッドの検索可能なデータベースへのアクセスも提供しています。このデータベースにより、ユーザーは過去のディスカッションのテキスト ベースの投稿を検索して参照することができます。[ 24 ]
{{cite web}}:欠落または空欄|url=(ヘルプ){{cite web}}: CS1 maint: bot: 元の URL の状態が不明です (リンク)