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