BASIC
次のようなコンパイラがある。
BASCOM(マイクロソフト BASIC-80 CP/M用インタプリタ)
MS-DOS用N88-BASICコンパイラ(日本電気 PC-9800シリーズ)
F-BASIC386コンパイラ(富士通 FM TOWNS)
MSXべーしっ君(アスキー MSX) 実行ファイルは生成しない
X-BASICコンバーター(シャープ X68000) C言語に変換した上でのコンパイル
FreeBASICコンパイラ(Microsoft Windows、Linux、DOSエクステンダ、Xbox) フリーでGPL形式の80386向けコンパイラで、現代向けに多数の機能追加が行われているが、QuickBASICとの互換性もある。
しかし、パソコンに内蔵または標準添付されていたインタプリタと違い、コンパイラは別売であったり、高価であったり、実行にはランタイムライブラリを必要であったりする場合があった。このことから、BASICインタプリタによる開発に習熟したユーザーは、より高速で柔軟なプログラムを求めて、機械語(アセンブリ言語)や、C言語などに移行していった。
また、コンパイラと称していても、実際はインタプリタとソースコードを同梱した実行ファイルを作るだけ、というものもある。中間表現と、そのインタプリタ、という構成のものもある。
プログラム中の予約語(キーワード)にはステートメントやコマンドの他に関数がある。それらと同じ文字並びを変数名として使うことはできない。
文字列変数の内容等を除いて、大文字と小文字を区別しない。入力の時点で全て大文字に変換される処理系もあった。
算術演算子以外の記号は極力使わない。論理演算子はAND、OR、XOR、NOTである。括弧は演算の優先順位も、サブルーチンの引数も、配列もすべて「()」のみを用いる。ブロックも「{}」のような括弧ではなく「FOR文からNEXT文までの間」といった構文により指定する。
代入と比較はどちらも「=」である。代入はLET文(たとえば「LET A = 10」など)とするのが本来の書式だが、キーワード「LET」を省略した構文も許される方言ばかりになったので、結局「A = 1」のような、代入文なのか比較文なのか見た目の印象が非常に紛らわしいものばかりになり、バグ頻発の原因ともなった。
明示的な変数宣言を必要とせず、変数を使用し始めたところで宣言したものと解釈される。
使ったことのない変数を使うと変数が作られ、また中身は自動的に初期化される(数値型は0、文字列型は空文字列)。
ファーストクラスの型は数値型と文字列型である。数値は浮動小数点数だけのものもあるが、整数型などがあるものもある。文字列型の変数名は末尾に「$」を付ける、といった規則のものもある。
LEFT$, MID$, RIGHT$など、文字列操作関数もそれなりの数備えていることが多い。
編集環境を兼ねたコマンドラインインタプリタを持つものもある。(一種のシェルのようなもの。LISPのREPLとはやや異なる。)
Visual Basic - マイクロソフト Visual Basic for Applications (VBA) Visual Basic .NET (VB.NET)
Small Basic - マイクロソフト
99Basic(Windows用フリーウェア 国産)
ActiveBasic(Windows用フリーウェア 国産)
BASIC/98(Windows用 国産 N88-BASIC互換) - 有限会社電脳組
Xojo(旧:REALbasic)(Windows・Mac OS・Linux)
Jabaco(英語版)(Visual Basicに似たコードでJRE上で動くソフトウェアを開発するコンパイラ)
XBLite
Android-Basic (Android用)
FreeBASIC(QuickBASIC互換、コンパイラ型、GPL)(Windows・Linux・DOSエクステンダ・Xbox)
QB64(英語版)(QuickBASIC互換)
高水準言語である。
BASICはFORTRANの影響を受けており、いくつか似た特徴がある。ALGOLを始祖とするPascalやC言語とは系統が大きく異なる。ただし、演算子のスタイルや、大文字と小文字を区別しないなどの点で、Pascalとの類似性は見られる。
ダートマスBASICはコンパイラだが、他のBASICはインタプリタとして実装された処理系が多い。
構造化以前のBASICでは、すべての行頭に行番号を必要とする。
基本的に先頭行(行番号が一番小さい行)から1行ずつ実行される。
GOTO文(GOTO <行番号>)があると、<行番号>で指定された行番号にジャンプしてその行を実行する。たとえば「GOTO 250」と書かれていたら、行番号250にジャンプする。行番号は、テレタイプ端末時代に処理系と一体の行指向テキストエディタで扱うのに便利であったので採用されてしまった。ジャンプ先をただの数字(行番号)で示すので、ある程度以上の行数を書くとGOTO文が増え、直観的には分かりづらい行だらけになる。アルファベットなども使って意味付けされた単語(ラベル)で行き先を指定するジャンプではないので、一行ずつ焦点を当てると、どういう意図で書かれたコードなのかが不明瞭な行ばかりになってしまう。また、通常ある程度以上の規模のプログラムは分岐判断が多数含まれるので、IFとGOTOを組み合わせた文を多数使うことになり、ある程度の行数以上のプログラムを書くとスパゲティプログラムになりやすい。だが現在でも互換性のために両者を残している処理系もある。ラベルを用いて「GOTO *LABEL」のように指定できる実装もある。
この時に搭載されたBASICインタプリタはほとんどがマイクロソフト製で、同社躍進のきっかけとなった。また、マイクロソフト製BASICは中間コードを使用する構造になっており、汎用機を再現した極めてエミュレータに近いランタイム形式の実行環境でもあったため、当時の互換性が皆無なコンピュータ事情の中でも、スクリプト自体の移植は容易だった。
その後、(MS-DOS発表以前の)パソコンに、操作を提供するのにも使われ、しばしばROM-BASICとしてハードウェアに組み込まれた。電源投入後にエディタ込みで利用できることから、現在における、シェル、インタフェースとしての役割ももち、ローダなどの役割も担った。入力の効率化のため、省略形式での入力や、1980年代後半には、ラベル、インデントへの内部的な対応、C言語への橋渡し、日本では漢字の利用など、様々な機種ごとの独自の発展を遂げた。当時のPCの処理速度は遅いので、処理の高速化が必要な部分はデータ形式でアセンブリ言語による処理を呼び出すなどの手法もとられた。
1980年代後半から1990年代前半ころにはC言語がパーソナルコンピュータのユーザにも少しずつ知られるようになり、早く知り、早くCコンパイラを入手した人から順に、(構造化以前の)BASICの代わりにC言語を使うことが増えていった。
一方で1990年代などでもプログラミングの専門家ではない数学者が、あいかわらず行番号を使用する数値計算用のBASICを開発するなどということ(UBASIC)も行われつづけた。
N80-BASIC (PC-8001mkIIなどのBASIC)
N60-BASIC、N60m-BASIC、N66-BASIC、N66SR-BASIC (PC-6000シリーズ、PC-6600シリーズのBASIC)
N100 BASIC (PC-100のBASIC)
N82-BASIC (PC-8201のBASIC)
Hu-BASIC (ハドソン製のマイクロソフト系命令セットのBASIC。固定のシステムをROMで持たないMZ-80Kで利用できるよう市販されたが、後にMZ-700やX1/turbo/turboZシリーズでは標準添付のシステムとなり、X1では名前を変えつつ標準のシステムとして最終機まで継承された)
BASIC-M25 (シャープMZ-2500用の実装。コピーライトはシャープとなっているが、ハドソン製でもマイクロソフト製でも無い。日本語のラベルや、インデントのタブコード化、常駐プログラムとの併用など本体に合わせ高機能なBASICとなっている)
BASIC-M28 (シャープMZ-2861)
IchigoJam BASIC(IchigoJam用の実装。MSXの影響を強く受けているため、独自拡張を含むもののMSX-BASICのサブセットの様な命令セットとなっている)
SONY BASIC(ソニーSMC-70、SMC-777/Cに搭載されたBASICインタープリタ、マイクロソフト系命令セットを備えているが、直接の関係はなく、ビー・ユー・ジー社(現ビー・ユー・ジーDMG森精機株式会社)が開発した)
これらは命令セットの仕様が共通なだけで、必ずしもマイクロソフト製というわけではない。
Android OS上で動くBASIC、つまりAndroidスマートフォン群やAndroidタブレット群などで動くBASICは以下のとおり。
Android-Basic (Android用)
Tiny BASIC v2 タートルグラフィックスを備えた Android 用 BASIC インタプリタ
BASIC! 別名rfo-basic http://basic.amsstudio.jp/
X11-BASIC - Androidアプリ
Altair BASIC(1975年 -。Altair 8800用。マイクロソフトの最初の製品であり、その後のMicrosoft BASICの起源となった。) MBASIC (CP/M用のBASIC)
QuickBASIC (1985年 - 。Visual Basicの原型となった構造化BASIC) QBasic (QuickBASICの簡易版、Windows 95 / 98のCD-ROMに英語版が付属) Microsoft BASIC Professional Development System (QuickBASICの進化形で、標準でISAMデータベースが構築でき、MS-MASM、MS-C、Quick C、MS-FORTRAN等との言語混在開発が可能な、プロユースの構造化BASIC)
Microsoft GW-BASIC - かつてMicrosoftが1983年頃出していたBASICで、2020年5月にオープンソース化された。ただし実行環境やバイナリは提供されていない。
MSX-BASIC (MSX用のマイクロソフトBASIC、スプライト機能などを拡張、N88などより原型に近い)
N-BASIC (PC-8000シリーズなどのBASIC) N88-BASIC (PC-8800シリーズ(マイクロソフト製)、PC-9800シリーズ(日本電気製)のBASIC、PC-9800シリーズ用は別途コンパイラもあり)
Apple 10K BASIC (Apple Computer製、Apple II+以降)
BASCOM (CP/M用BASICコンパイラ)
F-BASIC (FMシリーズのBASIC、富士通製)