BASIC

BASICは手続き型プログラミング言語のひとつ。

名前は「en」のバクロニムである。日本語では「初心者向け汎用記号命令コード」を意味する。

1. 概要
-----

誕生したのが1964年であり、当時普及していたプログラミング言語FORTRANにいくつかの点で似ている。構文は、FORTRANの文法が基になっているとしばしば解説されている。

BASICはインタープリタ方式で動くものと、コンパイラ方式で動くものに大別できる。date=2023-09では、構文の様式が大きく異なる2種類のBASICが存在している。構造化前のBASICと、構造化後のBASICである。

構造化されていないBASIC 1970年代 - 1980年代のコンピュータで初心者向け・教育用のプログラミング言語として、非常に広く使われたものである。行番号とGOTO文を用いる原始的なBASICであり、分岐やループでは常にジャンプ先の行番号を意識しなければならず、構造化プログラミングが不可能である。行番号とGOTOを用いたプログラミングは、まるでスパゲティが絡み合ったような複雑なコードとなりがちで、コードの再利用性が低いうえにバグを誘発しやすく、熟練したプログラマにとってもプログラムのデバッグや安全な機能拡張は困難だった。のちに構造化プログラミングに対応したPascalやC言語が登場・普及して比較されるようになると、BASICは激しい批判を浴びるようになり、実用的なプログラミング用途ではC言語などに負けて廃れていった。構造化されたBASIC 順次実行・選択・反復といった制御構造を利用する構造化プログラミングを実現できるように、行番号およびGOTO文を廃止したものである。構造化BASICとも呼ばれる。いくつかの流派で成立したが、特に1991 - 1993年頃に正式に規格として制定されたFull BASICの仕様は構造化がしっかりしてあり、他の点でも改良が加えられてある。このFull BASICの仕様とは互換性がないものの、別の構造化BASICとしての発展を遂げたVisual Basicをベースに、オブジェクト指向にも完全対応したモダンな言語のひとつとしてVisual Basic .NETがある。したがって両者はかなり異なっており、明確に区別して論じる必要がある。

構造化以前のBASICの行番号とGOTO文については、基本的な例を示しつつ#構造化以前のBASICの節で解説する。また、BASICの基本的な予約語や、ステートメントとコマンドの区別についても、同節で解説する。

歴史最初のBASICは、1964年、米国ダートマス大学で、数学者ジョン・ケメニーとトーマス・カーツがもともと教育目的を想定して開発したものである。このBASICを「ダートマスBASIC」という。行番号の使用や構文は、当時主流だった言語FORTRANの影響を受けている。彼らはこれで金儲けをする気はなく特許なども取得せず、今風に言うと「パブリックドメイン」のようなものにしようと考えていたので普及することになった。このダートマスBASICはコンパイラだった。BASICはGEとの提携を経て大学の外にも普及していくことになり、1970年代後半や1980年代のマイコン、パーソナルコンピュータなどの多くの機種で次々と採用され、普及していった。1970年代後半～1980年代のBASICのほとんどはインタプリタ方式でマザーボード上のROMにあらかじめ書き込まれた状態で供給されていた。一部のBASICはインタプリタ方式でもROMに書き込まれておらず補助記憶装置から読み込まれたり、あるいはコンパイラ方式のBASICで高速で実行できるものも開発・供給された。

2. 歴史
-----

1964年、米国ダートマス大学にて、数学者ジョン・ケメニーとトーマス・カーツにより、教育用などを目的としてダートマスBASICが開発された。これは同時期にともに開発された、タイムシェアリングシステムDTSS上のラインエディタで利用されるよう設計されていた。

BASICは、GEとの提携を経て、学外にも普及した。ダートマス大学のオリジナルはコンパイラだったが、パソコンなどの商用版では基本機能を最小限にしたうえでインタプリタとして実装されることが多く、独自の発展を遂げた。

