0x0b
basic
最終更新:
0x0b
-
view
主な特徴
歴史的な経緯からFORTRAN、C言語と比較されることが多い。
対話型の編集・実行環境がある(コマンドライン型のコンパイラ以外)。
古い処理系ではすべての行頭に行番号を必要とし、分岐をGOTOに依存する。行番号は、BASIC処理系が主にラインエディタ機能を有しており、編集するプログラムの行を指定するのにもちいられた。現在でも互換性のために両者を残している処理系もある。
初心者に優しい字句の方針を持つ。
予約語の大文字と小文字を区別しない。大文字を基本とする処理系が多く、強制的に大文字に変換される処理系もあった。
算術演算子以外の記号は極力使わない。論理演算子はAND、OR、XOR、NOTである。括弧は演算の優先順位も、関数の引数も、配列もすべて「()」のみを用いる。ブロックも「{}」のような括弧ではなく「FOR文からNEXT文までの間」といった構文により指定する。
等価演算子に数学と同じ表記の「=」が使える。代入構文(LET文およびその省略形)で用いられた場合に代入演算子と解釈される。C言語では代入演算子と区別するため等価演算子に「==」が使われるため、誤って「=」とされるミスが発生するが、BASICではそのような問題は起こらない。
プログラムは命令と関数からなる。これらの名は予約語とされ、変数名に用いることはできない。
変数は基本的に実数型と文字列型である。中でも文字列操作は柔軟にできるようになっている。文字列型は変数名の末尾に「$」をつけて区別することが多い。
処理系によっては実数型に単精度・倍精度・整数を区別できたり、文字列との区別をしないバリアント型を持つものもある。
実数型同士に明示的型変換(キャスト)を必要としない。
明示的な変数宣言を必要とせず、使用し始めたところで宣言したものと解釈される。
変数は自動的に初期化される(実数型は0、文字列型は空文字列)。
定数や構造体をサポートしていないことが多い。
命令文は改行で区切る。
一行に複数命令を詰め込めるよう「マルチステートメント」という独自の区切り記号(:)を実装した処理系も多い。
字下げは必須ではない(書き方としては推奨される)。
実行は基本的に行頭から行われる(MAINを持つ処理系もある)。
高級言語である(ただし、低水準の操作を拡張されたものも多い)。
ポインタはない(変数のアドレスを参照できる処理系もある)。
他の言語で書かれたプログラムとのリンクやBIOS、APIの呼び出しには複雑な手続きが必要か、またはできない。
その他にも初心者への配慮が見られる。
恒等式と混乱されがちな代入文を、LET文を用いることで「LET A=2」(Let A equal 2:「Aを2と同じにしなさい」)と読め、意味がつかみやすくなる。LETは省略可能であり、初心者の理解のためにのみ存在する命令である。
画面出力のPRINT文は既定で改行され、改行せずに続けたいときには「;」をつける。これは多くの言語に見られる改行文字(CR LF)による改行に比べ処理系の実装に手間がかかるが、人間には優しい。
歴史的な経緯からFORTRAN、C言語と比較されることが多い。
対話型の編集・実行環境がある(コマンドライン型のコンパイラ以外)。
古い処理系ではすべての行頭に行番号を必要とし、分岐をGOTOに依存する。行番号は、BASIC処理系が主にラインエディタ機能を有しており、編集するプログラムの行を指定するのにもちいられた。現在でも互換性のために両者を残している処理系もある。
初心者に優しい字句の方針を持つ。
予約語の大文字と小文字を区別しない。大文字を基本とする処理系が多く、強制的に大文字に変換される処理系もあった。
算術演算子以外の記号は極力使わない。論理演算子はAND、OR、XOR、NOTである。括弧は演算の優先順位も、関数の引数も、配列もすべて「()」のみを用いる。ブロックも「{}」のような括弧ではなく「FOR文からNEXT文までの間」といった構文により指定する。
等価演算子に数学と同じ表記の「=」が使える。代入構文(LET文およびその省略形)で用いられた場合に代入演算子と解釈される。C言語では代入演算子と区別するため等価演算子に「==」が使われるため、誤って「=」とされるミスが発生するが、BASICではそのような問題は起こらない。
プログラムは命令と関数からなる。これらの名は予約語とされ、変数名に用いることはできない。
変数は基本的に実数型と文字列型である。中でも文字列操作は柔軟にできるようになっている。文字列型は変数名の末尾に「$」をつけて区別することが多い。
処理系によっては実数型に単精度・倍精度・整数を区別できたり、文字列との区別をしないバリアント型を持つものもある。
実数型同士に明示的型変換(キャスト)を必要としない。
明示的な変数宣言を必要とせず、使用し始めたところで宣言したものと解釈される。
変数は自動的に初期化される(実数型は0、文字列型は空文字列)。
定数や構造体をサポートしていないことが多い。
命令文は改行で区切る。
一行に複数命令を詰め込めるよう「マルチステートメント」という独自の区切り記号(:)を実装した処理系も多い。
字下げは必須ではない(書き方としては推奨される)。
実行は基本的に行頭から行われる(MAINを持つ処理系もある)。
高級言語である(ただし、低水準の操作を拡張されたものも多い)。
ポインタはない(変数のアドレスを参照できる処理系もある)。
他の言語で書かれたプログラムとのリンクやBIOS、APIの呼び出しには複雑な手続きが必要か、またはできない。
その他にも初心者への配慮が見られる。
恒等式と混乱されがちな代入文を、LET文を用いることで「LET A=2」(Let A equal 2:「Aを2と同じにしなさい」)と読め、意味がつかみやすくなる。LETは省略可能であり、初心者の理解のためにのみ存在する命令である。
画面出力のPRINT文は既定で改行され、改行せずに続けたいときには「;」をつける。これは多くの言語に見られる改行文字(CR LF)による改行に比べ処理系の実装に手間がかかるが、人間には優しい。
主な予約語と構文
後述の方言のため、処理系によっては存在しないか名前が違うものもある。
命令
IF 〜 THEN 〜 ELSE - 条件分岐
ELSEに対応しない処理系もある
FOR 〜 NEXT - ループ構文
END - プログラム終了
READ 〜 DATA - データを変数に代入
読むDATAの位置を指定するにはRESTORE命令を使う
DIM - 配列変数の宣言
REM - コメント行
LET - 変数代入(省略可能な処理系が多い)
MAT - 行列処理
PRINT - 文字列表示
LPRINT - プリンタ印字
PRINT ~ USING - 書式付き文字列表示
これらの出力は自動的に改行される。それを避ける場合は末尾に「;」(改行なし)や「,」(タブ区切り)を付ける。
INPUT - 対話型入力
POKE - メモリ領域の直接操作
関数
CHR$ - アスキーコードから文字に変換
VAL - 文字列を数値に変換
MID$ - 文字列操作関数
RND - ランダム関数
INPUT$ - 1文字入力
PEEK - メモリ領域の直接参照
演算子
後述の方言のため、処理系によっては存在しないか名前が違うものもある。
命令
IF 〜 THEN 〜 ELSE - 条件分岐
ELSEに対応しない処理系もある
FOR 〜 NEXT - ループ構文
END - プログラム終了
READ 〜 DATA - データを変数に代入
読むDATAの位置を指定するにはRESTORE命令を使う
DIM - 配列変数の宣言
REM - コメント行
LET - 変数代入(省略可能な処理系が多い)
MAT - 行列処理
PRINT - 文字列表示
LPRINT - プリンタ印字
PRINT ~ USING - 書式付き文字列表示
これらの出力は自動的に改行される。それを避ける場合は末尾に「;」(改行なし)や「,」(タブ区切り)を付ける。
INPUT - 対話型入力
POKE - メモリ領域の直接操作
関数
CHR$ - アスキーコードから文字に変換
VAL - 文字列を数値に変換
MID$ - 文字列操作関数
RND - ランダム関数
INPUT$ - 1文字入力
PEEK - メモリ領域の直接参照
演算子
- - 加算
- - 減算
- 乗算
/ - 除算(実数)
¥ - 除算(整数)※一部の処理系のみ
MOD - 剰余 ※Full BASICではMOD$関数を使用
^ - べき乗
OR - 論理和
AND - 論理積
XOR - 排他的論理和
¥ - 除算(整数)※一部の処理系のみ
MOD - 剰余 ※Full BASICではMOD$関数を使用
^ - べき乗
OR - 論理和
AND - 論理積
XOR - 排他的論理和
, < - 大小比較
= - 等号・または(LETでの)変数代入
<> - 不等号
=> , >= - 以上
<= , =< - 以下
非構造的な構文
主に旧世代のパソコンのBASICで実装されていた。処理系によっては、互換性のために残している。
GOSUB (GO SUB) 〜 RETURN - サブルーチン分岐、復帰
GOTO(GO TO) - 強制分岐
ON 〜 GOSUB - 条件つきサブルーチン分岐
ON 〜 GOTO - 条件つき強制分岐
実行制御・編集支援命令
主に旧世代のパソコンのBASICで実装されていた。
AUTO - 行番号自動入力支援
RENUM - 行番号の一括付け直し
RUN - プログラム実行
NEW - プログラム全消去
TRON - Trace On (実行中の行番号を表示する)
TROFF - Trace Off (TRON解除)
LOAD - ディスクからプログラムファイルの読み込み
CLOAD - テープからプログラムファイルの読み込み
SAVE - ディスクへプログラムファイルを保存
CSAVE - テープへプログラムファイルを保存
FILES - ディスクファイルの一覧
<> - 不等号
=> , >= - 以上
<= , =< - 以下
非構造的な構文
主に旧世代のパソコンのBASICで実装されていた。処理系によっては、互換性のために残している。
GOSUB (GO SUB) 〜 RETURN - サブルーチン分岐、復帰
GOTO(GO TO) - 強制分岐
ON 〜 GOSUB - 条件つきサブルーチン分岐
ON 〜 GOTO - 条件つき強制分岐
実行制御・編集支援命令
主に旧世代のパソコンのBASICで実装されていた。
AUTO - 行番号自動入力支援
RENUM - 行番号の一括付け直し
RUN - プログラム実行
NEW - プログラム全消去
TRON - Trace On (実行中の行番号を表示する)
TROFF - Trace Off (TRON解除)
LOAD - ディスクからプログラムファイルの読み込み
CLOAD - テープからプログラムファイルの読み込み
SAVE - ディスクへプログラムファイルを保存
CSAVE - テープへプログラムファイルを保存
FILES - ディスクファイルの一覧
互換性とBASIC
BASICは、FORTRANやCOBOLと同様、ANSI、ISO、JIS (JIS X2002) などで言語仕様が規格化された。この規格BASICは後年、「Minimal BASIC」と呼ばれた。当時のコンピュータの能力を考慮して、規定された文法などの事項はごく最小限だったが、1970年代から1980年代にかけてのパソコンの発展はめざましく、Minimal BASIC規格が陳腐化するのも早かった。実際に規格にそった言語仕様を持った実装系は汎用コンピュータ用のオマケ程度のものは存在したが、パソコン用としてはほとんどなかった。
各メーカーのパソコンに標準搭載されたBASICは、機種ごとに画面操作やI/O直接操作などの独自拡張が行われた。マイクロソフト製(MS-BASIC、BASICA、G-BASIC、GW-BASICの移植版)のみならず、F-BASIC、S-BASIC、Hu-BASICなど各社が独自にBASICを開発し、いわゆる「方言」が生まれた。この結果、たとえBASICのメーカーが同じでも「あるパソコンで作ったBASICプログラムは、他のパソコンではそのままでは動かすことができない」ことの方がずっと多かった。
もっとも当時は群雄割拠の時代でもあり、特に市販ソフトが満足に出なくなったパソコンにおいては、BASICは重要な役割を果たした。
方言の例
カーソル位置を指定するLOCATE文は、別の処理系ではCURSOR文
音楽を演奏するPLAY文、MUSIC文とそれらに記述されるMML
画面モードを指定するCONSOLE文
スプライト機能を使用する命令
VRAMと配列変数の内容をやりとりする命令
条件付きループを実現するWHILE~WEND
GOTO, GOSUB文の飛び先を指定するラベル
CALL, CMD, SETなどで始まる命令文
メイン・メモリの制限による処理系の実装例
初期のTiny BASICはともかくとしても、BASIC実装処理系のメイン・メモリの制限により言語仕様が極めて制限された実装が存在した。
実数型の実装は整数型・演算のみ
変数名は頭文字1文字または2文字程度しか認識しない
文字列の長さが限られる(255文字など)
配列の大きさ(添字の最大値)が限られる
中間コードサイズを小さくしたり処理を速くする主なテクニック
プログラミングに際しても、処理プログラムの大きさや速度の制限を回避するためにソースの読みやすさを犠牲にするようなテクニックが横行した。
行頭ですべての実数型変数を整数型として宣言する(DEFINT A-Z)
命令を省略形で書く(PRINT→?、LET A=B→A=B、REM→' など)
ただし、中間コードを採用している処理系では、PRINTも?も1バイトの同じ中間コードになるので、結果は変わらない。また、REMを'と書くのはかえってサイズが増える。
余白やコメントを入れない
NEXTの変数名を省略する(可能な処理系のみ)
一行に複数の文を詰め込んで(マルチステートメント)を使用して行の制限一杯に命令文を詰め込む
よく使う変数は早めに確保する。(実行時に毎回変数領域の先頭から検索されるため。)
よく呼び出すサブルーチンは先頭に配置する
(同じような理由。なお、一度通過したGOTO/GOSUB命令のオペランドを内部で行番号からメモリアドレスに書き換える処理系ではあまり効果がない。)
機械語で書いたサブルーチンをメモリの一部に配置して、プログラム中で呼び出す
CPUやメモリのウェイトを外す(I/Oポートを操作してCRTコントローラへのDMAを止める(その間画面は消える)など。BASIC言語というよりはハードウェアのテクニック。)
パソコン用BASICとコンパイラ
BASIC用コンパイラが存在しない処理系の方が多かったが、次のものが存在した。
BASCOM (マイクロソフト BASIC-80 CP/M用インタプリタ)
MS-DOS用N88-BASICコンパイラ (日本電気 PC-9800シリーズ)
F-BASIC386コンパイラ (富士通 FM-TOWNS)
MSXべーしっ君 (アスキー MSX)
実行ファイルは生成しない
X-BASICコンバーター (シャープ X68000)
C言語に変換した上でのコンパイル
しかし、パソコンに内蔵または標準添付されていたインタプリタと違い、コンパイラは別売であったり、高価であったり、実行にはランタイムを必要であったりする場合があった。このことから、BASICインタプリタによる開発に習熟したユーザーは、より高速で柔軟なプログラムを求めて、機械語(アセンブリ言語)や、C言語などに移行していった。
BASICは、FORTRANやCOBOLと同様、ANSI、ISO、JIS (JIS X2002) などで言語仕様が規格化された。この規格BASICは後年、「Minimal BASIC」と呼ばれた。当時のコンピュータの能力を考慮して、規定された文法などの事項はごく最小限だったが、1970年代から1980年代にかけてのパソコンの発展はめざましく、Minimal BASIC規格が陳腐化するのも早かった。実際に規格にそった言語仕様を持った実装系は汎用コンピュータ用のオマケ程度のものは存在したが、パソコン用としてはほとんどなかった。
各メーカーのパソコンに標準搭載されたBASICは、機種ごとに画面操作やI/O直接操作などの独自拡張が行われた。マイクロソフト製(MS-BASIC、BASICA、G-BASIC、GW-BASICの移植版)のみならず、F-BASIC、S-BASIC、Hu-BASICなど各社が独自にBASICを開発し、いわゆる「方言」が生まれた。この結果、たとえBASICのメーカーが同じでも「あるパソコンで作ったBASICプログラムは、他のパソコンではそのままでは動かすことができない」ことの方がずっと多かった。
もっとも当時は群雄割拠の時代でもあり、特に市販ソフトが満足に出なくなったパソコンにおいては、BASICは重要な役割を果たした。
方言の例
カーソル位置を指定するLOCATE文は、別の処理系ではCURSOR文
音楽を演奏するPLAY文、MUSIC文とそれらに記述されるMML
画面モードを指定するCONSOLE文
スプライト機能を使用する命令
VRAMと配列変数の内容をやりとりする命令
条件付きループを実現するWHILE~WEND
GOTO, GOSUB文の飛び先を指定するラベル
CALL, CMD, SETなどで始まる命令文
メイン・メモリの制限による処理系の実装例
初期のTiny BASICはともかくとしても、BASIC実装処理系のメイン・メモリの制限により言語仕様が極めて制限された実装が存在した。
実数型の実装は整数型・演算のみ
変数名は頭文字1文字または2文字程度しか認識しない
文字列の長さが限られる(255文字など)
配列の大きさ(添字の最大値)が限られる
中間コードサイズを小さくしたり処理を速くする主なテクニック
プログラミングに際しても、処理プログラムの大きさや速度の制限を回避するためにソースの読みやすさを犠牲にするようなテクニックが横行した。
行頭ですべての実数型変数を整数型として宣言する(DEFINT A-Z)
命令を省略形で書く(PRINT→?、LET A=B→A=B、REM→' など)
ただし、中間コードを採用している処理系では、PRINTも?も1バイトの同じ中間コードになるので、結果は変わらない。また、REMを'と書くのはかえってサイズが増える。
余白やコメントを入れない
NEXTの変数名を省略する(可能な処理系のみ)
一行に複数の文を詰め込んで(マルチステートメント)を使用して行の制限一杯に命令文を詰め込む
よく使う変数は早めに確保する。(実行時に毎回変数領域の先頭から検索されるため。)
よく呼び出すサブルーチンは先頭に配置する
(同じような理由。なお、一度通過したGOTO/GOSUB命令のオペランドを内部で行番号からメモリアドレスに書き換える処理系ではあまり効果がない。)
機械語で書いたサブルーチンをメモリの一部に配置して、プログラム中で呼び出す
CPUやメモリのウェイトを外す(I/Oポートを操作してCRTコントローラへのDMAを止める(その間画面は消える)など。BASIC言語というよりはハードウェアのテクニック。)
パソコン用BASICとコンパイラ
BASIC用コンパイラが存在しない処理系の方が多かったが、次のものが存在した。
BASCOM (マイクロソフト BASIC-80 CP/M用インタプリタ)
MS-DOS用N88-BASICコンパイラ (日本電気 PC-9800シリーズ)
F-BASIC386コンパイラ (富士通 FM-TOWNS)
MSXべーしっ君 (アスキー MSX)
実行ファイルは生成しない
X-BASICコンバーター (シャープ X68000)
C言語に変換した上でのコンパイル
しかし、パソコンに内蔵または標準添付されていたインタプリタと違い、コンパイラは別売であったり、高価であったり、実行にはランタイムを必要であったりする場合があった。このことから、BASICインタプリタによる開発に習熟したユーザーは、より高速で柔軟なプログラムを求めて、機械語(アセンブリ言語)や、C言語などに移行していった。
構造化とBASIC
パソコンの普及により急速に広まったBASICだったが、Pascal、C言語の流行による構造化プログラミングの波が押し寄せると、行番号を残し、マルチステートメントやGOTO文などを多用するパソコンのBASICは、構造化を支持する識者からは酷評されるようになった。
オブジェクト指向とBASIC
現在、BASICもオブジェクト指向化が見受けられる。その代表例がVisual Basic.NETやREALbasicやActiveBasic等で、三者とも既に完全なオブジェクト指向言語になっていると言える。
主なBASIC
現在のパソコンのBASIC
マイクロソフト・マイクロソフト文法互換系
Visual Basic - Microsoft
Visual Basic for Applications(VBA)
Visual Basic.NET
Small Basic - Microsoft
ActiveBasic (Windows用フリーウェア 国産)
REALbasic (Windows・MacOS・Linux)
Jabaco (english)
BASIC/98 (Windows用 国産 N88-BASIC互換) - 有限会社電脳組
XBLite
独自系
FutureBASIC (MacOS 構文はQuickBASIC互換)
BCX (GPLv2 + BCX例外ランセンスのオープンソースソフトウェア BASIC → C言語トランスレータでインラインC/C++およびアセンブリを扱えるなどの特徴を持つ)
UBASIC (DOS用フリーウェア 多倍長演算に特化)
DarkBASIC (ゲーム製作に特化したBASIC言語、Windows専用、特に3Dゲーム)
Full BASIC系(規格準拠)
(仮称)十進BASIC (JIS Full BASICに準拠、Windows・Linux・MacOS用フリーウェア、英語名 Decimal BASIC)
True BASIC (Full BASIC規格の原型、MS-DOS・Windows・MacOS・UNIX、現在は英語版のみ)
Ultra BASIC - 株式会社ラネクシー
旧式構文系
Chipmunk Basic(Windows・MacOS・UNIX用フリーウェア、インタプリタのみ)
ゲーム機などのBASIC
ファミリーベーシック(NS-HuBASIC)(ファミコン、任天堂・シャープ・ハドソン共同開発)
PCエンジンでべろBASIC(PCエンジン用開発ツール、徳間書店インターメディアが販売、ハドソン・日本電気ホームエレクトロニクス開発)
GAME BASIC for SEGASATURN (セガサターン、MSX-BASICライク)
BASIC STUDIO (プレイステーション2、アートディンク開発)
プチコン (ニンテンドーDSi/DSiLL・ニンテンドー3DS、JOEDOWN・スマイルブーム・ロケットスタジオ共同開発)
過去のパソコンなどのBASIC
独自系
Apple 6K BASIC (アップルコンピュータ Apple II 別名 Integer BASIC)
G-BASIC (トミーぴゅう太用BASIC、日本語の命令。同機には別売のBASIC 1もあり) ※同機とは関係ない、マイクロソフト製の同名のBASICがある
MW-BASIC (BASIC-09 OS-9用)
BASIC-G (ソードのM5のBASIC、整数型しか使えないが高速だった。同機には実数用のBASIC-Fもあり)
Tiny BASIC (黎明期のマイコン用に普及、Windowsなどのものとは別物)
WICS (MZ-80K及びMZ-80Bシリーズ用のBASICに極力似せた表記方法を採用した、インタープリタ兼コンパイラ 整数型プログラミング言語)
C-BASIC (CASIO FPシリーズ用のBASICで10進演算による精度の高い計算を得意とした。8ビット用のC82-BASICと16ビット用C86-BASICがある)
マイクロソフト・マイクロソフト文法互換系(Microsoft BASIC)
Apple 10K BASIC (アップルコンピュータ Apple II+ 以降)
BASCOM (CP/M用BASICコンパイラ)
BASIC/98 (N88互換インクリメンタルコンパイラ)
F-BASIC (FMシリーズのBASIC、富士通製)
M-BASIC (CP/M用のBASIC)
MSX-BASIC (MSX用のマイクロソフトBASIC、スプライト機能などを拡張、N88などより原型に近い)
N-BASIC (PC-8001などのBASIC)
N80-BASIC (PC-8001mkIIなどのBASIC)
N88-BASIC (PC-8801(マイクロソフト製)、PC-9801(NEC製)のBASIC、98用は別途コンパイラもあり)
N60-BASIC、N60m-BASIC、N66-BASIC、N66SR-BASIC (PC-6000シリーズ、PC-6600シリーズのBASIC)
N100 BASIC (PC-100のBASIC)
N82-BASIC (PC-8201のBASIC)
BASIC-M25 (シャープMZ-2500)
QBASIC (QuickBASICの簡易版、Windows95,98のCD-ROMに英語版が付属)
QuickBASIC (Visual Basicの原型となった構造化BASIC)
Microsoft BASIC Professional Development System (QuickBASICの進化形で、標準でISAMデータベースが構築でき、MS-MASM、MS-C、Quick C、MS-FORTRAN等とのミックスド・ランゲージ開発が可能な、プロユースの構造化BASIC)
シャープ・ハドソン系
BASIC-M28 (シャープMZ-2861)
BASIC-S25 (シャープMZ-2500)
Hu-BASIC (MZシリーズなどのBASIC、ハドソン製)
S-BASIC (MZシリーズのBASIC、シャープ製)
SHARP BASIC (ポケコン用のBASIC)
X-BASIC (X68000のC言語ライクなBASIC、ハドソン製)
Z-BASIC (X1turboZのBASIC)
パソコンの普及により急速に広まったBASICだったが、Pascal、C言語の流行による構造化プログラミングの波が押し寄せると、行番号を残し、マルチステートメントやGOTO文などを多用するパソコンのBASICは、構造化を支持する識者からは酷評されるようになった。
オブジェクト指向とBASIC
現在、BASICもオブジェクト指向化が見受けられる。その代表例がVisual Basic.NETやREALbasicやActiveBasic等で、三者とも既に完全なオブジェクト指向言語になっていると言える。
主なBASIC
現在のパソコンのBASIC
マイクロソフト・マイクロソフト文法互換系
Visual Basic - Microsoft
Visual Basic for Applications(VBA)
Visual Basic.NET
Small Basic - Microsoft
ActiveBasic (Windows用フリーウェア 国産)
REALbasic (Windows・MacOS・Linux)
Jabaco (english)
BASIC/98 (Windows用 国産 N88-BASIC互換) - 有限会社電脳組
XBLite
独自系
FutureBASIC (MacOS 構文はQuickBASIC互換)
BCX (GPLv2 + BCX例外ランセンスのオープンソースソフトウェア BASIC → C言語トランスレータでインラインC/C++およびアセンブリを扱えるなどの特徴を持つ)
UBASIC (DOS用フリーウェア 多倍長演算に特化)
DarkBASIC (ゲーム製作に特化したBASIC言語、Windows専用、特に3Dゲーム)
Full BASIC系(規格準拠)
(仮称)十進BASIC (JIS Full BASICに準拠、Windows・Linux・MacOS用フリーウェア、英語名 Decimal BASIC)
True BASIC (Full BASIC規格の原型、MS-DOS・Windows・MacOS・UNIX、現在は英語版のみ)
Ultra BASIC - 株式会社ラネクシー
旧式構文系
Chipmunk Basic(Windows・MacOS・UNIX用フリーウェア、インタプリタのみ)
ゲーム機などのBASIC
ファミリーベーシック(NS-HuBASIC)(ファミコン、任天堂・シャープ・ハドソン共同開発)
PCエンジンでべろBASIC(PCエンジン用開発ツール、徳間書店インターメディアが販売、ハドソン・日本電気ホームエレクトロニクス開発)
GAME BASIC for SEGASATURN (セガサターン、MSX-BASICライク)
BASIC STUDIO (プレイステーション2、アートディンク開発)
プチコン (ニンテンドーDSi/DSiLL・ニンテンドー3DS、JOEDOWN・スマイルブーム・ロケットスタジオ共同開発)
過去のパソコンなどのBASIC
独自系
Apple 6K BASIC (アップルコンピュータ Apple II 別名 Integer BASIC)
G-BASIC (トミーぴゅう太用BASIC、日本語の命令。同機には別売のBASIC 1もあり) ※同機とは関係ない、マイクロソフト製の同名のBASICがある
MW-BASIC (BASIC-09 OS-9用)
BASIC-G (ソードのM5のBASIC、整数型しか使えないが高速だった。同機には実数用のBASIC-Fもあり)
Tiny BASIC (黎明期のマイコン用に普及、Windowsなどのものとは別物)
WICS (MZ-80K及びMZ-80Bシリーズ用のBASICに極力似せた表記方法を採用した、インタープリタ兼コンパイラ 整数型プログラミング言語)
C-BASIC (CASIO FPシリーズ用のBASICで10進演算による精度の高い計算を得意とした。8ビット用のC82-BASICと16ビット用C86-BASICがある)
マイクロソフト・マイクロソフト文法互換系(Microsoft BASIC)
Apple 10K BASIC (アップルコンピュータ Apple II+ 以降)
BASCOM (CP/M用BASICコンパイラ)
BASIC/98 (N88互換インクリメンタルコンパイラ)
F-BASIC (FMシリーズのBASIC、富士通製)
M-BASIC (CP/M用のBASIC)
MSX-BASIC (MSX用のマイクロソフトBASIC、スプライト機能などを拡張、N88などより原型に近い)
N-BASIC (PC-8001などのBASIC)
N80-BASIC (PC-8001mkIIなどのBASIC)
N88-BASIC (PC-8801(マイクロソフト製)、PC-9801(NEC製)のBASIC、98用は別途コンパイラもあり)
N60-BASIC、N60m-BASIC、N66-BASIC、N66SR-BASIC (PC-6000シリーズ、PC-6600シリーズのBASIC)
N100 BASIC (PC-100のBASIC)
N82-BASIC (PC-8201のBASIC)
BASIC-M25 (シャープMZ-2500)
QBASIC (QuickBASICの簡易版、Windows95,98のCD-ROMに英語版が付属)
QuickBASIC (Visual Basicの原型となった構造化BASIC)
Microsoft BASIC Professional Development System (QuickBASICの進化形で、標準でISAMデータベースが構築でき、MS-MASM、MS-C、Quick C、MS-FORTRAN等とのミックスド・ランゲージ開発が可能な、プロユースの構造化BASIC)
シャープ・ハドソン系
BASIC-M28 (シャープMZ-2861)
BASIC-S25 (シャープMZ-2500)
Hu-BASIC (MZシリーズなどのBASIC、ハドソン製)
S-BASIC (MZシリーズのBASIC、シャープ製)
SHARP BASIC (ポケコン用のBASIC)
X-BASIC (X68000のC言語ライクなBASIC、ハドソン製)
Z-BASIC (X1turboZのBASIC)