最小限のBASIC
Minimal BASICは、国際標準として開発されたBASICプログラミング言語の方言です。この取り組みは1974年1月にANSIで開始され、9月にECMAの並行グループが参加しました。最初の草案は1976年1月にコメント募集のために公開され、最終規格(ANSI X3.60-1978またはECMA-55とも呼ばれる)は1977年12月に発行されました。米国規格協会は、実装が定義を満たしていることを確認するために、 NBSIR 77-1420テストスイートを導入しました。
この頃までに、Microsoft BASICは1975年に初期のマイクロコンピュータに導入されて以来、市場を席巻し始めていました。特に、1977年にApple II、Commodore PET、TRS-80という「三位一体」が導入されて以降は、MSスタイルのBASICが事実上の標準として定着しました。Minimal BASICのISO標準化はISO 6373:1984として開始されましたが、1998年に中止されました。より強力な方言であるFull BASIC (Standard BASICとも呼ばれる)を作成するための取り組みは、1987年1月までリリースされず、市場にほとんど影響を与えませんでした。
歴史
これまでの展開
ダートマスBASICは、FORTRANにヒントを得た、洗練された対話型言語として、1964年5月にダートマス大学で発表されました。[ 1 ]このシステムは、当時コンピュータ業界で話題になっていたいくつかの概念、特に複数のユーザーが1台のマシンにアクセスできるようにするタイムシェアリングと、コンピュータ端末を使用したマシンとの直接対話を統合しました。このBASICが動作するGE-225コンピュータを供給したゼネラル・エレクトリック社は、わずかなバリエーションを商業ユーザーに販売し、すぐに採用されました。[ 2 ]他の多くの企業もすぐに独自の同様のシステムを導入し、オンライン時間を分単位で販売しました。1960年代末までには、ほぼすべてのメインフレームプラットフォームとオンラインサービス用のBASICバージョンが存在しました。[ 3 ] [ 4 ]
1966年、ヒューレット・パッカード(HP)は新しいミニコンピュータ、HP 2100を発表しました。研究室や工場での使用を想定していたHPでしたが、そのほとんどが事務処理用途で販売されていることに驚きました。[ 5 ]この状況を打開しようと、1968年11月、同社は2つのHP 2100 CPUを使用し、最大32ユーザーをサポートするタイムシェアリングを実装したHP 2000を発表しました。このシステムはダートマスモデルに似た動作をし、1台のマシンで入出力を制御し、もう1台でプログラムを実行しました。ダートマス版がコンパイラであったのに対し、HPのタイムシェアードBASICはインタープリタでした。[ 6 ]
インタプリタは小型マシンやミニコンピュータで急速に普及しました。他のベンダーもHP方言をすぐに模倣し、特にData General社は1970年代初頭に大成功を収めたNovaシリーズでその名を馳せました。Wang Laboratories社も、BASIC専用マシンであるWang 2200シリーズで一定の成功を収めました。各バージョンにはそれぞれ独自の違いがありました。唯一抵抗したのがDigital Equipment Corporation (DEC)社で、同社はスタンフォード研究所(SRI)のJOSSプログラムに関与し、それをベースにFOCAL言語を導入していました。1970年代初頭までにBASICの成功により、DEC社は独自の改良を加えた独自のBASICを開発せざるを得なくなりました。[ 7 ]
標準化の取り組み
BASICの分岐により、両者を統合するための標準規格の策定への関心が高まりました。この可能性に関する最初の会合は、1974年1月に新設されたANSIワーキンググループX3J2の下で開催されました。これを契機として、1974年9月にはヨーロッパのECMA(欧州機械工業会)TC 21の下に、対応するグループが設立されました。両グループはこの取り組みを通して緊密な連携を保ち、それぞれの標準規格を同時に公開しました。最初の草案はANSIから1976年1月に公開されました。最終版は1977年6月に作成され、1977年12月14日にECMAによって正式に採択されました。[ 8 ]
X3J2 の最初の数年間は、1964 年のオリジナルの Dartmouth Basic に相当するものを標準化することに費やされました (後から考えると、「無駄だった」と言う人もいるかもしれません)。Minimal Basic は、実際の言語というよりはおもちゃのようなものでした。
Minimal BASICは、本質的には1964年にダートマスBASICとして正式に記述されたもので、拡張バッカス・ナウア記法を用いて正式な標準として記述され、実装が定義に準拠していることを確認するためのテストスイートGO TOが付属していました。Minimal BASICは、と がGOTO同じものであるかどうかといった、以前は定義されていなかった概念を明確にしました。この場合、 はgoto statement = GO space* TO line number、つまりGOTO、GO TOも がGO TO同一であることを意味します。[ 10 ]実装間で文の扱いFORやキーワードと値の間にスペースが必要かどうかなどの違いがある場合、標準では常にダートマスパターンが選択されました。[ 9 ]
Minimal BASICは文字列操作などの多くの共通機能が欠けているため、単体ではあまり役に立たないことは常に認識されていました。これらのより高度な機能は、Minimalの発表後に本格的に開発が開始された後継のFull BASICの焦点となりました。Full BASICは単に機能を増やしたMinimalのバージョンではなく、ダートマス大学のStructured BASICの成果に基づいており、大規模プログラムの構築を支援する構造化プログラミングを提供するように設計されていました。Minimalとは対照的に、Standard BASICはBASICを大幅にアップデートするように設計されました。[ 11 ]
無関係
Minimal BASICの開発が進められていた頃、初めて広く普及したマイクロコンピュータであるAltair 8800が発売された。その後まもなく、Microsoft社がAltair BASICを発売した。その年のうちに、数十台の新しいマイクロコンピュータが発売され、同数のBASICの新バージョンが発売された。Minimal規格が承認された頃には、すでに数万台のマシンでこの言語の何らかのバリエーションが稼働していた。どのインタープリタがどの方言に従うかは、一般的に開発に使用されたマシンに基づいていた。MS BASICはPDP-10 [ 12 ]上で開発され、DECのBASIC-PLUSの機能を多く受け継いでいる。一方、Apple BASICは、 Steve Wozniak氏がHP社のマニュアルに基づいて作成し、HP社の文字列処理システムを採用している[ 13 ] [ a ] 。
最小規格の最初の草案は、1976年1月にコメント募集のために公開された。多数のコメントを基に草案は更新され、最終版は1977年6月に準備され、1977年12月14日にECMAによって正式に承認された。[ 14 ]米国規格協会は、ベンダーが規格への準拠をテストできるように、NBSIR 77-1420テストスイートを公開した。 [ 15 ]標準化団体にはマイクロコンピュータベンダーがいなかったため、このシステムは主にメインフレーム版で使用されており、メインフレーム版には多くの拡張機能が常に存在していた。この規格を実装した数少ないマイクロコンピュータ版の1つが、 Zilog Z80用のMicrosoftのBASIC-80 (通称MBASIC)で、バージョン5.0で規格に準拠した。[ 16 ]
Minimalのリリース後、標準化団体はFull BASICの開発に着手しましたが、これは何年もかけて進められました。開発の進捗が遅々として進まなかったため、ダートマス大学の参加者はプロジェクトを離れ、1984年に当時発展途上だった標準をベースとした独自のバージョンであるTrue Basicをリリースしました。これはバグだらけで混乱を招き、ジェリー・パーネルは「狂気の沙汰」[ 17 ]と嘲笑し、ジョン・ドヴォラックは「悲惨な」そして「失敗する運命にある」と一蹴しました[ 18 ] 。Minimal BASICを国際標準化機構(ISO)に移行する計画は断念され[ 19 ]、ANSIグループは解散し、元の標準は使用されていませんでした[ 20 ] 。
説明
Minimal BASICは、ダートマスBASICの初期バージョンを忠実にベースとし、その規約に従っています。この規格は、ほぼすべてのマシンで実行可能な規格を目指し、いくつかの制限事項を明確にしています。以下の説明は、一般的なBASICに関する基本的な知識を前提とし、Minimalとの違いを中心に説明します。
プログラムコード
ほとんどのBASIC実装と同様に、Minimalは行エディタを用いて編集されるソースコードに基づいているため、Minimalのすべてのコード行には行番号が必要です。標準では、行番号は0から9999まで許可されています。一部のインタープリタとは異なり、Minimalではすべてのキーワードの前にスペース、キーワードの後にスペースまたは改行が必要です。[ 21 ]
キーワードにはREM、、、、、、、、、、、、、、、、、、、などがあります。[ 22 ]DIMOPTIONDEFLETPRINTINPUTREADDATARESTOREIF...THENFOR...TO...STEP...NEXTGO TOGO SUB...RETURNON...GO TORANDOMIZESTOPEND
ENDプログラムは最終行に を記述する必要がある。 [ 23 ]INPUTプロンプト文字列をオプションで記述できるが、これは実装次第であり、標準規格の一部ではない。[ 24 ]RESTORE行番号は許可されていなかったが、これは当時のほとんどのインタープリタで見られたオプションである。FOR...NEXTループはトップテストされ、最初の反復でテストが失敗した場合はループ本体は実行されない。[ 25 ]
変数名は1文字、または文字と1桁の数字の組み合わせで構成できます。2文字の変数名は使用できません。[ 26 ]数値は10 ^38から10^ 38の範囲に制限されます。[ 21 ]文字列変数は最大18文字まで使用できます。[ 27 ]配列は を使用することで1次元または2次元にすることができますDIMが、数値配列のみがサポートされています。すべての変数は通常、 を使用しない関連付けられた1次元配列内のスペースが割り当てられDIM、 を使用しない場合は、インデックス0から10までの11個の項目のためのスペースが与えられます。配列の下限は通常0ですが、 を使用することでOPTION BASE 1インデックスを1に変更できます。[ 28 ]
11個の関数が定義されています。、、、、、、、、、、、、ABSです。[29] 演算子には、、、、、などがあります。文字列のATN比較は、等しいか等しくないかのみで、大小の比較はサポートされていません。論理演算子、、、は提供されていないことに注意してください。[ 10 ]COSEXPINTLOGRNDSGNSINSQRTAN=<=>=<>ANDORNOT
ユーザ定義関数はDEF FNサポートされていましたが、数値のみを対象としていました。文字列に対する組み込み関数やユーザ定義関数は利用できませんでした。[ 30 ]
例
1000 REM エラトステネスのふるい1010 REM QUICK BASIC MATH PROJECT DEMO から修正1020 REM 2010 REM L はふるいの限界です2020 REM L までのすべての素数を見つけます2030 L = 1000 とします2040 REM N はふるいそのものです2050 DIM N ( 1000 ) 2060 REM L までのすべての数でふるいを満たします2070 FOR I = 1 TO L 2080 LET N ( I ) = I 2090 NEXT I 2100 REM 最初の素数 2 から始めます2110 LET P = 2 2120 PRINT P , 2130 REM P の倍数を「取り消し線で消す」2140 FOR I = P TO L STEP P 2150 LET N ( I ) = 0 2160 NEXT I 2170 REM 取り消されていない次の数を求める2180 LET P = P + 1 2190 IF P = L THEN 2220 2200 IF N ( P ) <> 0 THEN 2120 2210 GOTO 2180 2220 PRINT 2230 END注記
参考文献
引用
- ^カーツ 1981、532ページ。
- ^カーツ 1981、532、534ページ。
- ^マクラッケン 2014 .
- ^ 「IBM VS the World: That's How It Is」Computerworld、1973年12月5日。2022年1月28日時点のオリジナルよりアーカイブ。 2022年4月26日閲覧。
- ^ Leibson, Steve (2017). 「HP: The accidentally, on-Purpose Computer Company」 HP9825.COM . 2019年10月21日時点のオリジナルよりアーカイブ。 2022年4月26日閲覧。
- ^ 「Hewlett-Packard 2100 Processor Description, 1972」(PDF)。2021年4月12日時点のオリジナルよりアーカイブ(PDF) 。 2020年8月18日閲覧。
- ^ Savetz, Kevin (2013年4月). 「Dave Ahl and Betsy Ah」(インタビュー). 2022年3月31日時点のオリジナルよりアーカイブ。 2022年4月26日閲覧。
- ^ ECMA 1978、p. iii.
- ^ a b Luehrmann 1984、p.173。
- ^ a b ECMA 1978、p.15。
- ^ Luehrmann 1984、171ページ。
- ^フリドソン 1999、116ページ。
- ^ a bウォズニアック 2014 .
- ^ ECMA 1978、iページ。
- ^ギルシン&シェパード 1978 .
- ^ BASIC-80リファレンスマニュアル. Microsoft. 1981. 2022年5月21日時点のオリジナルよりアーカイブ。2022年4月26日閲覧。
- ^ポーネル1985年、366ページ。
- ^ドヴォルザーク 1984、88ページ。
- ^ “ISO 6373:1984” . 2021年3月3日時点のオリジナルよりアーカイブ。2022年4月26日閲覧。
- ^ 「ECMA-55 Minimal BASIC」 . ECMA International . 2022年4月3日時点のオリジナルよりアーカイブ。 2022年4月26日閲覧。
- ^ a b ECMA 1978、6ページ。
- ^ ECMA 1978。
- ^ ECMA 1978、5ページ。
- ^ ECMA 1978、22ページ。
- ^ ECMA 1978、17ページ。
- ^ ECMA 1978、8ページ。
- ^ ECMA 1978、9ページ。
- ^ ECMA 1978、25ページ。
- ^ ECMA 1978、11ページ。
- ^ ECMA 1978、13ページ。
- ^ Ham, John Gatewood (2015年5月15日). 「ERATOSTHENESE.BAS」 . Sourceforge . 2022年4月26日時点のオリジナルよりアーカイブ。 2022年4月26日閲覧。
参考文献
- ジョン・ドヴォラック(1984年11月19日)「悲しいけれど本当のベーシック」 InfoWorld 、 88ページ。
- フリドソン、マーティン・S. (1999). 『億万長者になる方法:富の巨人たちが証明した戦略』ジョン・ワイリー・アンド・サンズ. ISBN 0-471-33202-X。
- Gilsinn, David E.; Sheppard, Charles L. (1978). NBSIR 78-1420-1: NBS Minimal BASIC Test Programs - Version 1 User's Manual: Vol. 1 - Test System Overview (PDF) (技術レポート). National Bureau of Standards.
- トーマス・カーツ (1981). 「BASIC」 . リチャード・ウェクスルブラット (編).プログラミング言語の歴史 I . ACM . pp. 515– 537. doi : 10.1145/800025.1198404 . ISBN 0127450408。
- Luehrmann, Arthur (1984年9月). 「Basicによる構造化プログラミング; パート4: ANSI Basic、Macintosh Basic、そしてTrue Basic」 . Creative Computing . pp. 171– 177. 2012年12月30日時点のオリジナルよりアーカイブ。代替URL
- マクラッケン、ハリー(2014年4月29日) 「コンピューターをパーソナルにしたプログラミング言語、BASICの50年」Time誌。
- ポーネル、ジェリー(1985年9月)「PC、周辺機器、プログラム、そして人々」 Byte誌、 366~ 373ページ。 2016年3月20日閲覧。
- ウォズニアック、スティーブン (2014年5月1日). 「スティーブ・ウォズニアックが初代AppleのためにBASICをゼロから書いた経緯」 . Gizmodo .
- ECMA (1978年1月). ECMA-55: Minimal BASIC (PDF) . 2019年7月24日時点のオリジナル(PDF)からのアーカイブ。代替URL
さらに読む
- ANSI X3.113-1987: プログラミング言語 - 完全版 BASIC (PDF) . ANSI. 1987.
- Gilsinn, David E.; Sheppard, Charles L. (1978b). NBSIR 78-1420-4: NBS Minimal BASIC Test Programs - Version 1 User's Manual: Vol. 4 - Mathematical Functions and User Defined Functions, Compound Expressions (PDF) (Technical report). National Bureau of Standards.
- ECMA (1986年6月).標準 ECMA-116: BASIC (PDF) .オリジナル(PDF)から2011年10月14日にアーカイブ。
- ハム、ジョン・ゲートウッド(2021年8月30日). ECMA-55 Minimal BASICによるプログラミング入門(PDF) .