詳しく説明すると、もっとも初期に使用したのはゼネラル・エレクトリックであり、GEはGE-225というマシンをダートマス大学に納入していたのである。

多数の方言の登場と標準化できなかった経緯BASICの方言は、1970年ころ、GEがBASICの第4版を使っているころに現れ始めた。新しいバージョンを待たず、ver.5を用いたマシンをGEがリリースしたころからである。ダートマス大のケメニーとカーツの2人が「BASIC the Sixth」をリリースした1年後くらいに、ズレが生じはじめた。当時のBASICの異バージョンはGordon Eubanksによるもので、彼は1970年にBASIC-Cを開発した。Eubanksも彼の開発したBASIC-Eについては法的に保護せず、次のCBASICでそのような措置をとった。CBASICは彼の会社 Compiler Systems社から販売された。あまりにも次々とBASICの異バージョンが現れるので、ANSIも1974年にBASICの標準化の必要性を感じ始めた。ANSI内に標準化委員会が立ちあがり、BASICの2つの標準、つまり当時その委員会で「ミニマルBASIC」つまり最小のBASICと呼ばれたものと、もう一方は「スタンダード BASIC」と呼ばれたものを作成しようと取り組んだ。だがBASICの標準化は難しく、その委員会が長年かけて「標準化」の仕事をやっと完了したころには、とうにBASICは世界中で広く使われてしまっていた。そのようなわけで、標準BASICというものは現れないことになったのである。

2.1. 8ビットパソコンの普及とBASIC
----------------------

史上初の市販のパーソナルコンピュータとされているのはMITS社のAltair 8800であり、1975年、このAltair 8800向けにハーバード大のビル・ゲイツ、ポール・アレン、モンティ・ダヴィドゥフの3人がAltair BASICを開発し、MITS社との契約のもと配布された。1976年4月11日にはスティーブ・ウォズニアックによって開発されたパーソナルコンピュータ・キットApple Iがアップル社から発売され、このマシンのために同じくウォズニアックが開発した:en:Integer BASICが供給され、翌1977年6月にはキットタイプではない完成品タイプのApple IIが発売となり、それにもやはりINTEGER BASICが、だが今度は最初からROMに書き込まれた形で搭載された。

1970年代末から1980年代初頭にかけての一時期は、少数のエレクトロニクス好きのホビーストたちは、8ビットCPUのコンピュータをキットなどから自作しその上でTiny BASICを動かしたり、その上でスタートレックなどのゲームを動かすことなどを楽しんでいた。

だが大多数の人々はコンピュータを実務に使いたいと感じており、キットではなく最初から完成品の、動作することが確実なコンピュータを求めていた。メーカー側はそうした要望に応えてターンキーシステムを開発しそれにBASICインタプリタをROMに書き込んだ形で搭載するようになり、BASICは一気に当時のマイクロコンピュータの標準言語の地位を獲得した。この時に搭載されたBASICインタプリタはほとんどがマイクロソフト製で、同社躍進のきっかけとなった。また、マイクロソフト製BASICは中間コードを使用する構造になっており、汎用機を再現した極めてエミュレータに近いランタイム形式の実行環境でもあったため、当時の互換性が皆無なコンピュータ事情の中でも、スクリプト自体の移植は容易だった。

その後、パソコンに、操作を提供するのにも使われ、しばしばROM-BASICとしてハードウェアに組み込まれた。電源投入後にエディタ込みで利用できることから、現在における、シェル、インタフェースとしての役割ももち、ローダなどの役割も担った。入力の効率化のため、省略形式での入力や、1980年代後半には、ラベル、インデントへの内部的な対応、C言語への橋渡し、日本では漢字の利用など、様々な機種ごとの独自の発展を遂げた。当時のPCの処理速度は遅いので、処理の高速化が必要な部分はデータ形式でアセンブリ言語による処理を呼び出すなどの手法もとられた。

1980年代後半から1990年代前半ころにはC言語がパーソナルコンピュータのユーザにも少しずつ知られるようになり、早く知り、早くCコンパイラを入手した人から順に、BASICの代わりにC言語を使うことが増えていった。

