BASIC(ベーシック)は手続き型プログラミング言語のひとつ。
名前は「beginners' all-purpose symbolic instruction code」のバクロニムである。日本語では「初心者向け汎用記号命令コード」を意味する。
誕生したのが1964年であり、当時普及していたプログラミング言語FORTRANにいくつかの点で似ている。構文は、FORTRANの文法が基になっているとしばしば解説されている。
BASICはインタープリタ方式で動くものと、コンパイラ方式で動くものに大別できる。現時点[いつ?]では、構文の様式が大きく異なる2種類のBASICが存在している。構造化前のBASICと、構造化後のBASICである。
したがって両者はかなり異なっており、明確に区別して論じる必要がある。
構造化以前のBASICの行番号とGOTO文については、基本的な例を示しつつ#構造化以前のBASICの節で解説する。また、BASICの基本的な予約語や、ステートメントとコマンドの区別(ステートメントはPRINT, FOR NEXT, IFなど、コマンドはRUN, LIST, SAVEなど)についても、同節で解説する。
最初のBASICは、1964年、米国ダートマス大学で、数学者ジョン・ケメニー(1926年-1992年)とトーマス・カーツ(1928年 - )がもともと教育目的を想定して開発したものである。このBASICを「ダートマスBASIC」という。行番号の使用や構文は、当時主流だった言語FORTRANの影響を受けている。彼らはこれで金儲けをする気はなく特許なども取得せず、今風に言うと「パブリックドメイン」のようなものにしようと考えていたので普及することになった。このダートマスBASICはコンパイラだった。BASICはGEとの提携を経て大学の外にも普及していくことになり、1970年代後半や1980年代のマイコン、パーソナルコンピュータなどの多くの機種で次々と採用され、普及していった。1970年代後半~1980年代のBASICのほとんどはインタプリタ方式でマザーボード上のROM(Read Only Memory)にあらかじめ書き込まれた状態で供給されていた。一部のBASICはインタプリタ方式でもROMに書き込まれておらず補助記憶装置から読み込まれたり(たとえば日本ではシャープのMZ-80シリーズなど)、あるいはコンパイラ方式のBASICで高速で実行できるものも開発・供給された。
1964年、米国ダートマス大学にて、数学者ジョン・ケメニー(1926年-1992年)とトーマス・カーツ(1928年 - )により、教育用などを目的としてダートマスBASICが開発された。これは同時期にともに開発された、タイムシェアリングシステムDTSS上のラインエディタ(テレタイプ端末環境)で利用されるよう設計されていた。[2]
BASICは、GEとの提携を経て、学外にも普及した。ダートマス大学のオリジナルはコンパイラだったが、パソコンなどの商用版では基本機能を最小限にしたうえでインタプリタとして実装されることが多く、独自の発展を遂げた。
詳しく説明すると、もっとも初期に使用したのはゼネラル・エレクトリック(GE)であり、GEはGE-225というマシンをダートマス大学に納入していたのである[3]。
BASICの方言(異仕様)は、1970年ころ、GEがBASICの第4版を使っているころに現れ始めた[3]。新しいバージョンを待たず、ver.5を用いたマシンをGEがリリースしたころからである[3]。ダートマス大のケメニーとカーツの2人が「BASIC the Sixth(BASIC 第六版)」をリリースした1年後くらいに、ズレが生じはじめた[3]。当時のBASICの異バージョンはGordon Eubanks(シマンテック社のCEO)によるもので[3]、彼は1970年にBASIC-Cを開発した[3]。(なお、BASIC-Eは現在のJavaのような技術を用いており、命令文は一種の中間コードに変換された後に機械語に変換されるものである。[3])Eubanksも彼の開発したBASIC-Eについては(ダートマス大の2人同様に)法的に保護せず[3]、次のCBASICでそのような措置をとった[3]。CBASICは彼の会社 Compiler Systems社から販売された[3]。あまりにも次々とBASICの異バージョンが現れるので[3]、ANSIも1974年にBASICの標準化の必要性を感じ始めた[3]。ANSI内に標準化委員会が立ちあがり、BASICの2つの標準、つまり当時その委員会で「ミニマルBASIC(minimal BASIC)」つまり最小のBASICと呼ばれたものと[3]、もう一方は「スタンダード BASIC(Standard BASIC)」と呼ばれたものを作成しようと取り組んだ[3]。だがBASICの標準化は難しく、その委員会が長年かけて「標準化」の仕事をやっと完了したころには、とうにBASICは世界中で(さまざまな機種で、異仕様で、とっくにROMなどに実装されて)広く使われてしまっていた。そのようなわけで、(実際上)標準BASIC(Standard BASIC)というものは現れないことになったのである[3]。
史上初の市販のパーソナルコンピュータとされているのはMITS社のAltair 8800であり、1975年、このAltair 8800向けにハーバード大のビル・ゲイツ、ポール・アレン、モンティ・ダヴィドゥフの3人が(マイクロソフトという設立したての法人の名のもとに)Altair BASICを開発し、MITS社との契約のもと配布された。1976年4月11日にはスティーブ・ウォズニアックによって開発されたパーソナルコンピュータ・キットApple Iがアップル社から発売され、このマシンのために同じくウォズニアックが開発したen:Integer BASICが供給され(当初はデータレコーダのカセットテープの形で供給され、後にApple IIが発売されてからROM版も供給された)、翌1977年6月にはキットタイプではない完成品タイプのApple IIが発売となり、それにもやはりINTEGER BASICが、だが今度は最初からROMに書き込まれた形で搭載された。
1970年代末から1980年代初頭にかけての一時期は、少数のエレクトロニクス好きのホビースト(趣味的にやっている人々)たちは、8ビットCPUのコンピュータをキットなどから自作しその上でTiny BASICを動かしたり、その上でスタートレックなどのゲームを動かすことなどを楽しんでいた。
だが大多数の人々はコンピュータを実務に使いたいと感じており、キットではなく最初から完成品の、動作することが確実なコンピュータを求めていた。メーカー側はそうした要望に応えてターンキーシステム(キット品ではない、最初から動く完成品)を開発しそれにBASICインタプリタをROMに書き込んだ形で搭載するようになり、BASICは一気に当時のマイクロコンピュータ(パーソナルコンピュータ)の標準言語の地位を獲得した。この時に搭載されたBASICインタプリタはほとんどがマイクロソフト製で、同社躍進のきっかけとなった。また、マイクロソフト製BASICは中間コードを使用する構造になっており、汎用機を再現した極めてエミュレータに近いランタイム形式の実行環境でもあったため、当時の互換性が皆無なコンピュータ事情の中でも、スクリプト自体の移植は容易だった。
その後、(MS-DOS発表以前の)パソコンに、操作を提供するのにも使われ、しばしばROM-BASICとしてハードウェアに組み込まれた。電源投入後にエディタ込みで利用できることから、現在における、シェル、インタフェースとしての役割ももち、ローダなどの役割も担った。入力の効率化のため、省略形式での入力や、1980年代後半には、ラベル、インデントへの内部的な対応、C言語への橋渡し、日本では漢字の利用など、様々な機種ごとの独自の発展を遂げた。当時のPCの処理速度は遅いので、処理の高速化が必要な部分はデータ形式でアセンブリ言語による処理を呼び出すなどの手法もとられた。
1980年代後半から1990年代前半ころにはC言語がパーソナルコンピュータのユーザにも少しずつ知られるようになり、早く知り、早くCコンパイラを入手した人から順に、(構造化以前の)BASICの代わりにC言語を使うことが増えていった。
一方で1990年代などでもプログラミングの専門家ではない数学者が、あいかわらず行番号を使用する数値計算用のBASICを開発するなどということ(UBASIC)も行われつづけた。
BASICは1970年代後半から1980年代にかけて、当時黎明期にあり、次々と各社が製造に乗り出したパーソナルコンピュータ(マイクロコンピュータ)の各機種に続々と搭載されていくことになり、パーソナルコンピュータ業界の発展にも貢献した。
だが、前述の「標準化できなかった経緯」の節で説明したように、BASICを最初に開発したダートマス大の2人は今で言う「パブリックドメイン」でいいと漠然と考えていて(つまり、うかつなことに、権利を確保しておいて世の中のBASICの仕様をコントロールしようともせず)、また標準化団体のANSIも後手にまわってしまったので、BASICには「方言」が乱立する状況になってしまった。(関係者を弁護するなら、最初から標準化をしておかないと普及していくプログラミング言語に一体どのようなことが起きてしまうかということについて、開発者の2人や当時のANSIに限らず、当時はまだ誰も経験しておらず、そもそも誰にも用心・警戒心が無かった。)
マイクロコンピュータやパーソナルコンピュータに標準搭載されたBASICは、たいてい各メーカーのひとつひとつの機種ごとに独自拡張が行われた(おもに画面操作やI/Oの直接操作などについて、その機種でしか通用しない、独自の仕様が次々と導入された)。コモドール社のPET 2001のCommodore BASICに類似したシャープのS-BASIC、SEGAのベーシックカートリッジ、次第にシェアを増やしたマイクロソフト製のBASIC(MBASIC、BASICA、G-BASIC、GW-BASICの移植版)や、その命令体系を引き継ぎ実装したものである、F-BASIC、Hu-BASIC、カタカナで表現するG-BASIC(前述のマイクロソフトの物とは異なる)以外にも、C言語を意識したX-BASICなど、さまざまなBASICを各社が独自に開発した。
この結果、「あるパソコンのBASICで書かれたプログラムは、他のパソコンではそのままでは動かすことができない」という、残念な状態になってしまった。たとえBASICの開発会社が同じでも、別の機種では動かない状況になってしまったのである。BASICを用いていては、開発者はせっかく苦労してコンピュータプログラムを開発しても、たいていはわずか1機種でしか動かず、また企業がソフトウェアをビジネス目的で開発・販売しようとする場合でもBASICでプログラムを開発しては、わずか1機種のユーザにしか売れず、それではあまり儲からないので、はじめから開発を躊躇しがちになる、という状況だったのである。
プログラミング言語で最初から標準化をしておかないと、どのような残念な状況になってしまうか、ということを人類は初めて経験したわけで、BASICで得られた苦い教訓が、後に開発されるさまざまな高級言語で活かされていくことになり、プログラミング言語で「方言」が乱立しないようにし、機種を超えてひとつのコンピュータプログラムが使えるようにする施策、「プラットフォーム・フリー」戦略へと繋がっていくことになる。[独自研究?]
LOCATE
文は、別の処理系ではCURSOR
文PLAY
文、MUSIC
文とそれらに記述されるMMLCONSOLE
文WHILE
〜WEND
GOTO
, GOSUB
文の飛び先を指定するラベルCALL
, CMD
, SET
などで始まる命令文初期のTiny BASICはともかくとしても、BASIC実装処理系のメイン・メモリの制限により言語仕様が極めて制限された実装が存在した。
処理プログラムの大きさや速度の制限を改善あるいは回避するテクニックを紹介する。いくつかは、ソースの読みやすさを犠牲にするようなテクニックでもあった。
DEFINT A-Z
)。これはきちんと%などを付けて整数変数として書いてあるプログラムでは意味がないし、小数演算があるプログラムなのにこれを書くとまともに動かなくなる。整数の範囲の演算しかしていないが、%を付けずに書かれているプログラムを後から改善する場合だけに意味のあるテクニック。PRINT
→?
、LET A=B
→A=B
、REM
→'
など)?
と入力してもPRINT
に展開されるので、結果は変わらない。また、REM
を'
と書くのはかえってサイズが増える。NEXT
の変数名を省略する(可能な処理系のみ)GOTO
/GOSUB
命令のオペランドを内部で行番号からメモリアドレスに書き換える処理系ではあまり効果がない)次のようなコンパイラがある。
しかし、パソコンに内蔵または標準添付されていたインタプリタと違い、コンパイラは別売であったり、高価であったり、実行にはランタイムライブラリを必要であったりする場合があった。このことから、BASICインタプリタによる開発に習熟したユーザーは、より高速で柔軟なプログラムを求めて、機械語(アセンブリ言語)や、C言語などに移行していった。
また、コンパイラと称していても、実際はインタプリタとソースコードを同梱した実行ファイルを作るだけ、というものもある。中間表現と、そのインタプリタ、という構成のものもある。
急速に広まったBASICだが、構造化機能の無いBASICは教育に使うな、などとコンピュータサイエンティストの一部から酷評されたりもした。1975年にはすでに、エドガー・ダイクストラから激しく批判された"How do we tell truths that might hurt?"などが知られる。
行番号とGOTO文は特に激しく批判された。(構造化前の)BASICのIF文とGOTO文を組み合わせて使用する文(「IF .... THEN GOTO ...」)を頻発せざるを得ず、IF + GOTO文を増やすほどスパゲティプログラムになってしまう、ということはしばしば指摘された。
さらに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」は実機では「有名無実」だが、(特定メーカーに依らないので)試験問題に使うのに無難な題材として使われる。
ダートマスBASICは、他のBASIC(ケメニーらは「ストリート」BASIC、と呼んだ[注釈 2])とは異なって既に1970年代後半から構造化などが進んでおり、ANSIでは新しい規格の策定も進んでいたが、これをパソコン向けにアレンジしたTrue BASICが、1984年に開発された(日本ではクレオから発売)。構造化の他、行列演算の機能など、学術的(特に数学的)な方面の拡張も特徴である。そしてTrue BASICとほぼ同一の構造化BASICであるFull BASICがISO/IEC 10279 (Information technology−Programming languages−Full BASIC) がINCITS/ISO/IEC JTC 1によって1991年に規格化された。また日本でもJISによる翻訳として、JIS X 3003-1993『電子計算機プログラム言語 Full BASIC (The Programming Language Full BASIC)』が1993年に規格化された。
DO
〜LOOP
、DO WHILE
〜LOOP WHILE
など)IF
文が多行に渡るブロックIF
(IF
〜THEN
〜ELSE
〜ENDIF
)も可能となったLET
を省略できないようにした(True BASICではOPTION NOLET
またはNOLET
を実行すると省略可能)OPTION BASE
命令で0から始まるようにすることも可能)GOSUB
〜RETURN
)は規格として残ってはいるが、使用は推奨されないマイクロソフトはFull BASIC規格の策定には参加しなかったが、1985年にFull BASICに類した構造化や特徴を追加した独自規格のQuickBASICを発売した。これは自社のMS-DOS用のGW-BASICの上位互換で、コンパイラ並に動作を高速にした上にコンパイルもできるようにしたもので、Version4.5まで発売した後に1991年のVisual Basicへと繋がっていった。
QuickBASICとの互換性を考慮したフリーなBASICとしてQB64やFreeBASICがある。
MS-DOS上で動作するGUI拡張環境として、1985年にMicrosoft Windows 1.0が登場し、のちに独立したオペレーティングシステム (OS) としても普及を始めた。GUIオペレーティング環境はコンピュータの操作に直感性をもたらしたが、Windows上で動作するGUIアプリケーションソフトウェアは、ボタンのような画面上に表示された視覚的なGUI部品(ウィジェット、コントロール)をユーザーがマウスで操作することに反応して動作する、イベント駆動型のプログラムである。Windowsアプリケーション向けのプログラミング言語や開発環境として、マイクロソフトはC/C++を用いた開発ツール(Microsoft C/C++、のちのMicrosoft Visual C++)だけでなく、構造化BASICを用いた開発ツールとして「Visual Basic」(VB) も提供した。VBは前述のQuickBASICから発展したもので、Rapid Application Development (RAD) 方式の本格的な統合開発環境 (IDE) でもあり、生産性と直感性に優れていた。
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 (VBA) も登場し、主にMicrosoft Office (MS Office) 向けに提供されている。Officeに統合開発環境が標準的に組み込まれており、専業のアプリケーション開発者以外の一般ユーザーにも利用可能であることからエンドユーザー・コンピューティングの普及に寄与し、事務作業の効率アップやプログラミングの入門にも使われることになり、入門者をプログラミングの世界にいざなう役割も担った。ただし、VBAのマクロ機能を悪用したコンピュータウイルスも出現し、利便性と引き換えにセキュリティホールの温床にもなったことから、Office 2007以降の既定のファイル形式ではVBAは使えなくなっており、また既定でVBAは無効化されている。
VBから発展したVB.NETは、C#とともに登場したモダンなオブジェクト指向言語であり、アプリケーションの開発および実行に.NET Framework環境を必要とする。のちにMonoや.NET Coreにも移植され、WindowsだけでなくLinuxやmacOSでも利用可能なクロスプラットフォームな言語となった。Xamarinを利用することでAndroidやiOSで動作するアプリケーションも開発することができる[5][6]。
だが大学ではBASICの使用は構造化BASICも含めて減っていった。大学では、構造化言語の中でも、特定メーカーに依存せずプラットフォームを超えて使え、方言が乱立しなかったC言語を教えることが一般化した。また、特定のOSやCPUアーキテクチャに依存せず、無料で使えるJavaなどの洗練された後発言語の普及により、BASICは開発環境としては選択肢のひとつでしかなくなっていった。
なお、コンパイラで開発した場合、実行ファイルとは別に、巨大なランタイムライブラリが必要となる処理系が多い。このため配布に必要なファイルのサイズが大きくなり、敬遠されることもある。
もともとVB.NETは姉妹言語のC#やF#と比べて、新しい言語機能のサポートが遅れる傾向にあったが、マイクロソフトは2023年2月、VB.NETには今後新しい言語構文を追加せず、安定性に重きを置く方針であることを発表した[7]。VB.NETのサポート自体は継続されるが、言語の進化は止まっている。
プログラミング言語の人気度 (popularity) を示す指標のひとつとしてTIOBEインデックスが存在する。この指標は実際の言語利用状況とはやや異なるが、2023年9月現在、PythonやC系統の言語が上位を独占する中、Visual Basicは一定の地位を維持している[8]。TIOBEが発表した2021年11月のランキングでは、トップ10は上から順に、Python、C、Java、C++、C#、Visual Basic、JavaScript、アセンブリ言語、 SQL、PHPとなっていて[9]、つまり2021年11月時点でVisual Basicは6位だった。一方、RedMonkによる2021年6月のランキングでは、VBは20位以内にも入っておらず圏外だった[10]。
構造化ということを意識していなかったパソコン用のROM/Disk-Basic環境で、構造化プログラムを記述するために作られたプリプロセッサである。アスキーの書籍の形(アスキー書籍編集部編著「構造化BASIC RATBASのすすめ」 (ISBN 978-4-87148-152-6) )で、1985年に公開された。これは、独自の構造化された構文で記述されたソースプログラムを処理し、行番号やGOTO文を使うROM/Disk-Basicに変換するプログラムで、すべてBasicで記述されていた。RATBASという名前は構造化FortranのRatforなどに倣ったものである。RATBASは、スタンドアローンのBasicプログラムと、μ-UXの外部コマンドとして作成されたサブセット版がある。μ-UXとは、年刊AhSKI!の1984年号に掲載された、Disk-Basicで記述されたUnix風のオペレーティング環境であるUni+を拡張したものである。
海外ではボーランドが独自にALGOL風の拡張を施したTurbo Basicを発売した。
現在[いつ?]、BASICもオブジェクト指向化が見受けられる。その代表例がVisual Basic .NETやREALbasicやActiveBasicやFreeBASIC等で、四者とも既に完全なオブジェクト指向言語になっていると言える。
パラダイム | 非構造化プログラミング、命令型プログラミング、手続き型プログラミング、オブジェクト指向プログラミング |
---|---|
登場時期 | 1964年4月1日 |
設計者 | John G. Kemeny・Thomas E. Kurtz |
開発者 | トーマス・E・カーツ、ジョン・ジョージ・ケメニー、メアリー・ケネス・ケラー |
主な処理系 |
ダートマスBASIC, Tiny BASIC, Microsoft BASIC, QuickBASIC, QB64, Casio Basic, Turbo Basic(PowerBASIC), Applesoft BASIC, Atari BASIC, BBC BASIC, Commodore BASIC, Liberty BASIC, Sinclair BASIC, TI-BASIC |
影響を受けた言語 | FORTRAN、FORTRAN II、JOSS、ALGOL |
影響を与えた言語 |
Visual Basic, Visual Basic .NET, Hot Soup Processor, COMAL, GRASS |
拡張子 | bas |
構造化以前のBASICは、行番号とGOTO文があることが特徴のひとつである。
BASICのエッセンスを説明し簡単なプログラム例を示すために、BASICのステートメントとコマンドについて説明する。 本来のBASIC、ダートマスBASICではステートメントとコマンドを明確に区別する。ダートマスBASICのルールを説明する[11]。
行番号を持ち、プログラム本文の中に書かれるコード行はステートメント(文、statement)と呼ぶ。
処理系に指示を与えるワード(プログラムの外の命令)はコマンド(命令、command)と呼ぶ。
きわめてシンプルな例を挙げる。
画面に次のように入力したとする。
10 REM 5つ数える
20 FOR I = 1 TO 5
30 PRINT I
40 NEXT
するとBASICの処理系は、行番号10から40までの文をプログラムとして扱う。次にRUN
と入力し(すると「40 NEXT」の次の行に「RUN」と表示され)リターンキーなどを押すと、行番号10の行すなわち「10 REM 5つ数える」から順に実行され、行番号20から行番号40まではループとして扱い5回繰り返す。この場合の出力は次のとおり。
1 2 3 4 5
なお、「REM」はステートメントであり、ソースコードを読む人のための注釈文(英: remark)の文頭に置かれる。REMで始まる行はプログラムの実行結果に何ら影響を与えない。
また、前述のプログラムに編集を加えたい場合は、続いて例えば次のように入力する。
10 REM 5つ数える(“3”だけ飛ばす)
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
AND
、OR
、XOR
、NOT
である。括弧は演算の優先順位も、サブルーチンの引数も、配列もすべて「()
」のみを用いる。ブロックも「{}
」のような括弧ではなく「FOR
文からNEXT
文までの間」といった構文により指定する。=
」である。代入はLET文(たとえば「LET A = 10」など)とするのが本来の書式だが、キーワード「LET」を省略した構文も許される方言ばかりになったので、結局「A = 1
」のような、代入文なのか比較文なのか見た目の印象が非常に紛らわしいものばかりになり、バグ頻発の原因ともなった。$
」を付ける、といった規則のものもある。Webブラウザ上でBASICの動作をエミュレートするWebサイト・Webサービスが公開されている。手軽に最低限の雰囲気を理解することができる。
構造化以前のBASICが動作していたコンピュータ実機の新品販売は、ほとんどは終了となっている。そのためインターネットオークションなどを利用して、中古品を入手するしかない。
すでに新品販売されていないゲーム機のBASICは以下のとおり。
最近[いつ?]、復刻パソコン、つまり1980年代などのパソコンが、ほぼ以前どおりのシステム内容で(しかも端子類はHDMIやUSBに変更されていたり、SDメモリカード用スロットなども追加されていたりするなど、最近[いつ?]の仕様に改良されて)、新品で販売されるようになっている。それらのほとんどでBASICが動き、ユーザはBASICプログラミングを楽しむことができる。
現在、新品で販売されているパソコン上で動くBASIC
Android OS上で動くBASIC、つまりAndroidスマートフォン群やAndroidタブレット群などで動くBASICは以下のとおり。
iOS上で動く(つまりiPhoneやiPadで動く)BASICは以下のとおり。
現在新品で販売されている(子供向けの)ゲーム機のBASIC