BASIC)は、プログラミング言語BASICの元祖となった処理系である。ダートマス大学で設計・実装されたため、そのように呼ばれている。一部として設計した言語であり、対話的な使用を意図した初期のプログラミング言語の1つである。言語は、コンパイラがオンメモリで動作し、1パスでコンパイルできるよう設計された[1]。即座に実行されるので、使い勝手としてはインタプリタ的であったとも言える。ダートマスにて数年間に渡っていくつかのバージョンが生み出された。最初のコンパイラはタイムシェアリングシステムが運用可能となる以前に完成した。これはCardBASICと呼ばれ、パンチカードで入力する標準的なバッチ処理で使用した。その後のバージョンと同様、ケメニーとカーツが指導する学部学生のチームが実装した。最初の対話型バージョンが一般ユーザーに使えるようになったのは1964年6月のことである。その後第2版は1964年10月、第3版は1966年、第4版は1969年、第5版は1970年、第6版は1971年、第7版は1979年にリリースされた。開発は並行して行われ、最初のBASIC処理系は1964年初めごろバッチ処理内で動作するものとして書かれた。対話型バージョンは、1964年5月1日午前4時(ET)、ジョン・ケメニーとジョン・マクゲシーがDTSSの端末からBASICプログラムを実行することに成功した[2]。最初のプログラムがどのようなものだったかは完全に明確にはなっていない。2という1行のプログラムだったという説と[2]、エラトステネスの篩を実装したものだったという説(1974年のケメニーとマクゲシーのインタビュー[要出典])がある。第2版では大きな変更は加えられていない。PRINT文のセミコロンによる列区切りと配列の添え字のゼロ使用が加えられた[要出典]。第3版では、INPUT文による端末からのデータ入力と、強力なMAT文による行列演算機能、RESTORE文でREAD/DATA文のデータ読み出しを先頭に戻す機能が追加された。第4版では文字列操作機能と文字列変数が導入され、第5版ではファイル操作機能が追加された。60年代末ごろ、ゼネラル・エレクトリック版のBASIC(DTSSプロジェクトで使用していたのがGEのハードウェアだった関係で、GEは初期のBASICの利用者となっていた)がダートマスBASICから離れ、広まっていった[3]。1970年代[編集]71年9月の[4]第6版では、引数のあるプロシージャを個別にコンパイル可能とし、この版を元に、次に述べるSBASICなど、様々なBASICが派生していった。1976年、スティーブ・ガーランドが構造化プログラミング機能を追加すべく、構造化構文を追加したSBASICを設計した。SBASICは、第6版ダートマスBASICのソースコードを生成するプリコンパイラとして実装された。1979年、ケメニーとカーツがダートマスBASICとして最後の版となった第7版をリリースした。BASICの標準化は遅れたため、実際には標準化と同時進行)。実装であり、対話型のコマンドラインインタフェースである。明示的なログアウトは不要で、短時間でもユーザーが応答しないと自動的にログアウトされる。ユーザーが何かを入力する場合、行番号を先頭に書けば、その行はプログラムに追加され、同じ行番号の行が既に存在する場合はその内容を置換する。行番号のない入力はコマンドと解釈され、即座に実行される。行番号だけを入力すると、同じ行番号がプログラムに既に存在すれば、その行を削除する。このような編集方式になっていたのは、DTSSで使用する端末がテレタイプ端末だったためである。次のようなコマンドがあった。ダートマスBASICでは、行番号をともなってプログラム中に書くものは「文(ステートメント)」(後述)、対話型環境に入力し即座に実行されるものは「命令(コマンド)」と、明確に区別されていたが、この区分は後のインタプリタにおいて完全に曖昧になった。DTSSにログインする。DTSSからログオフする。BASICモードを開始する。プログラム名を指定して、新規にプログラムを書き始める。名前を指定して既存のプログラムをストレージから取り出す。現在のプログラムを表示する。現在のプログラムをストレージにセーブする。現在のプログラムをストレージから消去する。ストレージ内にあるプログラム名を一覧表示する。名前はそのままで現在のプログラムの内容を消去する。内容を消去せずに現在のプログラムの名前だけ変更する。現在のプログラムを実行する。実行中のプログラムを中断する。(explain)、すなわちヘルプ機能。システムが説明可能なコマンド一覧を表示する。多くのユーザーはこれらのコマンドをBASIC言語の一部と思い込んでいた。実際に一部のコマンドはBASIC専用だが、システムとしてはタイムシェアリングシステム(DTSS)の一部であり、ALGOLやFORTRANのプログラムを使用する場合にもこれらのコマンドが使われた。言語[編集]最初の対話型バージョンでは、次のような機能を実装していた。文の一覧[編集]次のような文(ステートメント)があった。1行の関数を定義する。(dimensionの略で)配列の大きさを定義する。プログラムの終りを定義する。ENDに到達する前にプログラムを停止させる。