一方で1990年代などでもプログラミングの専門家ではない数学者が、あいかわらず行番号を使用する数値計算用のBASICを開発するなどということも行われつづけた。

2.2. 「方言」の乱立
------------

BASICは1970年代後半から1980年代にかけて、当時黎明期にあり、次々と各社が製造に乗り出したパーソナルコンピュータの各機種に続々と搭載されていくことになり、パーソナルコンピュータ業界の発展にも貢献した。

だが、前述の「標準化できなかった経緯」の節で説明したように、BASICを最初に開発したダートマス大の2人は今で言う「パブリックドメイン」でいいと漠然と考えていて、また標準化団体のANSIも後手にまわってしまったので、BASICには「方言」が乱立する状況になってしまった。

マイクロコンピュータやパーソナルコンピュータに標準搭載されたBASICは、たいてい各メーカーのひとつひとつの機種ごとに独自拡張が行われた。コモドール社のPET 2001のCommodore BASICに類似したシャープのS-BASIC、SEGAのベーシックカートリッジ、次第にシェアを増やしたマイクロソフト製のBASICや、その命令体系を引き継ぎ実装したものである、F-BASIC、Hu-BASIC、カタカナで表現するG-BASIC以外にも、C言語を意識したX-BASICなど、さまざまなBASICを各社が独自に開発した。

この結果、「あるパソコンのBASICで書かれたプログラムは、他のパソコンではそのままでは動かすことができない」という、残念な状態になってしまった。たとえBASICの開発会社が同じでも、別の機種では動かない状況になってしまったのである。BASICを用いていては、開発者はせっかく苦労してコンピュータプログラムを開発しても、たいていはわずか1機種でしか動かず、また企業がソフトウェアをビジネス目的で開発・販売しようとする場合でもBASICでプログラムを開発しては、わずか1機種のユーザにしか売れず、それではあまり儲からないので、はじめから開発を躊躇しがちになる、という状況だったのである。

2.2.1. 方言の例
-----------

カーソル位置を指定するLOCATE文は、別の処理系ではCURSOR文
音楽を演奏するPLAY文、MUSIC文とそれらに記述されるMML
画面モードを指定するCONSOLE文
スプライト機能を使用する命令
VRAMと配列変数の内容をやりとりする命令
条件付きループを実現するWHILE〜WEND
GOTO, GOSUB文の飛び先を指定するラベル
CALL, CMD, SETなどで始まる命令文

2.2.2. メイン・メモリの制限による処理系の実装例
---------------------------

初期のTiny BASICはともかくとしても、BASIC実装処理系のメイン・メモリの制限により言語仕様が極めて制限された実装が存在した。

数値型は整数型のみ、また数値演算は整数演算のみう
変数名は頭文字1文字または2文字程度しか認識しない
文字列の長さが限られる
配列の大きさが限られる

2.2.3. 中間コードサイズを小さくしたり処理を速くする、機種依存性のあるテクニックの例
---------------------------------------------

処理プログラムの大きさや速度の制限を改善あるいは回避するテクニックを紹介する。いくつかは、ソースの読みやすさを犠牲にするようなテクニックでもあった。

プログラムの初めに全ての変数のデフォルトを整数だと宣言する。これはきちんと%などを付けて整数変数として書いてあるプログラムでは意味がないし、小数演算があるプログラムなのにこれを書くとまともに動かなくなる。整数の範囲の演算しかしていないが、%を付けずに書かれているプログラムを後から改善する場合だけに意味のあるテクニック。
命令を省略形で書くただし、中間コードを採用している処理系では、?と入力してもPRINTに展開されるので、結果は変わらない。また、REMを'と書くのはかえってサイズが増える。
余白やコメントを入れない
NEXTの変数名を省略する
一行に複数の文を詰め込んでを使用して行の制限一杯に命令文を詰め込む
よく使う変数は早めに確保する
よく呼び出すサブルーチンは先頭に配置する
キャラクタコードをバイナリと見立て、バイナリに相当するデータを直接プログラムに記述する

