| パラダイム | 命令形、配列 |
|---|---|
| デザイン: | ジョン・G・ケメニー、トーマス・E・カーツ |
| 初登場 | 1964年 |
| OS | ダートマスタイムシェアリングシステム |
| 影響を受けた | |
| FORTRAN、アルゴル | |
| 影響を受けた | |
| BASIC方言一覧を参照 | |
ダートマス BASIC は、BASIC プログラミング言語のオリジナル バージョンです。ダートマス大学の 2 人の教授、ジョン G. ケメニーとトーマス E. カーツによって設計されました。基盤となるダートマス タイム シェアリング システム(DTSS) により、すべての学部生だけでなく、大学全体にインタラクティブなプログラミング環境を提供しました。
ダートマス大学では、学部生によって実装され、コンパイルして実行するシステムとして動作するいくつかのバージョンが開発されました。最初のバージョンは 1964 年 5 月 1 日に実行され、6 月に一般ユーザーに公開されました。その後アップグレードが行われ、1979 年に 7 番目で最後のリリースが発表されました。ダートマス大学では、 1975 年にStructured BASIC (またはSBASIC ) として知られる大幅に更新されたバージョンも導入され、さまざまな構造化プログラミングの概念が追加されました。SBASIC は、 1980 年代初頭の 米国規格協会(ANSI )標準のStandard BASIC の取り組みの基礎となりました。
BASIC のほとんどの方言は、第 4 版 (この第 4 版では、ほとんどの BASIC ユーザーが当然のように使用している文字列変数などが追加されましたが、オリジナルでは文字列を印刷できました) までその歴史を遡ることができますが、一般的に行列計算などの難解な機能は省略されています。ダートマス コンパイラとは対照的に、他のほとんどの BASIC はインタープリタとして作成されました。この決定により、初期のマイクロコンピュータの限られたメイン メモリ内で実行できました。Microsoft BASICはその一例で、わずか 4 KB のメモリで実行できるように設計されています。1980 年代初頭までに、数千万台の家庭用コンピュータでMS インタープリタの何らかのバリアントが実行されていました。これがBASIC の事実上の標準となり、ANSI SBASIC の取り組みは放棄されました。Kemeny と Kurtz は後に、 True BASICと呼ばれる SBASIC のバージョンを開発および推進する会社を設立しました。
初期のメインフレーム ゲームの多くは、ダートマス BASIC と DTSS システムに由来しています。これらのゲームの一部は、HP タイムシェア BASICバージョンで、People's Computer Company の書籍What to Do After You Hit Returnに収録されています。[1] BASIC Computer Gamesや関連作品の元のソース リストの多くも、ダートマス BASIC に由来しています。
開発の歴史
以前の作品
ジョン・G・ケメニーは1953年にダートマス大学の数学科に加わり、後に学科長となった。1956年に彼はMITのニューイングランド地域コンピュータセンターの活動を通じてIBM 704にアクセスした。その年、彼は数学演算のプログラミングを簡素化するアセンブラのバージョンであるDARSIMCO言語を書いた。彼はその年に学科に加わったトーマス・E・カーツの助けを受けた。 [2]
1957 年に最初のFORTRANコンパイラがマシンにインストールされたとき、DARSIMCO は忘れ去られました。FORTRAN の登場は重要な教訓を与えました。FORTRAN は遅いと教え込まれていた Kurtz は、704 アセンブラで数か月かけてプログラムを書きましたが、デバッグに CPU 時間で約 1 時間かかり、それでも実行できませんでした。諦めて FORTRAN で書き直し、5 分で実行できるようになりました。この教訓は、測定されたパフォーマンスに関係なく、高級言語は時間を節約できるというものでした。[2]
1959年、学校はドラムベースの最初のコンピュータである LGP-30を受け取りました。1人の学生が、このマシン用にFORTRANにヒントを得たDARTという言語を書きました。これがきっかけでALGOL 58コンパイラを作成する取り組みが始まり、その定義が確定するとALGOL 60に移行しました。コンパイラの作成は、メモリサイズが非常に小さく(現代の用語で32KB)、ドラム速度が3600rpmであるため非常に低速だったため困難でした。それでも、ALGOL 30として知られる機能的な縮小版を作成することができました。[3]さらに開発が進むと、SCALP(「自己完結型アルゴルプロセッサ」)が生まれました。これは、パンチテープがソースの読み取りを終えるとすぐにコンパイルされたプログラムを実行するワンパスコンパイラです。プログラムの結果やエラーメッセージがすぐに出力されます。このコンパイルアンドゴースタイルの操作は、後にBASICで使用されました。[3] [4]
1962年、ケメニーと高校生のシドニー・マーシャル[5]は、新しい言語DOPE(ダートマス単純化プログラミング実験)の実験を始めました。これは、番号付きの行を使用して命令を表し、たとえば、2つの数を加算する場合、DOPEは次のものを使用しました。
5 + ABC
これは「5行目で変数AとBの値を加算し、その結果をCに格納する」という意味です。レイアウトはやや難解ですが、将来のBASIC言語の基礎がここにあります。[6]基本的な数学演算に加えて、この言語にはSQR、EXP、LOG、SIN、および単純な分岐構造が含まれていました。[7]
リベラルアーツにおけるコンピューティング
ケメニーとカーツは、伝統的なSTEM分野以外の学生にもプログラミングのリテラシーが必要だという点では一致していた。ダートマス大学の学生のうち、STEM関連のコースを受講したのはわずか25%だったが、ほぼすべての分野である程度の数学が使用されていた。さらに、コンピュータが社会でより重要になるにつれ、彼らは「コンピュータとその使用について、本質的に無知な人々がどのように賢明な決定を下すことができるのか」と疑問を抱いた。[7]
ケメニーは後に「私たちのビジョンは、キャンパス内のすべての学生がコンピューターにアクセスでき、すべての教員が適切なときにいつでも教室でコンピューターを使用できることでした。それだけのことでした」と述べています。[8]しかし、彼らが取り組まなければならなかったことを考えると、それを実現することはほぼ不可能でした。典型的なSCALPの実行時間は約15分で、言語はSTEM以外のユーザーが基本的なタスクに使用するには難しすぎました。[7]
問題は複雑さだけではありませんでした。バッチ処理という概念全体が問題でした。学生はパンチカードや紙テープにプログラムを準備し、それをコンピュータ オペレータに提出し、その後、ある時点で出力を受け取りました。これにより、プロセス全体を繰り返す必要のあるエラーが明らかになることがよくありました。後に彼らは「1 回の試行に 1 日かかると、学生は興味を失うか、問題が何であったかを忘れてしまいます。せいぜい、その日の結果が表示されるのを待って時間を無駄にするだけです」と述べています。[9] [a]
1959年、ケメニーの数学教育の革新者としての評判により、学部はアルフレッド・P・スローン財団から新しい学部棟を建設するための50万ドルの助成金を獲得した。[10]
コンセプトの開発
1961年にMITを訪問した際、彼らはPDP-1と、その完成したばかりの実験的なタイムシェアリングオペレーティングシステムを紹介された。ジョン・マッカーシーは、コンピューティングを大衆に普及させる取り組みになぜタイムシェアリングを使わないのかとカーツに尋ねた。カーツはダートマスに戻り、ケメニーに「タイムシェアリングをすべきだ」と告げ、ケメニーは即座に「OK」と答えた。[11]
このコンセプトが実行可能かどうかをテストする実験では、学生を 5 人のグループに分け、SCALP を使用して LGP-30 を順番に操作しました。[4]コンピュータの使用時間は 15 分間のセッションに分割され、各 5 人のグループに 1 回のセッションが与えられ、次のグループに引き継がれました。学生は一般に、1 回のセッション中に 2 回または 3 回の「ターンアラウンド」でプログラムを完了できることが分かりました。これは、対話型システムによって、数百人のユーザーが 1 台のマシンをうまく使用できることを明確に示していました。[12]
電話回線で新たに導入されたASCIIを使用するテレタイプモデル33 テレプリンターの登場により、アクセスの問題は解決しました。プログラマーはもはやカードをか紙テープに書き込んでプログラムを提出する必要はなく、モデル33を使用してコンピューターに直接入力できるようになりました。必要なのは、タイムシェアリングシステムをホストできるほど高速な新しいマシンと、プログラマーが使用できる簡単な言語だけでした。[13]
シンプルな言語という話題が真剣に検討され始めたとき、ケメニーはすぐに新しい言語を書くことを提案した。クルツはFORTRANやALGOLの簡易版に興味があった。[14]しかし、これらの言語には多くの特異性があったため、クルツはケメニーに同意するようになった。
もしFORTRANの醜い特徴を修正していたら、FORTRANはもう存在していなかったでしょう。私はしぶしぶジョンの意見に同意しなければなりませんでした。確かに新しい言語が必要だったのです。[15]
時間が経つにつれて、4つの重要な要素が浮かび上がってきた。システムはタイムシェアリングを使用する、新しい言語が必要になる、ユーザーをシステムに取り込むために新しいコースで他の科目の補助としてプログラミングを導入する、そして最後に、端末がすべてのユーザーに公開される、というものである。[16]
初期バージョン
プロジェクトは1963年9月に正式に開始された。その目標は、市販のコンピュータ上で言語とオペレーティングシステムを開発することだった。[17] 1964年初頭、彼らは資金援助を求めて国立科学財団(NSF)にアプローチした。NSFは、タイムシェアリングシステムと言語の2つの提案をピアレビューに送った。レビューでは、彼らが試みていることの難しさを理解していないという意見が常に出された。これらの否定的なコメントにもかかわらず、NSFは両方の助成金を承認した。ゼネラルエレクトリックから提供された教育割引により、 GE-225コンピュータが購入されたが、当時は「IBMに頼まない」ことはまだ危険を伴うものだった。[18]
GE-225は、はるかにシンプルなDATANET-30(DN-30)マシンとペアになっており、プログラムを共有するために両方のマシンにハードドライブが接続されていました。 [19] DN-30には、プログラムがインストール済みでない状態で工場から出荷されることを想定していなかったため、当時はプログラミングに関するドキュメントがありませんでした。[18] 1つの重要な機能として、より大きなGEマシンへのダイレクトメモリアクセス(DMA)アクセスが含まれていました。これにより、小さなメッセージをマシン間で素早くやり取りすることができ、ユーザーが入力したコマンドを225で即座に実行できるようになりました。[20]
このシステムは、DN-30 が端末を実行し、ユーザーの作業をディスクに保存することで機能します。ユーザーが と入力するとRUN、DN-30 は DMA を使用してそのコマンドを GE-225 に送信します。225 はそのファイルを読み取り、コンパイルして実行し、結果を DN-30 に返します。DN-30 は出力を端末に印刷します。[21]
1963年の夏、GEはコンピュータの購入を待つ間、GE-225の1台を貸与した。ケメニーはプロトタイプのコンパイラの開発に取り掛かった。学生のマイケル・ブッシュとジョン・マクギーチーはその秋、オペレーティングシステムの設計に取り掛かった。この期間中、言語とOSは大幅に変更されたが、基本的な目標は変わらず、その年の11月にドラフト版が公開された。[19]
学校のマシンは1964年2月の最終週に到着し、[22] 3月中旬には稼働し、[23] 4月1日に正式に引き渡された。その時点で、オペレーティングシステムの設計はすでに十分に開発されていた。オペレーティングシステムに取り組んでいた学生プログラマーのほとんどは、通常の授業に加えて、週に50時間作業していた。[22]言語は、別の225マシンで借りた時間を利用して並行して開発された。[24] OSは4月に完成し、月末までに3台のモデル33端末で動作するシステム全体が準備できた。ジョン・ケメニーとジョン・マクギーチーは、1964年5月1日午前4時に最初のBASICプログラムを実行した。 [ 23]
最初のプログラムがどのようなものであったかは完全には明らかではない。ダートマスを含む多くの情報源は、それが次のような単純なプログラムであったと主張している。[25]
プリント2 + 2
この言語のその後の歴史によると、2つのプログラムが同時に入力された。1つはケメニーによるもので、もう1つは名前のない別のプログラマーによるものだった。彼らはプログラムを入力し、RUN同時に入力し、正しい結果を受け取った。[26]カーツは早起きで、すでに家に帰っていて「すべての楽しみを逃した」。[27]
次の一ヶ月間、数値解析クラスのテストプログラムを使ってシステムのテストが行われた。この間、マシンは平均5分間正常に動作していた。[28]問題はすぐに解決され、6月に端末の数を11台に増やすことが決定された。この頃、より高速なGE-235が225に取って代わった。秋までに、20台の端末が使用されていた。[19]
GEはGE-235とDN-30の組み合わせをGE-265と呼び始め、[29]それぞれのモデル番号を足し合わせた。GEはGE-265を約75台製造し、[30]多くはサービスビューロー事業向けに製造された。GEはこれらをマークIタイムシェアリングシステムと呼んだ。[31]
新しいシステム
このプログラムの当初の目標の1つは、プログラミングを他のコースワークに組み込むことでした。これは成功しましたが、システムにかなりの負担がかかり、将来の成長の余地がないことが明らかになりました。[32]
1965年、チームはGEに開発の継続の支援を求めた。9月、副社長のルイス・レーダーは、約10倍の速度で2つのCPUを搭載した新しいGE-635を提案した。さらに、2台目のDN-30が追加され、より多くの回線を処理できるようになり、150人の同時ユーザーに対応できるようになった。[32]これを収容するには、265が稼働していたカレッジホールの地下室よりも大きな施設が必要だった。ピーター・キーウィット(22年卒)は、NSFからの追加支援とともに、キーウィット計算センターの建設を主導し、1966年12月にオープンした。[32]
このマシンが到着するまでの間、1966年の夏から秋にかけて、ローマ航空開発センターのGE-635を使用して、MOLDS(マルチユーザーオンラインデバッグシステム)が開発されました。GE-635は1967年初頭に運用され、MOLDSを使用した新しいオペレーティングシステムは9月に完全に機能し、その時点でGE-265は売却されました。[33]
GEは、ダートマス大学がBASICの新バージョンを開発し、GEがそれを使って自社のオペレーティングシステムの新リリースを開発するという、より広範な契約の一環として、3年間このマシンを無償で提供した。[33]この共同作業は成功し、GEはこれらのマシンをMark IIタイムシェアリングシステムとして導入し始め、[34] 10年後には世界最大のタイムシェアリングベンダーの1つとなった。[32]
この「フェーズ I」システムが稼働し始めると、ダートマス チームは理想的なオペレーティング システムである「フェーズ II」の開発を開始しました。これは 1969 年 3 月に導入され、その後すぐにダートマス タイム シェアリング システムに名前が変更されました。3 年の期間が終了すると、GE は大学にマシンを寄贈しました。2 つのチームは連絡を取り続け、関係を継続するための誠意ある試みが何度か行われましたが、それ以上の協力はほとんど行われず、パートナーシップは 1972 年 9 月 20 日に正式に終了しました。[33]
ユーザーベースの拡大
1968 年のレビューでは、学生の 80%、教員の 70% がシステムを何らかの形で利用していると指摘されました。何百もの端末が、病院からビジネス スクールまで、キャンパス全体に広がっていました。CPU 時間の 57% は授業に、16% は研究に、残りの 27% は「娯楽目的」に使用されました。ダートマス大学は、実際に使用してコンピュータへの恐怖を克服する方法として、ユーザーにゲームを積極的に奨励しました。[35]
1967年、ダートマス大学はNSFの別の助成金を受けて、キャンパス外の場所に端末を設置し始めた。その中には地域の高校も含まれていた。ユーザー数で見ると、これらの端末は全ユーザーの69%を占めていたが、コンピュータの使用時間は少なかった。[35] 1971年までに、ニュージャージー州やメイン州バンゴーまで79のリモート端末が設置された。これらは、1本の音声グレードの電話回線で最大12の端末をサポートできるマルチプレクサシステムによってサポートされていた。さらに、これらの回線のいくつかは、モデムを使用したダイヤルアップでの使用が可能だった。[36]
影響
タイムシェアリングは1960年代の主要な研究分野であり、コンピュータ業界の多くの人々が、コンピューティングパワーが安価で普及するようになるだろうと予測していました。これはジョン・マッカーシーの有名な発言で、「電話システムが公共事業であるのと同じように、コンピューティングもいつかは公共事業として組織化されるかもしれない」というものです。[37]
DTSSでは他の言語も利用可能でしたが、1972年時点で[アップデート]プログラムの98%はBASICで書かれていました。[38] BASICの登場により、コンピュータで解決するには時間がかかりすぎるタスクをコーディングするエンドユーザーにとって、コンピュータサービスがはるかに利用しやすくなりました。これにより、小規模または中規模のタスクを解決したいが、パフォーマンスにそれほどこだわらないユーザー市場向けに特別に設計されたコンピュータを多くのメーカーが導入しました。特に、この市場を直接狙った2台のマシンは、「これまでに開発された中で最も広く使用されている小型タイムシェアリングシステム」となりました。[34]
HP 2000 はHP Time-Shared BASICを実行した。これは BASIC とタイムシェア オペレーティング システムを組み合わせたもので、DTSS セットアップとほぼ同じである。このシステムは最大 32 人の同時ユーザーをサポートし、ローエンドの HP 2100 CPU を使用して、オリジナルの GE-265 セットアップの Datanet-30 と同じ方法で端末を実行した。一方、プログラムは同じマシンのハイエンド モデルで実行されたが、通常はコア メモリが大きいという点で異なっていた。HP の BASIC は、プログラムを格納するために半コンパイルされたトークン化形式を使用していたため、読み込み時間が短縮され、「コンパイル」はゼロ時間であった。[39]
Digital Equipment Corporationは別のアプローチを取り、既存のPDP-11ラインをベースに新しいRSTS/EオペレーティングシステムとBASIC-PLUSを搭載した単一マシン製品を使用しました。BASIC-PLUSはコマンドも含めて第5版に厳密に従っていましたMATが、ダートマスコンパイラやHPのトークン化フォーマットではなく、純粋なインタープリタとして実装されていました。また、JOSSモデルに準拠した、などの制御構造もいくつか含まれていました。[40] Tymshare SUPER BASICもJOSSスタイルの構造と行列計算をサポートしていましたが、オリジナルのコンパイルアンドゴー操作は保持されていました。
PRINT I IF I > 10
当時のほぼすべてのベンダーがこの同じ問題に対して何らかの解決策を提供していたが、それらはオリジナルとそれほど類似していなかったかもしれない。1973年にカーツがBASICのANSI標準の策定を検討し始めたとき、彼はBASICを利用できるタイムシェアリングサービスビューローの数が他のどの言語よりも多かったことに気づいた。残念ながら、この成功は問題でもあった。その時点では、あまりにも多くのバリエーションがあり、標準は不可能に思えた。[34]
BASICのゲーム
ケメニーはDTSSプラットフォームでのゲームを積極的に奨励し、それがDTSSシステムの成功の大きな理由の1つであると考えていた。[38]彼はおそらく初期のメインフレームゲームの作者だった。ケメニーはそれを自分のものにしなかったが、後にFTBALLについて「1965年のダートマス対プリンストンの試合でダートマスがランバートトロフィーを獲得した日曜日に書かれた。一種の記念プログラムだ」と述べた。この試合は、圧倒的な優勝候補だったプリンストンに対する番狂わせだった。[41] [b]
システムが拡張されるにつれ、特にBASICに文字列処理が追加された後、DTSSシステムは多くのテキストベースのゲーム開発の主要なプラットフォームとなった。1970年代初頭、ピープルズ・コンピュータ社は、より広く入手可能なHP BASICに変換されたこれらのゲームを自社の雑誌で公開し始めた。これらのリストの多くは、1975年の書籍「リターンを押した後に行うこと」にまとめられている。これらはHP BASIC形式で公開されているが、その大部分はDTSSか、DECISIONとして知られる同様のマシンが設置されていたカリフォルニアのローレンス科学館にまで遡ることができる。 [43]
もっと有名なコレクションは、 1978年のBASIC Computer Gamesです。この本に収録されているプログラムの約半分は、ケメニーやバトナムによるものも含めダートマス大学で書かれたものですが、もっと一般的には、1968年以降にダートマス大学と関係のあった多くの高校のいずれかで書かれたものです。特に多作だった高校はマサチューセッツ州のレキシントン高校ですが、他の多くの学校も登場します。多くのプログラムには元の場所が記載されていませんが、学校やプロジェクトSOLOなどの公共プロジェクトを通じてシステムに関係していたと思われる作者のものです。[44]
マルチプレイヤー ビデオ ゲームが BASIC で可能になったのは、スティーブン ガーランドとジョン マクギーチーが DTSS 用の MOTIF マルチ オンライン ターミナル インターフェイスを開発した時です。ゲームを開始するには、ユーザーは RUN の代わりに LINK に続いてセッション名を入力します。これにより、他のユーザーは JOIN に続いてセッション名を入力することでゲームに接続できます。その後、MOTIF は BASIC プログラムの入力と出力を多重化し、入力と出力の各行の先頭に文字列識別子を付加しました。このインターフェイスを使用して開発された最初のプログラムは、2 人用の FTBALL と 5 人用のポーカー ゲームでした。より本格的なのは、エイモス タック経営学部の 10 人までの学生が 1 つの製品の製造とマーケティングで競い合うマネジメント ゲームでした。[45]
バージョン
初版
遡及的にバージョン 1 として知られるオリジナル バージョンはLET、コマンドPRINT、END、FOR...NEXT、GOTO、GOSUB...RETURN、IF...THEN、DEF、、、 をサポートしていました。これにはREAD、基本的な数学命令 、、 、、および指数用の上矢印が含まれていました。「...テレタイプライターでは上付き文字を印刷できないためです。」[46]現代のバージョンでは、上矢印は通常「ハット」文字 に置き換えられています。指数は計算前に数値の絶対値を取るため、 を計算するにはを使用する必要があります。指数関数には、正しい演算順序ではなくを として扱うというさらなる問題があり、これは 3 番目のリリースまで修正されませんでした。[46]関数は常にゼロに向かって切り捨てられました。[47]DATADIMREM+-*/^-X^3X*X*X-X^2(-X)^2 -(X^2)INT()
この言語には、独自の特異性がいくつもあった。後のバージョンとは対照的に、コマンドLETは他のコマンドがないすべてのステートメントで必須であったため、このバージョンでは無効であった。[47]ステートメントは、複数の変数を印刷するときにコンマを使用し、5つの「ゾーン」の次のゾーンに進む。プロンプトと単一の値を印刷する場合はコンマは不要であったため、有効であった。やや隠れた特徴として、すべての変数は、最大10要素(添え字は1から10、第2版では0から9に変更)の配列(ベクトル)を表すことができ、そのように宣言する必要はなかった。異なるベクトルサイズが必要な場合のみ、. が必要であった。[48] [c]10 A=5*5PRINTPRINT "value of A is "ADIMDIM
変数名は1文字または文字に続いて数字が続くものに制限されていた(可能な変数名は286種類)。ユーザー関数は1文字のみしか使用できなかったため、FNAから までしか使用できなかった。すべての演算は浮動小数点数FNZで行われた。GE-225およびGE-235では、これにより約30ビット(およそ10桁)の精度が得られ、2を底とする指数範囲は-256から+255であった。[49]
さらに、GE-235のワードサイズは20ビットで、6ビットの文字コードを使用しているため、言語では3文字の関数名の使用が定められています。これは、20ビットのワード(18ビットを使用)に3つの6ビット文字を格納できるためです。これが、BASICの関数がやのように3文字である理由でありINT、SQRこれはGE-235から消えてからも、言語の多くの変種に残っています。[47]
第2版、CARDBASIC
BASIC の第 2 版 (当時はそう呼ばれていなかったが) では、最小限の変更しか行われなかった。1964 年 10 月にリリースされ、配列の添え字を 1 ではなく 0 から開始できるようになり (多項式 を表すのに便利)、ステートメントにセミコロン , が追加されました。[50]後の実装では項目間にスペースが残されていましたが、セミコロンによって次の 3 文字の倍数に印刷が進められ、既存のコンマ区切りよりも多くの数字を出力行に「詰め込む」のに便利でした。[51] 3 文字のサイズは、GE-235 の 20 ビットワード サイズの副作用で、3 つの 6 ビット文字が格納されていました。次の 3 文字の列にスキップするには、メモリ内の次のワードに移動するだけで済みました。[52];PRINT
10月のバージョンにはCARDBASICの別の定義も含まれていましたが、これはカードベースのワークフローで使用するためのBASICのバージョンに過ぎませんでした。CARDBASICは、ゼロベースの配列が含まれていないことを除いて、インタラクティブバージョンとほぼ同じでした。言語の将来にとってより重要なのは、CARDBASICがMAT数値行列で動作するコマンドを追加したことです。BASICの全体的なアイデアはインタラクティブであることだったため、CARDBASICはそれ以上開発されませんでした。[50]
第3版
1966年にリリースされ、「エディション」という名称が初めて使用された第3版は、間もなく登場する予定だった新しいGE-635コンピューターで動作することを目的として特別に設計された最初の版でした。このバージョンにはMATCARDBASICの関数が含まれており、0を添え字として使用できます。[53]
新しいSGN関数は引数の符号(正?0、負?1)を返す一方、RESTOREの位置を「巻き戻す」ために が追加されましたREAD/DATA。指数の問題は修正されたため、 は-X^2と解釈されるようになります-(X^2)。[53]さらに、INT関数は、ゼロに向かってトリムするのではなく、真の切り捨てになるように変更され、 で丸めを実装できるようになりましたINT(X+0.5)。[47]
このバージョンでの主な変更点は、数値を解析する新しいINPUTステートメントが追加され、初めて実行中に言語が真にインタラクティブになったことSTOPです。以前は、実行中に制御できるのはモニターに入力することだけでした。さらに、システムではループのインデントが許可され、推奨されましたが、これはBASICの他のほとんどのバージョンでは見られなかった機能です。[54]
第4版
第3版はGE-235の寿命を通じて1967年秋まで使用され続けました。しかし、GE-635の導入が計画されていたため、1967年春に635で実験版が作成されました。このバージョンはGEとダートマスの共同作業であり、GEは新しいオペレーティングシステムと、自社のMark 1 BASICの取り組みから得たBASICのいくつかの機能を提供しました。[54]
このバージョンは、当初は第 3 版の補足として公開され、RANDOMIZE関数を「シード」するコマンドRNDと、ON...GOTOFORTRAN の同様の機能によく一致する「計算された goto」を追加しました。このバージョンでは、が を必要としないのであれば、ここでも は必要ないとON...THEN主張しても許可されました。新しい関数は、印刷を 0 から 74 までの特定の列に移動しました。[54]もう 1 つの内部変更は、 を再び1 ベースに変更したことです。0 番目のインデックスを使用することもできますが、通常はさまざまなコマンドによって無視されます。[55]IF...THENGOTOTABMAT
READ/DATAこのバージョンでの主な追加は文字列変数であり、文字列を格納できるステートメントと、INPUTそれらを対話的に読み取るステートメントが変更されました。文字列システムの特徴の1つは、比較で末尾のスペースが意図的に無視され、"YES"と"YES "が等しいとみなされることです。[56]これは後に重大なエラーであることが判明しました。[55]文字列変数はドル記号で示されました。たとえばA$、ほとんどのキーボードで見つけられる文字が不足していたためです。誰かが$が"String"のSに似ていると指摘し、それで終わりました。[57]
文字列操作は、新しいCHANGEコマンドによって処理されました。これにより、変数内の文字列値が同等の ASCII 値のセットに変換されます。その後、数値配列を操作して文字列に戻すことができます。たとえば、次のコードはコンソールに「is」を生成します。
100 LET S$ = "今がその時です" 110 CHANGE S$ TO S 120 LET T ( 1 ) = S ( 5 ) 130 LET T ( 2 ) = S ( 6 ) 140 LET T ( 0 ) = 2 150 CHANGE T TO T$ 160 PRINT T$
140行目では文字列の長さを2に設定していますが、これはユーザーが管理する必要があります。最初の文字はT(1)にあります。このシステムは柔軟ですが、使い勝手は決して良くありませんでした。後のバージョンでは、新しい機能でこの問題に対処しました。[58]
このバージョンでは、文中のセミコロンがPRINTスペースなしで出力を「密に詰める」ように変更され、[52] [59]アポストロフィが短縮形として使用されるようになりましたREM。[60] [d]
公式の第 4 版は 1968 年まで登場しませんでしたが、以前の追加機能に加えていくつかの新機能が追加されました。これには、 コマンドを使用して複数行の関数を定義する機能DEFや、文字列をASCIICHANGEのようなコードの配列として扱い、文字列全体をループせずに個々の文字を操作できる強力なステートメントが含まれていました。[55]これは唯一の文字列操作関数でもありました。単一の文字または部分文字列を抽出するには、 を使用してそれを数値の配列に変換し、その配列を操作してから、元の配列に戻す必要がありました。これが、MAT が再び 1 ベースになった理由です。文字列の長さは位置 0 に配置され、通常は無視される必要がありました。[61]CHANGE
第5版
1970年後半の第5版は、1969年2月と4月に第4版の2つの補足として再び始まりました。[55]
主な変更点はファイル処理の導入です。以前は、プログラムで使用する定義済みデータはDATA行に配置し、 READコマンドを使用して 1 つずつ読み取る必要がありました。この機能は、同様の方法でファイルを読み取るために使用できます。INPUTコマンドはファイルから 1 つの項目を読み取り、PRINT コマンドは1 つの項目を書き込むことができるようになりました。[62]
ファイルは newFILESキーワードで開かれ、その後にファイル名を表す文字列定数のリストが続きます。これらは定数であるため、ファイル名を変更するには、それに合わせてコードを変更する必要がありました。名前には番号が割り当てられ、最初の名前はファイル #1 などになります。ランダム アクセスとリニアの 2 つのファイル形式がサポートされていました。リニア ファイルは、今日のテキスト ファイルと同様に扱われ、1 行のLINPUT #1: A$テキストを文字列変数に読み込み、PRINT A$それを端末に出力することができます。[62]後のバージョンでは、を使用してFILE $1,name$ファイルを文字列で指定できるようになりましたが、しばらくの間、FILES *この形式を使用していることを示すためにプログラムの先頭近くに が必要でした。[63]
ランダムアクセスファイルの場合、名前は内部のデータの型を指定する必要がありました。%はバイナリデータが含まれていることを示し、 は$num最大長の文字列として読み取られることを示しますnum。[62] READとWRITEは、 RESETコマンドを使用してランダムアクセスファイル内の任意の場所に配置できますが、現在の位置はLOC関数によって返され、ファイルの長さはLOFによって返されます。シーケンシャル読み取り中は、 を使用してファイルの末尾にあるかどうかをテストすることもできます。[64]IF END THEN...
もう一つの大きな変更点は、あるBASICプログラムがCHAINコマンドを使って別のプログラムを呼び出し、COMMONリストを使って変数を渡すことができるようになったことである。後にこの基本概念には多くの問題があることがわかったが、それでも大規模なプログラムを書くのに使われた。[64]
文字列処理が大幅に更新されました。新しいSEG$コマンドは、別の文字列から切り取られた新しい文字列を返します。上記の例では、文字列「is」は、より大きな文字列から抽出されています。新しいコマンドを使用すると、これを に縮小することができ、これはほとんどの方言にある関数 ( )と同様に機能します。SEG$ は最初と最後のインデックスを使用し、MID$ は最初のインデックスと長さを使用します。 は文字列の長さを返しましたが、これは内部的に処理され、ほとんどの場合計算は必要ありませんでした。また、ほとんどの方言で によって処理されていた、ある文字列の別の文字列内における位置を返しました。アンパサンド は、文字列の連結のために導入されました。[58]LET T$ = SEG$(S$,5,6)MID$MID$(S$,5,2)LENPOSSUBSTR&
他にも多数の小さな変更が加えられた。その中には、以前のバージョンでは1次元だったのに対し、2次元の文字列配列が追加されたほか、DEFを使用して文字列ベースの関数や数学関数を定義できるようになった。新しいシステム指向の関数には、時間と日付を扱うCLK$、DAT$ 、経過時間を返すTIM 、ユーザー番号(今日ではユーザー名にあたる)を返すUSR$などがある。新しい文字列関数には、現代のBASIC方言でよく使われるSTR$、VAL、ASCなどがある。REMの短縮形であるもこのバージョンで登場した。[64]'
第6版
第 6 版の作業は、第 5 版が完成する前の 1969 年秋に開始されました。新しいバージョン用に完全な仕様が事前に作成されました。これは、仕様書がコンパイラの変更に基づいていた以前のバージョンとは対照的です。このバージョンは、ケメニーとカーツに加えて、教員として戻ってきた元学生のスティーブン ガーランド、ジョン マクギーチー、ロバート ハーグレイブスによって作業されました。ベータ版は 1971 年夏の 3 か月間実行され、1971 年 9 月 21 日に最終的にリリースされるまで、かなりの時間が与えられました。この成熟の結果、カーツはこれを「おそらくダートマスがこれまでに書いたソフトウェア システムの中で最も設計が優れ、最も安定したもの」と評しました。[65]
最も大きな変更点の 1 つは、以前の概念を、に似た方法で動作する、CHAINより明確に定義された に置き換えたことです。ただし、 は行番号ではなく関数名を参照します。関数は を使用して定義され、宣言を介してグローバル変数を使用するのではなく、呼び出しで任意のパラメータを受け取りました。もう 1 つの大きな変更点は、コマンドで作成されたファイル ハンドル (番号) を使用することです。これは、ほとんどの最新の BASIC に見られる に似ています。 は、FORTRAN に似た方法でフォーマットされた出力を提供しました[66]。一方、入力は解釈されずに受け入れられ、カンマ、セミコロン、さらには BASIC コードも入力できました[67] 。CALLGOSUBSUB...SUBENDCOMMONFILEOPENPRINT USINGLINPUT
第6版は、本質的にはオリジナルのBASICコンセプトの最後のバージョンでした。それは何年もの間変更されませんでした。その後のバージョンは大幅に異なる言語でした。[65]
SBASIC
1976年、スティーブン・ガーランドは、いくつかの構造化プログラミングの追加を集めて、ダートマス構造化BASIC(SBASIC)を作成した。[68]IF...THEN主な目的は、さまざまなブロック指向構造に基づいた制御構造をGOTO、それらで置き換えることだった。これは、SBASICのソースコードを受け取り、それを第6版BASICに変換し、それをコンパイルして通常どおり実行するプリコンパイラを使用して行われた。SBASICは、PLOT他のプログラマによって追加されたコマンドに基づいて、いくつかのグラフィックス機能も追加した。[69]
ブロック構造は、 PascalやCなどの言語に見られる一般的なブロック構造とは対照的に、ALGOL 68の場合と同様に、一致する文によって終了しました。たとえば、は で終了するまで複数行にまたがっていました。[70]また、 or を削除し、 の下部に条件を配置することで、ループを下部から終了することもできます。またはを使用することで、無限ループがサポートされました。[71]DO WHILE...LOOPDOWHILEUNTILLOOPDO FOREVERLOOP FOREVER
「オリジナル」のダートマス BASIC では、 の後の文は許可されずTHEN、分岐先の行番号のみが許可されていました。SBASIC では、任意の文が許可されたため、たとえば が使用できました。[72]のこの基本的な拡張は、1972 年にBASIC-PLUSで開拓され、[73] 、当時リリースされていたマイクロコンピュータバージョンを含むほとんどの種類の BASIC で既に広くサポートされていました。これに加えて、SBASIC では、を別の行に配置し、ブロックを で終了するというブロック指向が追加されました。[74]これに加えて、SBASIC では、今日までVisual Basic .NETに残っているメカニズムが追加されました。[75]IF X < 5 THEN X=X+1IF...THENIFTHENCONTINUESELECT CASE
SBASIC では、プロッタで使用するためのグラフィック コマンドもいくつか追加されました。これには、 でPLOTTER "plottername"後続のコマンドを選択したデバイスに送信し、 でそのパラメータを設定する必要がありました。それ以降、は選択したプロッタにドットを生成しますが、 で使用されているように、ステートメントの最後にセミコロンを追加すると、ペンは紙に残され、たとえば のような線が生成されます。[76] [77]WINDOW...PLOT X,YPRINTPLOT 10,10;20,20
SBASICは最終的に、1978年のANSI X3.60-1978 Minimal Basic標準を拡張した1987年のANSI X3.113-1987 Full Basic標準の基礎となった。この標準の作成が遅れたことと、コンピュータ科学者の間で非構造化Basicが軽視されていたことから、ガーランドが委員長を務めた大学入試委員会のコンピュータサイエンス上級コース開発委員会は、コースの言語としてPascalを必須とし、Basicを認めないことを選択した。[78] [79]
ガーランドはダートマス大学でコンピュータサイエンスの入門コースを教えるためにSBASICを使用しましたが[80] [81] 、 APコースを教えるために使用できるように コースの教科書をPascalで書き直しました[82] 。
第7版
ガーランドの SBASIC は、SBASIC ソース コード自体で書かれたプリコンパイラでした。このシステムは SBASIC ソースを読み取り、対応する第 6 版のコードを書き、その出力をコンパイルします。1980 年にリリースされた第 7 版は、SBASIC のスタンドアロン コンパイラのバージョンでした。独自の追加機能がいくつか追加されました。変更のほとんどは、外部プログラムを呼び出すシステムと、プログラムを複数の部分に分割するために使用できる「オーバーレイ」のさらなる詳細化でした。このバージョンでは、SUB1 つのファイルを共有する s は、それらの間でデータを効果的に共有しました。これにより、ルーチンのグループ内にわずかなデータを隠すことができました。この分離は、今日ではモジュールとして知られています。[83]
さらに、この版では構造化されたエラー処理と任意の行列計算がLET文に追加され、LET A = M*4Mが行列変数である場合、文はMのすべての要素を4倍にした別の行列をAに出力できるようになりました。最後に、サブルーチンのアクティベーションレコードの使用により再帰が可能になりました。[83]
ANSI BASIC、第 8 版
1970年代初頭までに、BASICの実装は数十にまで増え、そのすべてがオリジナル版で導入された基本概念に独自の変更を加えていた。そのほとんどは第5版に基づいていたが、MAT命令やインデント機能が欠けていることが多かった。GEもその1社で、数ヶ月後に発売される第6版を待たずに、第5版でMark IIシステムをリリースした。[84] DECプラットフォームのBASIC-PLUSは、おそらくMATコマンドなどを含めて最も近い実装だったが、その後、下位互換性のない変更がいくつか加えられた。[40]
第 6 版のリリース後、カーツは標準 BASIC を定義する取り組みに関与するようになった。1974年 1 月に米国規格協会(ANSI) のワーキング グループ X3J2 が結成され、同年 9 月には対応する欧州コンピュータ製造者協会(ECMA) のグループ TC21 が結成された。当時の目標は、2 つの関連する標準を作成することだった。Minimal BASIC は第 2 版に似ているが、文字列が追加され、実質的にすべての BASIC が準拠できる標準になる。Standard BASIC は、市場で見られる実際の BASIC のバリエーションにもっと沿うものを作成するために、より多くの機能を追加する予定だった。[84]
プロセスは遅く、Minimal BASICの最初のドラフトは1976年1月まで公開されず、1977年12月にECMAによって正式に採用され、1979年にANSIによってX3.60-1978として採用されました。Minimal BASICは第3版に似ており、文字列変数が含まれていましたが、MATやその他の高度な機能が欠けていました。[85]対照的に、Standard BASICには他のBASICには存在しない多くの新機能があり、その多くは十分に検討されておらず、批判の対象となっていました。たとえば、標準には行継続文字が含まれていましたが、文字列の連結にも使用されるアンパサンドが選択されました。これらを1行で使用すると、非常に混乱したコードになる可能性があります。[86]&
この時までに、1975年に最初のマイクロコンピュータシステムがリリースされ、すぐにAltair BASICが導入されました。これは、すぐにMicrosoft BASICとして知られるようになる最初のバージョンです。MS BASICはBASIC-PLUSを模倣したもので、最終的には第5版になりましたが、インデント、MAT、その他の機能がありませんでした。また、3文字の慣例を破る関数LEFT$とRIGHT$関数が追加されました。マイクロコンピュータの数が増え、 1970年代後半に家庭用コンピュータ市場に変わると、MS BASICが事実上の標準になりました。[84]
市場の急速な変化により、BASIC 標準の取り組みはさらに減速し、1987 年に X3.113-1987 として正式に承認されるまで待たされました。この頃には、標準に本当の意味はなく、MS BASIC がいたるところに存在していただけでなく、1980 年代半ばにはシュリンクラップ ソフトウェアがタイプイン プログラムに取って代わったため、BASIC の使用は減少していました。両方の標準は最終的に撤回されました。[84]
ANSIの努力は最終的に失敗したが、標準BASICの草案は1982年にダートマスで第8版として実装された。[83]
DTSSインターフェース
DTSSは初期の 統合開発環境(IDE)である対話型コマンドラインインターフェースを実装しました。これにより、多数のユーザーおよびジョブ制御コマンドが提供されました。たとえば、アイドル状態の端末は、と入力することでユーザーアカウントに接続できHELLO、で再度ログアウトできますBYE。[e]
ユーザーが入力し、行番号で始まる行はプログラムに追加され、以前保存されていた同じ番号の行が置き換えられます。それ以外の行は DTSS コマンドとみなされ、すぐに実行されます。行番号のみで構成される行は保存されませんが、以前保存されていた同じ番号の行は削除されます。この編集方法は、端末装置として テレプリンターが使用されていたために必要でした。
各ユーザー アカウントには、オフラインで保存された BASIC プログラムをいくつでも保持できますが、管理者アカウントはプログラムを永続的なストレージに残すこともできます。特定のユーザー アカウントでは、これらのプログラムのいずれかが特定の時点でアクティブになり、プログラムがロードされていない場合は、新しいプログラムがロードされていると想定されます。保存されたプログラムには、今日では BASIC 言語自体の一部としてよく知られているコマンドを使用してアクセスします。たとえば、LISTコマンドは、現在アクティブなプログラムを印刷するように DTSS に指示します。
コマンド一覧
HELLO- DTSSにログイン
BYE- DTSSからログアウト
BASIC- BASICモードを起動する
NEW- 名前を付けてプログラムを書き始める
OLD- 永久ストレージから以前に名前が付けられたプログラムを取得する
LIST- 現在のプログラムを表示する
RUN- 現在のプログラムを実行する
STOP- 現在実行中のプログラムを中断する
TEST- インストラクターが提供するプログラムを使用して現在のプログラムをテストする
LINK- 現在のプログラムをマルチターミナルモードで実行する
JOIN- マルチターミナルモードで実行中のプログラムに参加する
SAVE- 現在のプログラムを永久ストレージに保存する
UNSAVE- 現在のプログラムを永久ストレージから消去する
REPLACE- 別のファイルで既に使用されている名前を使用して現在のプログラムを保存する
CATALOG- 永久ストレージ内のプログラム名を表示する
SCRATCH- 名前をクリアせずに現在のプログラムを消去する
RENAME- 現在のプログラムを消去せずに名前を変更する
FRI- 機械的な改行機能を備えたテレタイプにフリーデンモードを有効にする
NFR- フリーデンモードを無効にする
EXP- explain (help) EXP EXPはシステムによって説明できるコマンドのリストです
これらのコマンドは、ユーザーからは BASIC 言語の一部であるとよく思われていましたが、実際にはタイムシェアリング システムの一部であり、DTSS 端末を介して ALGOL または FORTRAN プログラムを準備するときにも使用されていました。
ティーチ/テストシステム
1960 年代後半のダートマス大学の学生の約 80% は、数学のコースを 2 つ受講し、2 番目のコースで微積分または有限数学の Basic を学習しました。学生は、これらのコースの初めに Basic に関する 1 時間の講義を 2 回受け、その後 Basic で 4 つのプログラムを記述する必要がありました。その内容は、π を近似するプログラムや 5 次多項式の根を求めるプログラムから、微分方程式を解くプログラム、マルコフ連鎖の極限確率を (シミュレーションによって) 求めるプログラムまで多岐にわたります。TEACH/Test システムは、学生がこれらの課題を完了するのを支援しました。学生は、動作するプログラムができたと思ったら、コマンド TEST を入力し、インストラクターが作成したプログラムが、記述内容を承認するか、どこで間違えた可能性があるかのヒントを提供しました。学生は、各プログラムのリスト、サンプル RUN、および TEACH/Test システムからの承認を提出する必要がありました。このシステムは、課題を採点したり、学生が TEST を入力した回数を記録したりはしませんでした。単に学生とインストラクターを支援しただけです。[87] [88]
BASIC言語
最初のリリースでは、FORTRAN IIからいくつかの演算子とキーワード、 ALGOL 60からいくつかの演算子とキーワードを取り入れて、次のステートメントタイプを実装しました。全体的に、この言語はFORTRANモデルに近く、[46]コード1行につき1つのステートメントを持ち、コードをグループ化するALGOLの「ブロック」(これらの構造化プログラミング構造はALGOL開発の主な理由でした)とプログラムフローを制御するGOTOの使用がありません。
ALGOLからは、FOR...TO...STEPFORTRANの扱いにくい文に代わるループ形式を採用しましたDO...CONTINUE。[47] BASICではまた、FORTRANの とは対照的に、IF...THENのような単純な比較を可能にするために構造を簡素化しました。[47] FORTRANの「計算されたIF」形式は、後のバージョンで コマンドとともに再導入されました。
IF X>5 THEN GOTO 20IF (X-5) 20,20,30ON...GOTO
変数名はAからZ、A0からA9、B0からB9、...、Z0からZ9に制限されており、最大286の異なる変数が可能です。変数IからNを整数として設定し、残りを浮動小数点数として設定するというFORTRANの奇妙なシステムは削除され、すべての変数は浮動小数点数であり、最大10個の要素を持つ次元であると想定されました。コマンドは、DIM配列が10を超える要素を保持する場合にのみ必要でした。[47]配列名はAからZのみに制限されていました。
BASICステートメントのリスト
DEF- 1行関数を定義する
DIM- (次元の略) 配列のサイズを定義する
END- プログラムの終了を定義する
STOP- テキストの終わりの前にプログラムを停止する
FOR / TO / STEP- ループを定義する
NEXT- ループの終了をマークする
GOSUB- 単純なサブルーチンに制御を移す
RETURN- 単純なサブルーチンから制御を戻す
GOTO- 別の文に制御を移す
IF / THEN- 意思決定
LET / =- 数式の結果を変数に割り当てる
PRINT- 出力結果
DATA- プログラム内に静的データを保存する
READ- DATAステートメントに格納された入力データ
REM- コメント("REMark")
また、浮動小数点数値変数と算術演算も実装しました。
オペレーターのリスト
機能一覧
ABS- 絶対値
ATN- アークタンジェント値(結果はラジアン)
COS- コサイン値(ラジアン単位の引数)
EXP- 指数値
INT- 整数値
LOG- 自然対数値
RND- ランダム値
SIN- 正弦値(ラジアン単位の引数)
SQR- 平方根値
TAN- 正接値(ラジアン単位の引数)
例
初期の BASIC には、外部ファイルの読み取りと書き込みの機能はありませんでした。通常ファイルから読み取られるデータのリストを表すために、BASIC にはDATAキーワードが含まれていました。このキーワードの後に、行の長さの制限でのみ終了する、任意の長さの要素のリストを続けることができました。 はDATA実行不可能であり、検出された場合はスキップされました。READコマンドはデータを 1 つずつ消費し、DATA内部ポインターの要素の完全なコレクション内での位置を追跡します。バージョン 3 では、RESTOREポインターをDATAプログラムの最初のコマンドにリセットするコマンドが追加されました。
この例では、「最初の3つのデータ値はそれぞれX、Y、Zに読み込まれます。値-1はNに読み込まれます。次の11個の値、.1から.3は配列Bの11個の要素に読み込まれます。」[89]
15 X 、Y 、Zを読み取る20 Nを読み取る24 I = 0から10の場合25 B ( I )を読み取る26次のI 40データ4.2、7.5、25.1 、-1 、.1 、.01 、.001 、.0001 45データ.2 、.02 、.002 、.0002 、.015 、.025 、.3 、.03 、.003
その後のほとんどの BASIC とは異なり、第 3 版以降のダートマス BASIC には、マトリックス キーワード があり、MATこれを他のいくつかのコマンドの前に付けることで、単一のコマンドでデータの配列全体を操作できました。1968 年のマニュアルのこの例では、[90] を MAT INPUT V使用して一連の変数を入力します。ユーザーが行に何も入力しないと、このプロセスは終了し、要素の合計数が疑似変数[f]NUMでアクセスされます。次に、コードはマトリックス内の個々の要素をすべて合計し、平均を計算します。第 3 版ではインデントも追加されましたが、これはここでループ構造を明確にするために使用されています。
5 S = 0とします10 MAT INPUT V 20 N = NUM とします30 N = 0の場合99 40 I = 1からNとします45 S = S + V ( I )とします50 NEXT I 60 S / Nを印刷します70 5へ進みます99終了
注記
- ^ 「彼」という用語の使用に注意してください。この場合、ダートマス大学が女性の入学を許可したのはしばらく後のことであったため、これが唯一の可能性でした。
- ^ デイヴィッド・アールは、 BASIC Computer Gamesでこのゲームについて説明しているときにケメニーがこれを書いたと述べた。[42]
- ^ この機能は、ダートマスをベースにしたほとんどの BASIC に搭載されていましたが、独立して作成された BASIC ではほとんど搭載されていませんでした。
- ^ 以前のバージョンでアポストロフィが使用されていたかどうかは不明ですが、リビジョン 4 のマニュアルが初めて明示的に言及しています。
- ^ ログアウトする必要はありませんでした。ユーザーが応答しない場合は、しばらくしてからログアウトされました。
- ^ が のような関数として実装されなかったのは謎です。
NUMLEN()
参考文献
引用
- ^ Return キーを押した後に行うべきこと。People's Computer Company。1975 年。
- ^ クルツ1981、516ページ。
- ^ ab Kurtz 1981、516–516 ページ。
- ^ ab Kemeny & Kurtz 1985、p. 7.
- ^ ケメニー&カーツ 1985年、8ページ。
- ^ カーツ1981、517ページ。
- ^ abc Kurtz 1981、518ページ。
- ^ タイム 2014年。
- ^ ケメニー&カーツ 1968年、3ページ。
- ^ 「ハノーバーの高等数学」タイム誌、1959年2月23日。
- ^ ケメニー&カーツ 1985年、3ページ。
- ^ ケメニー&カーツ 1985年、4ページ。
- ^ カーツ1981、519ページ。
- ^ ケメニー&カーツ 1985年、6ページ。
- ^ ケメニー&カーツ 1985年、9ページ。
- ^ カーツ1981、519-520頁。
- ^ キーウィット 1971、9ページ。
- ^ ab Kemeny & Kurtz 1985、p. 5.
- ^ abc Kurtz 1981、520ページ。
- ^ General Electric Computers (1965). DATANET-30 プログラミングリファレンスマニュアル(PDF) .
- ^ ダートマスタイムシェアリングシステム(DTSS)。1995年3月。2016年5月27日閲覧。
- ^ ab Kemeny & Kurtz 1968、p. 224.
- ^ Kiewit 1971、10ページ。
- ^ ケメニーとクルツ、1968年、p. 225.
- ^ 「1960年代」。ダートマスITS。
- ^ ケメニーとクルツ、1985年、16、22ページ。
- ^ ケメニー&カーツ 1985年、16ページ。
- ^ ケメニーとクルツ、1968年、p. 226.
- ^ ケメニー&カーツ 1985年、21ページ。
- ^ ケメニー&カーツ 1985年、22ページ。
- ^ カーツ1981、532、534頁。
- ^ abcd Kiewit 1971、p.11。
- ^ abc Kurtz 1981、533ページ。
- ^ abc Kurtz 1981、534ページ。
- ^ Kiewit 1971、17ページ。
- ^ キーウィット 1971、18ページ。
- ^ ガーフィンケル、シムソン (1999)。アベルソン、ハル (編)。情報社会の設計者、MIT コンピュータサイエンス研究所の 35 年間。ケンブリッジ: MIT プレス。p. 1。ISBN 978-0-262-07196-3。
- ^ ab ケメニー、ジョン・G. (1972)。『人間とコンピュータ』。ニューヨーク:チャールズ・スクリブナー・サンズ社。pp. 32–37, 41–42。ISBN 9780684130095LCCN 72-1176 。
- ^ タイムシェアリングBASICガイド(PDF)。ヒューレット・パッカード。1969年8月。
- ^ ab BASIC-PLUS マニュアル(PDF) 1972 年 12 月。
- ^ “John Kemeny and Tecmo's BASIC FTBALL Granddaddy”. 2017年10月17日. 2018年7月25日時点のオリジナルよりアーカイブ。 2018年7月25日閲覧。
- ^ アル 1978、64ページ。
- ^ リターンを押した後に行うべきこと。People's Computer Company。1975 年。
- ^ アール 1978.
- ^ John S. McGeachie、「タイムシェアリング環境におけるユーザープログラム制御の複数の端末」、Communications of the ACM 16:10、1973 年 10 月、587 ~ 590 ページ。
- ^ abc Kurtz 1981、523ページ。
- ^ abcdefg カーツ 1981、524ページ。
- ^ カーツ1981年、525ページ。
- ^ Kurtz, Thomas. 「BASIC コマンド: オリジナル オリジナル バージョン」.
- ^ クルツ1981、526ページ。
- ^ 男4。
- ^ ab Kemeny & Kurtz 1985、p. 24.
- ^ クルツ1981、527ページ。
- ^ abc Kurtz 1981、528ページ。
- ^ abcd Kurtz 1981、529ページ。
- ^ Man4、66ページ。
- ^ ケメニー&カーツ 1985年、28ページ。
- ^ ab Kemeny & Kurtz 1985、p. 29.
- ^ Man4、64ページ。
- ^ Man4、52ページ。
- ^ Man4、67ページ。
- ^ abc ケメニー & クルツ 1985、p. 31.
- ^ ケメニー&カーツ 1985年、32ページ。
- ^ abc Kurtz 1981、530ページ。
- ^ ab Kurtz 1981、531ページ。
- ^ エリオット 1988年、134ページ。
- ^ ケメニー&カーツ 1985年、26ページ。
- ^ ガーランド 1976年。
- ^ ガーランド1976年、1ページ。
- ^ ガーランド1976年、4ページ。
- ^ ガーランド1976年、5ページ。
- ^ ガーランド1976年、6ページ。
- ^ BASIC-PLUS 言語マニュアル (PDF)。マサチューセッツ州メイナード: Digital Equipment Corporation。1972 年。3 ~ 13 ページ。
- ^ ガーランド1976年、7ページ。
- ^ ガーランド1976年、10ページ。
- ^ ガーランド1976年、21ページ。
- ^ Stephen J. Garland および Arthur W. Luehrmann、「BASIC 言語でのグラフィックス」、Computer Graphics (SIGGRAPH-ACM 四半期レポート) 8:3、1 ~ 8 ページ、1974 年。
- ^ Mace, Scott (1982 年 9 月 6 日)。「College Board が Pascal ベースの AP コースを開発中」。InfoWorld、p. 29。
- ^ Stephen J. Garland、「Advanced Placement Computer Science」、Computers in Mathematics Education、Viggo P. Hansen および Marilyn J. Zweng (編集者)、194 ~ 201 ページ。全米数学教師協会年鑑、1984 年。
- ^ Stephen J. Garland、「コンピューティングと基本プログラミング入門」、コンピューターおよび情報科学プログラム、ダートマス大学、1982年。
- ^ Stephen J. Garland、「コンピュータサイエンスの初級コース向け言語: 基本」、Abacus 1:4、39~49 ページ、1984 年夏。
- ^ Stephen J. Garland、「コンピュータサイエンス入門:Pascal での応用」、Addison-Wesley、マサチューセッツ州レディング、1986 年。
- ^ abc エリオット1988年、135ページ。
- ^ abcd マルコーニ。
- ^ Minimal BASIC (PDF) . ECMA. 1978年1月.
- ^ Guntheroth, Kurt (1983 年 7 月). 「新しい ANSI BASIC 標準」. ACM SIGPLAN Notices . 18 (7): 50–59. doi :10.1145/988216.988221. S2CID 31236801.
- ^ John G. Kemeny および Thomas E. Kurtz、「Dartmouth Time-Sharing」、Science 162、1968 年 10 月 11 日、223 ~ 228 ページ。
- ^ John G. Kemeny および Thomas E. Kurtz、「ダートマス タイムシェアリング コンピューティング システム」、国立科学財団助成金 NSF-GE-3864 の最終報告書、1967 年 6 月、9 ~ 10 ページおよび付録 III。
- ^ BASIC言語リファレンスマニュアル。Interdata。1975年1月。pp.3-24。
- ^ BASIC、第4版、1968年、53ページ
文献
- Kemeny, John; Kurtz, Thomas (1968 年 10 月 11 日). 「ダートマス タイムシェアリング」. Science . 162 (3850): 223–228. Bibcode :1968Sci...162..223K. doi :10.1126/science.162.3850.223. PMID 5675464.
- ケメニー、ジョン、カーツ、トーマス (1985)。Back to BASIC: The History, Corruption and Future of the Language。Addison - Wesley。ISBN 0-201-13433-0。
- Kurtz, Thomas E. (1981)。「BASIC」。Wexelblat, Richard (編) 著『プログラミング言語の歴史』。プログラミング言語の歴史 I。ニューヨーク: ACM。pp. 515–537。doi : 10.1145 / 800025.1198404。ISBN 0127450408。
- キーウィット計算センターとダートマス タイムシェアリング システム。ダートマス大学。1971 年。
- BASIC バージョン 2 マニュアル(PDF)。ダートマス大学。1964 年 10 月。
- BASIC バージョン 4 マニュアル(PDF)。ダートマス大学。1968 年 1 月。
- ガーランド、スティーブン (1976 年 12 月)。構造化プログラミング、グラフィックス、および BASIC。ダートマス大学。
- 「コンピューターをパーソナルにしたプログラミング言語、BASIC の 50 年」。Time誌、2014 年 4 月 29 日。
- Ahl, David (1978)。BASIC コンピュータ ゲーム。クリエイティブ コンピューティング。
- Marconi, Andrea. 「BASIC プログラミング言語の歴史」(PDF) . Q7basic .
- Elliott, Brig (1988)。「BASIC」。Kent, Allen、Williams, James (編)。マイクロコンピュータ百科事典: 第 2 巻。CRC プレス。pp. 133–153。ISBN 9780824727017。
外部リンク
- 1965 年頃のダートマス BASIC コンパイラ バージョン 2 のソース コードの一覧 (2007 年にアーカイブ)
- オリジナルのドキュメントとソフトウェアのスキャン。
- ダートマス BASIC インタープリタ、RetroWiki.es
