BASIC
GOTO - 「GOTO  <行番号>」という書式で、指定された行番号へジャンプする。
GOSUBおよびRETURN - 「GOSUB + <行番号>」という書式。GOSUB文で指定された行番号へジャンプするが、ジャンプ先で行番号の順に実行してゆき、RETURNというワードに到達するとジャンプ元の位置に戻る。
END - ダートマスBASICではプログラムの最終行に書かなければいけない。(実装によってはENDを書かないとコンピュータが暴走するものもあった。ENDを省略できる実装が次第に増えた。)
処理系に指示を与えるワード(プログラムの外の命令)はコマンド(命令)という。
たとえば次のようなワードである。
RUN  - プログラムを実行する。
LIST - プログラムを行番号の若いほうから順に、リスト状に画面に表示する。
SAVE - 現在のプログラムをストレージに保存する。
きわめてシンプルな例を挙げる。
画面に次のように入力したとする。
するとBASICの処理系は、行番号10から40までの文をプログラムとして扱う。次にRUNと入力し(すると「40 NEXT」の次の行に「RUN」と表示され)リターンキーなどを押すと、行番号10の行すなわち「10 REM 5つ数える」から順に実行され、行番号20から行番号40まではループとして扱い5回繰り返す。この場合の出力は次のとおり。
なお、「REM」はステートメントであり、ソースコードを読む人のための注釈文(英:remark)の文頭に置かれる。REMで始まる行はプログラムの実行結果に何ら影響を与えない。
また、前述のプログラムに編集を加えたい場合は、続いて例えば次のように入力する。
このように入力すると、行番号10の文は書き換えられ(つまり上書きされ、以前のものは消え)、20行目と30行目の間に行番号25の「 25 IF I = 3 THEN GOTO 40」が挿入された、とBASICの処理系は判断する。 そしてRUNと入力すると、やはり行番号10から実行し、出力は次のとおり。
高水準言語である。
BASICはFORTRANの影響を受けており、いくつか似た特徴がある。一方、構造化以前のBASICはC言語とは系統が異なり、C言語とは大きく異なる。
ダートマスBASICはコンパイラだが、他のBASICはインタプリタとして実装された処理系が多い。
構造化以前のBASICでは、すべての行頭に行番号を必要とする。
基本的に先頭行(行番号が一番若い行)から1行ずつ実行される。
GOTO文(GOTO <行番号>)があると、<行番号>で指定された行番号にジャンプしてその行を実行する。たとえば「GOTO 250」と書かれていたら、行番号250にジャンプする。行番号は、テレタイプ端末時代に処理系と一体の行指向テキストエディタで扱うのに便利であったので採用されてしまった。ジャンプ先をただの数字(行番号)で示すので、ある程度以上の行数を書くとGOTO文が増え、直観的には分かりづらい行だらけになる。アルファベットの意味ある単語で行き先を指定するジャンプではないので、一行ずつ焦点を当てると、どういう意図で書かれたコードなのかが不明瞭な行ばかりになってしまう。また、通常ある程度以上の規模のプログラムは分岐判断が多数含まれるので、IFとGOTOを組み合わせた文を多数使うことになり、ある程度の行数以上のプログラムを書くとスパゲティプログラムになりやすい。だが現在でも互換性のために両者を残している処理系もある。ラベルを用いて「GOTO *LABEL」のように指定できる実装もある。
プログラム中の予約語(キーワード)にはステートメントやコマンドの他に関数がある。それらと同じ文字並びを変数名として使うことはできない。
文字列変数の内容等を除いて、大文字と小文字を区別しない。入力の時点で全て大文字に変換される処理系もあった。
算術演算子以外の記号は極力使わない。論理演算子はAND、OR、XOR、NOTである。括弧は演算の優先順位も、サブルーチンの引数も、配列もすべて「()」のみを用いる。ブロックも「{}」のような括弧ではなく「FOR文からNEXT文までの間」といった構文により指定する。
代入と比較はどちらも「=」である。代入はLET文(たとえば「LET A = 10」など)とするのが本来の書式だが、キーワード「LET」を省略した構文も許される方言ばかりになったので、結局「A = 1」のような、代入文なのか比較文なのか見た目の印象が非常に紛らわしいものばかりになり、バグ頻発の原因ともなった。
明示的な変数宣言を必要とせず、変数を使用し始めたところで宣言したものと解釈される。
使ったことのない変数を使うと変数が作られ、また中身は自動的に初期化される(数値型は0、文字列型は空文字列)。
ファーストクラスの型は数値型と文字列型である。数値は浮動小数点数だけのものもあるが、整数型などがあるものもある。文字列型の変数名は末尾に「$」を付ける、といった規則のものもある。
LEFT$, MID$, RIGHT$など、文字列操作関数もそれなりの数備えていることが多い。
編集環境を兼ねたコマンドラインインタプリタを持つものもある。(一種のシェルのようなもの。LISPのREPLとはやや異なる。)
当百科事典の読者で一度もBASICに触れたことが無い人が、とりあえず最低限でも雰囲気を理解するためにはWeb版(ブラウザで試せるもの)が一番手軽なので、それから紹介する。
- ブラウザ上でBASICコードを書いてWeb上で実行できるサービス
- N88-BASIC のように利用可能なBASICコード実行サービス。ウェブ上で動作し、サイトの外観も当時のN88-BASICさながらである。
構造化以前のBASICが動いていたマシンの新品販売はほとんどは終了となっている。とはいえ、ありとあらゆる機種は中古で入手可能で、たとえばeBay、メルカリ、ヤフオクなどで広く流通しているので、今日でも入手して、現在も目の前で動くBASICとして使うことができる。
==== 各組織、各社のBASIC ====
ダートマスBASIC(1964年 - )
BASIC-PLUS (1970年 - 。DECがPDP-11のタイムシェアリングシステムRSTS/E用に開発したものであり、1970年代から1980年代にかけて使われた)
Tiny BASIC (1976年 - 。黎明期のマイコン用など)
Apple 6K BASIC 別名Integer BASIC(1976年 -。スティーブ・ウォズニアック独力でApple IやApple II用に開発したもの。 )
Level I BASIC - (1977年- 。TRS-80向けBASIC)
Commodore BASIC - コモドールPET 2001(1977年 -)に搭載されていたBASIC
以下、シャープのBASICは「コモドール系」と呼ぶことも可能ではある
S-BASIC - (1978年 -。シャープ MZ-80用BASIC。シャープ純正BASIC。MZ-80はCommodore PETの影響を受けておりBASICもPETに似ているが、それでもシャープが自力開発したもの。命令セットは互換性のため後継製品もそれに準拠して独自拡張した物となっている。
SP-5030 (1978年12月 -。MZ-80K, Cなど用BASIC。データレコーダ用のカセットテープで供給された)。「SP-5030」が言語の品番かカセットの品番かはやや曖昧。「MZ-80 SERIES BASIC解説」が付属した。
SB-5520 (MZ-80B用など)
BASIC-S25 (シャープMZ-2500)
BASIC LEVEL II他(SEGAのSC-3000/SG-1000等のためのBASIC)
WICS (1981年-。MZ-80K及びMZ-80Bシリーズ用のBASICに極力似せた表記方法を採用した、インタープリタ兼コンパイラ 整数型プログラミング言語)
Hu-BASIC (1982年 -) - シャープ MZ-80シリーズ用だが、ハドソン社が開発したものでMicrosoftのBASICに似せたもの。
BBC BASIC(1981年 - ) - イギリスのBBC Microに搭載されたBASIC。Locomotive Softwareが開発。
Locomotive BASIC(1984年 - ) - アムストラッドCPCなどに搭載されたBASIC。上述のBBC BASICをLocomotive Softwareが改良したもの。
G-BASIC (1982年 -。トミーぴゅう太用BASIC、命令語を日本語に置き換えてある。同機には別売のBASIC 1もあり) ※同機とは関係ない、マイクロソフト製の同名のBASICがある
MW-BASIC (BASIC-09 OS-9用)
BASIC-G (ソードのM5のBASIC、整数型しか使えないが高速だった。同機には実数用のBASIC-Fもあり)
Casio Basic(1996年(CFX-9850G) - 。カシオFPシリーズ用のBASICで10進演算による精度の高い計算を得意とした。8ビット用のC82-BASICと16ビット用C86-BASICがある)
SHARP BASIC (ポケコン用のBASIC)
X-BASIC (X68000のC言語ライクなBASIC、ハドソン製。)
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で、実行環境やバイナリーは提供されていないので初心者が使うのは無理である。
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、富士通製)
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森精機株式会社)が開発した)
これらは命令セットの仕様が共通なだけで、必ずしもマイクロソフト製というわけではない。
すでに新品販売されていないゲーム機のBASICは以下のとおり。
ファミリーベーシック (NS-HuBASIC)(ファミコン、任天堂・シャープ・ハドソン共同開発)
PCエンジンでべろBASIC(PCエンジン用開発ツール、徳間書店インターメディアが販売、ハドソン・日本電気ホームエレクトロニクス開発)
GAME BASIC for SEGASATURN (セガサターン、MSX-BASICライク)
BASIC STUDIO (PlayStation 2、アートディンク開発)
プチコン・プチコンmkII (SmileBasic)(ニンテンドーDSi/DSi LL・3DS・New 3DS、JOEDOWN・スマイルブーム・ロケットスタジオ共同開発)
プチコン3号  (ニンテンドー3DS販売終了、Newニンテンドー3DSも2020年9月16日に販売終了)
最近、復刻パソコン、つまり1980年代などのパソコンが、ほぼ以前どおりのシステム内容で(しかも端子類はHDMIやUSBに変更したり、SDメモリ用スロットなども加えるなど、最近の仕様に改良されて)、新品で販売されるようになっている。それらのほとんどでBASICが動き、ユーザはBASICプログラミングを楽しむことができ、それらを差別する理由は全く無いので、それらについても記述する。
Commodore BASIC(The C64(コモドール64のフルサイズ復刻機)、The C64 MINI(コモドール64のミニサイズ復刻機)などで動く)
N-BASIC ver 1.1 (ハル研究所から販売されているPasocomMini PC-8001で動く)
現在、新品で販売されているパソコン上で動くBASIC
マイクロソフトBASIC・ならびにその類似系
Visual Basic - マイクロソフト
Visual Basic for Applications (VBA)
Small Basic - マイクロソフト
99Basic  (Windows用フリーウェア 国産)
ActiveBasic (Windows用フリーウェア 国産)
BASIC/98 (Windows用 国産 N88-BASIC互換) - 有限会社電脳組
Xojo(旧:REALbasic)(Windows・Mac OS・Linux)
Jabaco(Visual Basicに似たコードでJRE上で動くソフトを開発するコンパイラ)
Android-Basic (Android用)
FreeBASIC(QuickBASIC互換、コンパイラ型、GPL)(Windows・Linux・DOSエクステンダ・Xbox)
QB64(QuickBASIC互換)
PureBasic(マルチプラットフォーム、AmigaOS版はオープンソース)
FutureBASIC(Mac OS、構文はQuickBASIC互換)
BCX(GPLv2 + BCX例外ライセンスのオープンソースソフトウェア BASIC → C言語トランスレータでインラインC/C++およびアセンブリを扱えるなどの特徴を持つ)
UBASIC(DOS用フリーウェア 多倍長演算に特化)
DarkBASIC(ゲーム製作に特化したBASIC言語、Windows専用、特に3Dゲーム)
GLBasic(GCCコンパイラを内部で利用するマルチプラットフォーム開発環境)
Full BASIC系(規格準拠)
True BASIC - (Full BASIC規格の原型、MS-DOS・Windows・Mac OS・UNIX、現在は英語版のみ、BASICを作ったジョン・ジョージ・ケメニーとトーマス・ユージン・カーツによって作られたBASIC)
十進BASIC (JIS Full BASICに準拠、Windows・Linux・Mac OS用フリーウェア、英語名Decimal BASIC)
Chipmunk Basic(Windows・Mac OS・UNIX用フリーウェア、インタプリタのみ)
PC-BASIC (外部リンク)http://www.pc-basic.org/ (Windows・Mac OS・Linux・UNIX・GPL系・GW BASIC互換エミュレート機能搭載型インタープリター)
Android OS上で動くBASIC、つまりスマホOS世界シェアNo.1のAndroidスマートフォン群やAndroidタブレット群などで動くBASICは以下のとおり。
Android-Basic (Android用)
タートルグラフィックスを備えた Android 用 BASIC インタプリタ
BASIC! 別名rfo-basic  http://basic.amsstudio.jp/
iOS上で動く(つまりiPhoneやiPadで動く)BASICは以下のとおり。
- CBM Flavor
現在新品で販売されている(子供向けの)ゲーム機のBASIC
プチコン4       (Nintendo Switch)
マイコンBASIC互換表 CQ出版社
Kemeny, John G. & Kurtz, Thomas E. (1985). Back to BASIC: The History, Corruption and Future of the Language. Addison-Wesley Publishing Company, Inc. ISBN 0-201-13433-0.
松田健生訳、市川新解説(1990)『バック・トゥ・BASIC 開発者が語る言語の歴史と設計思想』啓学出版、ISBN 4-7665-1074-7