2.3. コンパイラ
----------

次のようなコンパイラがある。

//BASCOM//
MS-DOS用N88-BASICコンパイラ
F-BASIC386コンパイラ
MSXべーしっ君
実行ファイルは生成しない
X-BASICコンバーター
C言語に変換した上でのコンパイル
FreeBASICコンパイラ
フリーでGPL形式の80386向けコンパイラで、現代向けに多数の機能追加が行われているGUIアプリケーション開発やオブジェクト指向プログラミング機構の搭載、OpenGLやSDL等多数のライブラリを使用可能。}}が、QuickBASICとの互換性もある。しかし、パソコンに内蔵または標準添付されていたインタプリタと違い、コンパイラは別売であったり、高価であったり、実行にはランタイムライブラリを必要であったりする場合があった。このことから、BASICインタプリタによる開発に習熟したユーザーは、より高速で柔軟なプログラムを求めて、機械語や、C言語などに移行していった。

また、コンパイラと称していても、実際はインタプリタとソースコードを同梱した実行ファイルを作るだけ、というものもある。中間表現と、そのインタプリタ、という構成のものもある。

2.4. 行番号とGOTO文への批判
------------------

急速に広まったBASICだが、構造化機能の無いBASICは教育に使うな、などとコンピュータサイエンティストの一部から酷評されたりもした。1975年にはすでに、エドガー・ダイクストラから激しく批判された"How do we tell truths that might hurt?"などが知られる。

行番号とGOTO文は特に激しく批判された。BASICのIF文とGOTO文を組み合わせて使用する文を頻発せざるを得ず、IF + GOTO文を増やすほどスパゲティプログラムになってしまう、ということはしばしば指摘された。

さらにBASICには局所変数が無いなど、他にも問題は多い。つまり、プログラムのどこからでもアクセス可能な大域変数しかなく、これもまたスパゲティプログラムを誘発する要因である。

2.5. 「基本BASIC」という標準化、およびその失敗
----------------------------

BASICの標準化が望まれたが、マイコン・パソコンの急激な普及で標準化は後手後手にまわり、各メーカーの独自拡張はすでに各機種のROMに書き込まれているわけで後から書き換えるわけにもいかず、各メーカーは競合関係にあり自社のものを標準に採用して他社のものは排除してくれと考えるわけで、後手にまわってしまった標準化団体も一部のメーカーだけを優遇するわけにもいかず、ともかく後手にまわってしまった標準化というのは非常に難しいので、 結局、「どの機種のBASICでも、共通で使われている、ごく基本的な機能」に絞った小規模の仕様だけが「標準」として制定されるにとどまった。ANSI X3.60-1978「American National Standard for the Programming Language Minimal BASIC」は、日本では JIS C 6207-1982「電子計算機プログラム言語 基本BASIC」として規格化された。制定直後にJISの分類の再編があり、電気電子のCから情報のXに移動してJIS X 3003となったが、次節のFull BASICのJIS化の際に改訂として同じ番号を使うという形で旧規格として消滅した。

すでに多数の重要な機能は、各機種のBASICの「方言」として実装されてしまっていて後からそれを削るわけにもいかず、基本以外の高度な部分の標準化はされず乱立状態は放置されたので、結局、各社は高度な機能は方言で実装しつづけたわけで、実際上はBASICの標準化は失敗したままに終わった。

日本では1990年代後半から、高等学校や大学入試センター試験の数学に、標準化された基本BASICの範囲で書かれたプログラミングが扱われるようになった。つまり、「基本BASIC」は実機では「有名無実」だが、試験問題に使うのに無難な題材として使われる。

2.6. 構造化BASIC
-------------

2.6.1. Full BASIC
-----------------

