ダートマスBASIC

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