FreeBASIC
FreeBASICのロゴ | |
パラダイム | 手続き型 |
---|---|
登場時期 | 2004年 |
設計者 | V1ctor |
開発者 | The FreeBASIC Development Team |
最新リリース | 1.10.1 / 2023年12月25日[1] |
型付け | 静的 |
影響を受けた言語 | C言語、QBasic |
プラットフォーム | Microsoft Windows、Linux、DOS、FreeBSD |
ライセンス | GNU General Public License |
ウェブサイト | |
拡張子 | bas、bi |
FreeBASICは、フリーでオープンソース(GPL)の32ビットBASICコンパイラであり、Microsoft Windows、DOSのプロテクトモード(DOSエクステンダ)、Linux、Xbox 向けの実行ファイルを生成する。FreeBASIC はセルフホスティングコンパイラであり、コンパイラ本体は約12万行のソースコードで構成されている(ライブラリは含まない)。
GNU Binutils をバックエンドとして利用し、コンソール用実行ファイルとグラフィカル/GUI用実行ファイルを生成する。ライブラリは静的リンクと動的リンクの両方に対応している。FreeBASIC はCライブラリと一部のC++ライブラリを利用できる。これを利用すると、C言語だけでなく他の言語のライブラリを使ったり、作成したりすることも可能である。
構文
FreeBASIC はBASICの構文を可能な限り守っており、特に QuickBASIC に近い構文になっている。そして、同時に最新のコーディング技術も取り入れている。標準の手続き型としての機能に加えて、オブジェクト指向的なデータ型やオブジェクトの考え方を導入し、演算子や関数のオーバーロード、名前空間といった機能が追加されている。
FreeBASIC では、行末を改行コードかコロンで表す。このため、C言語のセミコロンのような特別な行末記号は必須ではない。改行するまでに複数行のコードを書く場合に、コロンで区切る。
コメントは行単位のものとブロック単位のものがあり、行単位のコメントはシングルクオート (') で開始され、ブロックコメントは /' で開始して、'/ で終了となり、途中に改行コードがあってもよい。
互換性
QuickBASIC の後継を意図しているため、構文の変更は最近のユーティリティを使うためや、最新のプログラミング機能の追加のためにのみ行われている。QuickBASIC互換を厳密に保ちたい場合や、GCC準拠にしたい場合には、-lang オプションを使う。
- -lang fb とすれば、FreeBASIC の最新機能が全て利用可能である。
- -lang deprecated とすれば、前のバージョンの FreeBASIC に互換な構文が使える。バージョンアップで以前との互換性がなくなっている場合があるため、直前のバージョンを最新バージョンに移植したい場合に使う。
- -lang qb とすれば、可能な限り QuickBASIC 互換の構文を使える。QuickBASIC との互換性を損なうような新機能は使えない。
Hello, World!
print "Hello, World!"
sleep
グラフィックス・ライブラリ
FreeBASIC には、QuickBASIC互換の組み込みの2次元グラフィックスライブラリがあり、基本的な描画(矩形、直線、円など)やBitBltが可能で、同時にQuickBASICには無かった機能も追加されている。ライブラリ自体はOSから独立しており、コードは可搬性がある。
グラフィックスライブラリは組み込みだが、FBgfx Screen コマンドを使って使用を宣言しないと使えない。OpenGL やプラットフォームのGUIに従ったウィンドウ生成はライブラリとして別にある。
今後の開発予定
FreeBASIC はGNUコンパイラコレクションのフロントエンドとなることを目標として開発が続いている[2]。それにより、C++などのオブジェクト指向プログラミング言語の持つ機能が利用可能となり、様々なシステム上で動作し、最新のコンパイラ最適化技法を活用できるようになる。
バージョン 0.17 でオブジェクト指向プログラミング機能が導入され、データ型と構造体が追加された。
脚注
- ^ 出典URL: https://github.com/freebasic/fbc/releases/tag/1.10.1, 閲覧日: 2024年1月19日, 題名: Release 1.10.1, 出版日: 2023年12月25日
- ^ “FreeBASIC Todo List on Sourceforge”. 2007年7月31日閲覧。