ダートマスBASICは、他のBASICとは異なって既に1970年代後半から構造化などが進んでおり、ANSIでは新しい規格の策定も進んでいたが、これをパソコン向けにアレンジしたTrue BASICが、1984年に開発された。構造化の他、行列演算の機能など、学術的な方面の拡張も特徴である。そしてTrue BASICとほぼ同一の構造化BASICであるFull BASICがISO/IEC 10279  がINCITS/ISO/IEC JTC 1によって1991年に規格化された。また日本でもJISによる翻訳として、JIS X 3003-1993『電子計算機プログラム言語 Full BASIC 』が1993年に規格化された。

Full BASICの主な特徴
構造化に対応する制御文を追加した
IF文が多行に渡るブロックIFも可能となった
LETを省略できないようにした
スコープの概念を取り入れた
外部副プログラムや外部関数の中でローカル変数が使用できるようになった
副プログラムと関数は戻り値を戻すかどうかで区別される
再帰処理の実装が容易になった
計算精度や丸めの方法を規定した
配列の添字を1から始めるようにした
行列演算機能
構文のアドホックな所などを極力排除した
予約語を極力少なくした
I/Oを直接操作するなどシステムに干渉する命令は持たないようにした
グラフィック命令を規定した。なお、 が、デフォルトでは、コンピュータ系に多い左上ではなく数学などで伝統的な左下である
Minimal BASICの上位互換である
パソコン向けのそれまでのBASICとは命令の互換性が低い
サブルーチンは規格として残ってはいるが、使用は推奨されない

2.6.2. QuickBASIC
-----------------

マイクロソフトはFull BASIC規格の策定には参加しなかったが、1985年にFull BASICに類した構造化や特徴を追加した独自規格のQuickBASICを発売した。これは自社のMS-DOS用のGW-BASICの上位互換で、コンパイラ並に動作を高速にした上にコンパイルもできるようにしたもので、Version4.5まで発売した後に1991年のVisual Basicへと繋がっていった。

QuickBASICとの互換性を考慮したフリーなBASICとしてQB64やFreeBASICがある。

2.6.3. Windowsの普及とVisual Basicの普及
---------------------------------

MS-DOS上で動作するGUI拡張環境として、1985年にMicrosoft Windows 1.0が登場し、のちに独立したオペレーティングシステム  としても普及を始めた。GUIオペレーティング環境はコンピュータの操作に直感性をもたらしたが、Windows上で動作するGUIアプリケーションソフトウェアは、ボタンのような画面上に表示された視覚的なGUI部品をユーザーがマウスで操作することに反応して動作する、イベント駆動型のプログラムである。Windowsアプリケーション向けのプログラミング言語や開発環境として、マイクロソフトはC/C++を用いた開発ツールだけでなく、構造化BASICを用いた開発ツールとして「Visual Basic」 も提供した。VBは前述のQuickBASICから発展したもので、Rapid Application Development  方式の本格的な統合開発環境  でもあり、生産性と直感性に優れていた。

Windows自体はC/C++を使って開発されており、マイクロソフトの開発エンジニアたちはC/C++に慣れていたわけだが、それでもBASICを見捨てることはしなかった。 もともとビル・ゲイツはAltair 8800向けのAltair BASICを最初の製品としてビジネスの道を切り開き、その後も多数の自社BASICを開発してマイクロソフトを大きくしたので、マイクロソフト社はBASICとともに大きくなってきたわけであり、簡単にBASICを捨ててしまうような選択はしなかったのである。また、マーケティング的に見てもこの判断は賢かった。既存ユーザが受け入れやすい選択肢を提供することで、ユーザが他社に逃げてしまうことを防いだわけである。

