
PureBasicは、BASICをベースにした商用配布の 手続き型コンピュータプログラミング言語および統合開発環境であり、Fantaisie SoftwareによってWindows、Linux、macOS、Raspberry Pi向けに開発されました。Amiga版も利用可能ですが、現在は開発が中止されており、一部はオープンソースとして公開されています。Windows版PureBasicの最初の公開リリースは2000年12月17日でした。それ以来、継続的にアップデートされています。
PureBasicには「生涯ライセンスモデル」があります。ウェブサイトに記載されているように、最初のPureBasicユーザー(1998年に登録)は、現在も新しいアップデートを無料で利用でき、この状況は今後も変わりません。[1]
PureBasicは、 IA-32、x86-64、arm32 、 arm64、PowerPC、または680x0命令 セットに直接コンパイルし、標準システムライブラリ以外のランタイムライブラリを必要としない、小さなスタンドアロン実行ファイルとDLLを生成します。プラットフォーム固有のアプリケーションプログラミングインターフェース(API)を使用せずに開発されたプログラムは、同じソースファイルから、ほとんど、あるいは全く変更を加えることなく簡単にビルドできます。
PureBasicはインラインアセンブリをサポートしており、開発者はPureBasicソースコード内にFASMアセンブラコマンドを組み込むことができます。また、PureBasicソースコード内で宣言された変数を使用することで、経験豊富なプログラマーは速度が重要なコード部分の速度を向上させることができます。PureBasicはOGRE 3D環境をサポートし、統合されています。Irrlichtエンジンなどの他の3D環境は非公式にサポートされています。
バージョン6.00(2022年6月)以降、PureBasicはASMを使用したコンパイルに加えて、Cバックエンドを使用したコンパイルも提供しています。これにより、新しいプラットフォーム(例:Raspberry)へのアクセスが可能になり、将来的に新しいライブラリの追加が容易になります。
PureBasicは、ネイティブクロスプラットフォームの32ビットおよび64ビットBASICコンパイラです。現在サポートされているシステムはWindows、Linux、macOSです。AmigaOS版はレガシー版でオープンソースです。コンパイラはネイティブ実行ファイルを生成し、構文はシンプルで分かりやすく、括弧のないC言語に匹敵します。ネイティブUnicode文字列処理と豊富な組み込みサポート関数ライブラリを備えています。[2]コンソールアプリケーション、 [3] GUIアプリケーション、[4] DLLファイル[5]をコンパイルできます。
次の 1 行の PureBasic コードにより、テキスト「Hello World」を含むメッセージ ボックスを表示するスタンドアロンの x86 実行可能ファイル (Windows バージョンでは 4.5 KiB (4,608 バイト)) が作成されます。
MessageRequester ( 「メッセージボックス」、「Hello World」)
また、同じコードの次のバリアントでは、宣言やその他の外部参照を必要としないインラインWindows API呼び出しが使用され、Windows 用のさらに小さい 2.0 KiB (2,048 バイト) のスタンドアロン x86 実行可能ファイルが作成されます。
MessageBox_ ( 0 , "Hello World" , "メッセージボックス" , 0 )
以下は、Hello World の例のコンソール バージョンです。
OpenConsole () ; コンソールウィンドウを開きます。Print ( "Hello, World!" ) Delay ( 5000 ) ; 5秒間停止します。
PureBasicは「第二世代BASIC」言語であり、構造化された条件文とループ、そして手続き型プログラミングをサポートしています。ユーザーは手続きを使用する必要がないため、プログラマーはGoto、Gosub、Label、Returnなどのコーディングスタイルを選択できます。
以下は配列をソートするためのサンプル手順ですが、SortArray は現在 PureBasic の組み込み関数になっています。
手順bubbleSort (配列a ( 1 ))
保護されたi 、itemCount 、hasChanged
アイテム数=配列サイズ( a ())
繰り返す
hasChanged = # False
アイテム数- 1
i = 0の場合、 itemCountへ
a ( i ) > a ( i + 1 )の場合
a ( i )、a ( i + 1 )を交換する
hasChanged = #真
終了条件
次
hasChanged = # False になるまで
終了手順
以下は、 2 つのメニュー項目を持つ大きなテキスト エディターを表示するサンプル プログラムです。
;ウィンドウの作成:
OpenWindow ( 0 、# PB_Ignore 、# PB_Ignore 、800 、600 、"シンプルテキストエディター" 、# PB_Window_SystemMenu | # PB_Window_MinimizeGadget | # PB_Window_MaximizeGadget | # PB_Window_SizeGadget )
;2つのメニューを追加します:
CreateMenu ( 0 , WindowID ( 0 )) MenuItem ( 1 , "&OK" ) MenuItem ( 2 , "&Cancel" )
;エディターを追加: EditorGadget ( 0,0,0,0,0,0 ) SetGadgetFont ( 0 , LoadFont ( 0 , " Courier New " , 10 ) )
;閉じられるまでウィンドウのメッセージを処理します:
繰り返し
選択WaitWindowEvent ()ケース# PB_Event_Menu選択EventMenu ()ケース1 : MessageRequester ( 「OKが直接クリックされるか、'&' ニーモニックでクリックされます。」、GetGadgetText ( 0 ))ケース2 : Break EndSelectケース# PB_Event_SizeWindow : ResizeGadget ( 0、0、0 、WindowWidth ( 0 、# PB_Window_InnerCoordinate )、WindowHeight ( 0 、# PB_Window_InnerCoordinate ) )ケース# PB_Event_CloseWindow : Break EndSelect ForEver
PureBasic は文字列内の二重引用符をエスケープしないため、これらをChr(34)で連結する必要があります。
PureBasicの開発者であるフレッドは、PureBasicがオブジェクト指向になることは決してないと述べています。[6]しかし、多くのユーザーがオブジェクト指向のサポートシステムを作成しています。[7] [8] [9]
変数のデータ型は、初めて使用するときに(そしてオプションで将来的にも)指定され、ポイント名とは区切られます。基本型には、.f、.d(浮動小数点数と倍精度実数)、. b、.c、.w、.l、.q(整数 - 1バイトと8バイト)、. s(文字列)があります。
基本的なタイプに加えて、ユーザーは以下の方法で建設のタイプを定義することができます。
構造体type_name
field_name.type ; 単一フィールド。構造体の添付など。
field_name[count].type ; 静的配列。
; ...
;オプションの構造 StructureUnion .. EndStructureUnion を使用すると、
; 複数のフィールドを1つのメモリ領域に結合する
; 変換タイプで必要になる場合があります。
構造ユニオン
タイプ名.タイプ
; ...
エンドストラクチャーユニオン
エンドストラクチャー
変数は、単一変数(実際には標準変数)、動的配列( を使用して宣言)、リンクリスト()、連想配列(言語の新しいバージョン)()
のいずれかになります。Dim var_name.type_name (size1, size2, ... )List() var_name.type_nameMap var_name.type_name()
PureBasicには、アプリケーション用のフォーム作成を支援する独自のフォームデザイナーが搭載されていますが、サードパーティ製のソリューションも利用可能です。 [10] [11]元々統合されていなかったビジュアルデザイナーは、2013年2月14日に新しい統合フォームデザイナーに置き換えられました。[12]
PureBasicは、ユーザーが質問したり知識を共有したりするためのオンラインフォーラムを提供しています。2025年2月17日現在、英語フォーラムには6,484人のメンバーがおり、2002年5月17日以降、578,646件の投稿を含む70,174のスレッドがありました。[13]
多数のコード共有サイトでは、PureBasicがツール[14]やゲームを迅速かつ簡単に作成し、[15]大量のオープンソースコードを共有するために使用されていることが示されています。[16]