Visual Basicでは、業務用のソフトウェア、プロフェッショナル用のソフトウェアなども多数開発されるようになった。Visual Basicは旧BASICとは異なり、もはや「初心者用」でも「ホビー用」でもなかった。C言語やC++同様に、プロでもその気になればまともに使える言語になったのである。なお、C/C++は言語仕様上、そもそもGUIプログラミングや統合開発環境との親和性、コンパイル速度などに問題があった。プロパティなどの便利な機能をサポートし、またシンプルな言語仕様を持つVBのほうがGUIプログラミングに向いていた、という側面もある。VBは後発のDelphiやC++Builderの設計思想にも影響を与えている。

また、「PC/AT互換機とWindowsの組み合わせ」というプラットフォームが一般化したことで、1970年代や1980年代には起きていた「BASICの方言の乱立」の問題が解消されていくことになった。Windowsが走るマシンであれば、どのメーカーが製造したパソコンであろうが、MicrosoftのVisual Basicが「標準的なBasic」という位置づけになっていき、いわば「標準語」のようなものがひとつに定まったのである。ただしVisual Basicは、Windowsというプラットフォームに依存する言語、開発環境にすぎなかった。Windows以外のMacintoshやLinuxといったプラットフォームでは使えないものであった。

なお、VBのサブセットであり、アプリケーションを制御するためのドメイン固有言語・マクロ記述言語としてVisual Basic for Applications  も登場し、主にMicrosoft Office  向けに提供されている。Officeに統合開発環境が標準的に組み込まれており、専業のアプリケーション開発者以外の一般ユーザーにも利用可能であることからエンドユーザー・コンピューティングの普及に寄与し、事務作業の効率アップやプログラミングの入門にも使われることになり、入門者をプログラミングの世界にいざなう役割も担った。ただし、VBAのマクロ機能を悪用したコンピュータウイルスも出現し、利便性と引き換えにセキュリティホールの温床にもなったことから、Office 2007以降の既定のファイル形式ではVBAは使えなくなっており、また既定でVBAは無効化されている。

VBから発展したVB.NETは、C#とともに登場したモダンなオブジェクト指向言語であり、アプリケーションの開発および実行に.NET Framework環境を必要とする。のちにMonoや.NET Coreにも移植され、WindowsだけでなくLinuxやmacOSでも利用可能なクロスプラットフォームな言語となった。Xamarinを利用することでAndroidやiOSで動作するアプリケーションも開発することができる。

地位の低下だが大学ではBASICの使用は構造化BASICも含めて減っていった。大学では、構造化言語の中でも、特定メーカーに依存せずプラットフォームを超えて使え、方言が乱立しなかったC言語を教えることが一般化した。また、特定のOSやCPUアーキテクチャに依存せず、無料で使えるJavaなどの洗練された後発言語の普及により、BASICは開発環境としては選択肢のひとつでしかなくなっていった。

なお、コンパイラで開発した場合、実行ファイルとは別に、巨大なランタイムライブラリが必要となる処理系が多い。このため配布に必要なファイルのサイズが大きくなり、敬遠されることもある。

もともとVB.NETは姉妹言語のC#やF#と比べて、新しい言語機能のサポートが遅れる傾向にあったが、マイクロソフトは2023年2月、VB.NETには今後新しい言語構文を追加せず、安定性に重きを置く方針であることを発表した。VB.NETのサポート自体は継続されるが、言語の進化は止まっている。

プログラミング言語の人気度  を示す指標のひとつとしてTIOBEインデックスが存在する。この指標は実際の言語利用状況とはやや異なるが、2023年9月現在、PythonやC系統の言語が上位を独占する中、Visual Basicは一定の地位を維持している。TIOBEが発表した2021年11月のランキングでは、トップ10は上から順に、Python、C、Java、C++、C#、Visual Basic、JavaScript、アセンブリ言語、 SQL、PHPとなっていて、つまり2021年11月時点でVisual Basicは6位だった。一方、RedMonkによる2021年6月のランキングでは、VBは20位以内にも入っておらず圏外だった。

2.7. その他の現代化BASIC
-----------------

十進BASIC - 日本人数学者が開発した数値計算用FullBASIC

2.7.1. RATBAS
-------------

構造化ということを意識していなかったパソコン用のROM/Disk-Basic環境で、構造化プログラムを記述するために作られたプリプロセッサである。アスキーの書籍の形で、1985年に公開された。これは、独自の構造化された構文で記述されたソースプログラムを処理し、行番号やGOTO文を使うROM/Disk-Basicに変換するプログラムで、すべてBasicで記述されていた。RATBASという名前は構造化FortranのRatforなどに倣ったものである。RATBASは、スタンドアローンのBasicプログラムと、μ-UXの外部コマンドとして作成されたサブセット版がある。μ-UXとは、年刊AhSKI!の1984年号に掲載された、Disk-Basicで記述されたUnix風のオペレーティング環境であるUni+を拡張したものである。

2.7.2. その他
----------

海外ではボーランドが独自にALGOL風の拡張を施したTurbo Basicを発売した。

2.8. オブジェクト指向とBASIC
-------------------

date=2023-09、BASICもオブジェクト指向化が見受けられる。その代表例がVisual Basic .NETやREALbasicやActiveBasicやFreeBASIC等で、四者とも既に完全なオブジェクト指向言語になっていると言える。

3. 構造化以前のBASIC
--------------

構造化以前のBASICは、行番号とGOTO文があることが特徴のひとつである。

3.1. ステートメントとコマンド
-----------------

BASICのエッセンスを説明し簡単なプログラム例を示すために、BASICのステートメントとコマンドについて説明する。 本来のBASIC、ダートマスBASICではステートメントとコマンドを明確に区別する。ダートマスBASICのルールを説明する。

行番号を持ち、プログラム本文の中に書かれるコード行はステートメントと呼ぶ。

たとえば次のようなキーワードから始まるものがステートメントである。
PRINT - 出力する。たとえば「PRINT A」と書くと、変数 A の値を画面などに出力する。
FORとNEXT - 両者を前後に組み合わせて使うことで、FORの文からNEXTの文までがループとなる。
GOTO - 「GOTO 」という書式で、指定された行番号へジャンプする。
GOSUBおよびRETURN - 「GOSUB + 」という書式。GOSUB文で指定された行番号へジャンプするが、ジャンプ先で行番号の順に実行していき、RETURNというワードに到達するとジャンプ元の位置に戻る。
END - ダートマスBASICではプログラムの最終行に書かなければいけない。処理系に指示を与えるワードはコマンドと呼ぶ。

たとえば次のようなワードである。
RUN - プログラムを実行する。
LIST - プログラムを行番号の小さいほうから順に、リスト状に画面に表示する。
SAVE - 現在のプログラムをストレージに保存する。

3.2. プログラム例、実行法、出力例
-------------------

きわめてシンプルな例を挙げる。

画面に次のように入力したとする。 10 REM 5つ数える 20 FOR I = 1 TO 5 30 PRINT I 40 NEXT するとBASICの処理系は、行番号10から40までの文をプログラムとして扱う。次にRUNと入力しリターンキーなどを押すと、行番号10の行すなわち「10 REM 5つ数える」から順に実行され、行番号20から行番号40まではループとして扱い5回繰り返す。この場合の出力は次のとおり。 1 2 3 4 5

なお、「REM」はステートメントであり、ソースコードを読む人のための注釈文の文頭に置かれる。REMで始まる行はプログラムの実行結果に何ら影響を与えない。

また、前述のプログラムに編集を加えたい場合は、続いて例えば次のように入力する。 10 REM 5つ数える 25 IF I = 3 THEN GOTO 40 このように入力すると、行番号10の文は書き換えられ、20行目と30行目の間に行番号25の「 25 IF I = 3 THEN GOTO 40」が挿入された、とBASICの処理系は判断する。 そしてRUNと入力すると、やはり行番号10から実行し、出力は次のとおり。 1 2 4 5

3.3. 主な特徴
---------

高水準言語である。
BASICはFORTRANの影響を受けており、いくつか似た特徴がある。ALGOLを始祖とするPascalやC言語とは系統が大きく異なる。ただし、演算子のスタイルや、大文字と小文字を区別しないなどの点で、Pascalとの類似性は見られる。
ダートマスBASICはコンパイラだが、他のBASICはインタプリタとして実装された処理系が多い。
構造化以前のBASICでは、すべての行頭に行番号を必要とする。
基本的に先頭行から1行ずつ実行される。
GOTO文があると、で指定された行番号にジャンプしてその行を実行する。たとえば「GOTO 250」と書かれていたら、行番号250にジャンプする。行番号は、テレタイプ端末時代に処理系と一体の行指向テキストエディタで扱うのに便利であったので採用されてしまった。ジャンプ先をただの数字で示すので、ある程度以上の行数を書くとGOTO文が増え、直観的には分かりづらい行だらけになる。アルファベットなども使って意味付けされた単語で行き先を指定するジャンプではないので、一行ずつ焦点を当てると、どういう意図で書かれたコードなのかが不明瞭な行ばかりになってしまう。また、通常ある程度以上の規模のプログラムは分岐判断が多数含まれるので、IFとGOTOを組み合わせた文を多数使うことになり、ある程度の行数以上のプログラムを書くとスパゲティプログラムになりやすい。だがdate=2023-09でも互換性のために両者を残している処理系もある。ラベルを用いて「GOTO *LABEL」のように指定できる実装もある。
プログラム中の予約語にはステートメントやコマンドの他に関数がある。それらと同じ文字並びを変数名として使うことはできない。
文字列変数の内容等を除いて、大文字と小文字を区別しない。入力の時点で全て大文字に変換される処理系もあった。
算術演算子以外の記号は極力使わない。論理演算子はAND、OR、XOR、NOTである。括弧は演算の優先順位も、サブルーチンの引数も、配列もすべて「」のみを用いる。ブロックも「{}」のような括弧ではなく「FOR文からNEXT文までの間」といった構文により指定する。
代入と比較はどちらも「=」である。代入はLET文とするのが本来の書式だが、キーワード「LET」を省略した構文も許される方言ばかりになったので、結局「A = 1」のような、代入文なのか比較文なのか見た目の印象が非常に紛らわしいものばかりになり、バグ頻発の原因ともなった。
明示的な変数宣言を必要とせず、変数を使用し始めたところで宣言したものと解釈される。
使ったことのない変数を使うと変数が作られ、また中身は自動的に初期化される。
ファーストクラスの型は数値型と文字列型である。数値は浮動小数点数だけのものもあるが、整数型などがあるものもある。文字列型の変数名は末尾に「$」を付ける、といった規則のものもある。
LEFT$, MID$, RIGHT$など、文字列操作関数もそれなりの数備えていることが多い。
編集環境を兼ねたコマンドラインインタプリタを持つものもある。

4. 具体例
------

4.1. Web上で動くBASIC
-----------------

Webブラウザ上でBASICの動作をエミュレートするWebサイト・Webサービスが公開されている。手軽に最低限の雰囲気を理解することができる。

[1]  - ブラウザ上でBASICコードを書いてWeb上で実行できるサービス
[2]  - N88-BASICのように利用可能なBASICコード実行サービス。Web上で動作し、サイトの外観も当時のN88-BASICさながらである。

4.2. 構造化以前のBASICの具体的実装例
-----------------------

構造化以前のBASICが動作していたコンピュータ実機の新品販売は、ほとんどは終了となっている。そのためインターネットオークションなどを利用して、中古品を入手するしかない。

4.2.1. 各組織、各社のBASIC
-------------------

ダートマスBASIC
BASIC-PLUS
Tiny BASIC
Apple 6K BASIC 別名Integer BASIC
Level I BASIC
Commodore BASIC - コモドールPET 2001に搭載されていたBASIC以下、シャープのBASICは「コモドール系」と呼ぶことも可能ではある
S-BASIC -