良いビジネス取引がBASICを過小評価する原因となった

Table of Contents

良いビジネス取引がBASICを過小評価する原因となった

特集: 1980年代の家庭用コンピュータでBASICを使ってコンピューターを学んだ、白髪頭のIT世代。それ以降のプロたちは皆、BASICを軽蔑している。一体何が起こったのだろうか?

50年前、エド・ロバーツ率いるMITS社製のAltair 8800コンピュータが、1975年1月号の『ポピュラー・エレクトロニクス』誌の表紙を飾りました。この登場に触発された二人の大学生がBASICインタプリタを開発し、数か月後にはそれを販売する会社を設立しました。

MITS Altair 8800

MITS Altair 8800 – クリックして拡大

BASICを発明したのは彼らではありません。それはトーマス・カーツ教授が共同開発したもので、彼は11月に96歳で亡くなりました。(彼の同僚であり上司であったジョン・ケメニーは1992年に逝去しました。)私たちは、彼の功績への感謝とBASICへの郷愁が広く見られるのを目にしました。それはThe Registerへの多くのコメントだけではありません。BASICは多くの人々の人生を変えました。

しかし、多くの人々、特に1980年代以降にコンピュータの世界に入った人々にとって、BASICはおもちゃのようなものだと考えられています。偉大なオランダのコンピュータ科学者、エドガー・ダイクストラはこう述べています。

(公平を期すために言うと、彼はFORTRAN、PL/I、COBOL、APLもあまり好きではありませんでした。)彼の短い論文「人を傷つけるかもしれない真実をどう伝えるか?」は、少なくとも多少は冗談めいたものだったことはほぼ間違いないでしょう。しかし、見落とされがちなのは、この論文が1975年、つまりマイクロコンピュータの時代以前に書かれたということです。オリジナルのダートマスBASICはコンパイラであり、後のバージョンとは大きく異なっていました。

しかし、BASICはその後、はるかに優れたものへと進化しました。初期の1979年のAcorn Series 1と1980年のAcorn Atomには、ループ、ベクター、ビットマップグラフィックコマンドなど、興味深いBASICが搭載されていましたDO。Wikipediaで詳しく説明されています。UNTIL

1981年、Atomの後継機であるBBC MicroにBBC BASICが付属しました。BBC BASICは、ローカル変数を持つ名前付きプロシージャ(初心者でも再帰を試すことができる)やインラインアセンブリ言語といった贅沢な機能を誇りました。BBC BASICは現在も存在し、1983年に「伝説の」Zilog Z80に移植された最初の言語の作者であるリチャード・ラッセルによってメンテナンスされています。

これは優れた言語でした。新しいコンピュータには何らかのBASICが搭載されると期待され、1980年代にはほぼすべてのマイクロコンピュータに搭載されていました。Macintoshはすぐに廃止されたMacBASICを搭載していましたが、AtariのST [PDF] とCommodoreのAmiga [PDF] には独自のバージョンが搭載されていました。IBM PCのすべてにROMとして組み込まれ、PCクローンには2020年にMicrosoftがオープンソース化したGW-BASICが搭載されていました。

もちろん、MicrosoftはBASICを基盤として事業を築いてきました。MITS Altair 8800の初代BASICを供給し、The Register誌は2001年にそのバージョンの共著者であるモンテ・ダビドフ氏にインタビューしています。Microsoftは現在もVisual BASIC .NET 16.9を提供しています。Microsoft Officeのマクロ言語は、今もVBA(Visual Basic for Applications)です。

上昇の後には下降がある

英国とヨーロッパにおいて、Acorn社は大きな影響力を持っていました。間接的には、今もなお世界中で影響力を持っています。Acorn社はArmプロセッサフ​​ァミリーを設計しました。「ARM」は元々Acorn RISC Machineの略称でした。Acorn社のソフトウェアはそれほど大きな影響力を持っていませんでした。

コモドール64 UK広告

コモドール64 UK広告 – クリックして拡大

活気あふれる米国市場では、別の企業が市場を席巻していました。2012年、The Register紙はコモドール64を「史上最も成功した8ビットマイクロコンピュータ」と評しました。C64には、コモドール初の大ヒット作である1977年のコモドールPET 2001と同じコモドールBASICのバージョン2.0が搭載されていました。

コモドールは市場をよく理解していた。C64は主にゲーム機として開発された。1982年当時としては優れたグラフィックを備え、VIC-IIチップによる16色8つのハードウェアスプライトと、SIDとしても知られる有名なMOStech 6581チップによる3チャンネルサウンドを備えていた。

C64の発売時の価格は595ドル(2025年現在では1,945ドル、1,600ポンド以上)でした。決して安くはありませんでした。昔ながらのBASICを採用することで、大幅なコスト削減を実現しました。C64のROMはわずか20KBで、3つのチップに分割されていました。BASIC用に8KB、コモドールのカーネルOS用に同じく同容量、そして「キャラクターROM」用に4KBです。BBC MicroのROMは32KBで、6502のメモリマップの半分を占めていました。(そのため、クラシックゲーム「エリート」は、ディスプレイ用のスペースを確保しつつも、22KBに詰め込む必要がありました。)

もう一つの要因は、コモドールが費用を負担する必要がなかったことだ。当時の社長、故ジャック・トラミエル氏は、強硬な交渉を強いられた。 2007年にレジスター紙が報じたように、コモドールが世界を席巻していた1970年代のことだ。トラミエル氏は当時、マイクロソフトの若きビル・ゲイツ氏との交渉を次のように振り返っている。

YouTubeビデオ

トラミエルのおかげで、コモドールは非常に有利な条件を手に入れました。同社はロイヤリティすら支払わなかったのですが、それはアップデートも行われないことを意味し、結果としてCBMはPET、VIC-20、C64でほぼ同じBASICを採用することになりました。ハードウェアは大幅に変更されたにもかかわらず、わずかな調整しか受けませんでした。PETにはグラフィックもカラーも搭載されておらず、ビープ音しか鳴らない状態でした。VIC-20はRAMが3.5KBで、グラフィックは176×184ピクセルと限られていました。そしてついに、歌って踊れる万能のC64が登場したのです。

Commodore BASICはVIC-20では貧弱で、C64では本当にひどい出来でした。色の設定や描画、読み込み、保存といったコマンドはなく、音楽や効果音を再生するサウンドコマンドもありませんでした。

事実上、変化のなかったBASICは世代を重ねるごとにコンピュータとの相性が悪くなり、ついにはC64では全く使い物にならなくなってしまいました。ユーザーはハードウェアの機能にアクセスするには、PEEKやPOKEを使うしかなく、その結果、独自のゲームを開発したい人はアセンブリ言語へと移行していきました。

C64には、非常に高価なフロッピーディスクドライブ、Commodore 1541が搭載されていました。発売時の価格は399ドル(現在の価値で1,300ドル、1,000ポンド)で、CPU、ROM、RAMは内蔵していましたが、コンピュータとのインターフェースはシリアルだったため、非常に遅く非常に高価でした。しかも、容量はわずか170KBでした。

これらは、主にキーボード付きのゲーム機として考えられた正当な選択でした。ゲームは速度向上のために機械語で書かれることになるので、小さくてシンプルなBASICは妥当な節約であり、会社としてはその節約を許容できるものでした。

他の市場、特にドルという絶対的な権力が及ばない市場では、これが競争の機会を創出しました。そして、同じく数百万台を売り上げたシンクレアZXスペクトラムのようなマシンが誕生しました。もちろん、その多くのクローン製品(その多くは非公式でライセンスも取得されていない)も例外ではありませんでした。スペクトラムのキーボードは貧弱で、グラフィックとサウンドにはコスト削減の跡が見て取れましたが、BASIC自体は全く悪くありませんでした。

1980 年代初頭、Tangerine の Oric-1、MSX シリーズ、Camputers Lynx、Amstrad CPC 464 とその関連製品、そして豪華な Elan Enterprise など、Commodore のライバル製品にとって、より優れた BASIC を搭載していることは大きなセールス ポイントでした。

成功したものもあれば、失敗したものもありましたが、成功かどうかは別として、それらのマーケティングは、コモドール社がコスト削減をし、1980 年代初頭に当時としてはかなりハイエンドのグラフィックスとサウンドを備えたマシンに 1970 年代後半の BASIC を採用することを決定したことによる恩恵を受けていました。

短期的には、それは良い選択でした。コモドール64は約1700万台を売り上げました。つまり、1980年代の多くの若者は他に何も知らず、窮屈で機能の乏しいBASICを使うのが当たり前だと思っていたのです。かつてコモドール64を持っていた人の中には、コモドール64を懐かしむ人もいます。当時最悪のBASIC方言の一つだったにもかかわらず、コモドールBASIC V2はFOSSコードとして再実装されました。

一方では、これは史上最悪の BASIC の 1 つが 21 世紀にも生き残っている一方で、SAM Coupé の MasterBASIC や QL SuperBASIC につながった ZX Spectrum の Beta BASIC などのはるかに優れたバージョンが、現代のキットに実装されることなく、忘れ去られていることを意味します。

  • 12台...1980年代のクラシックな8ビットマイクロ
  • Zilog、伝説のZ80 CPUの単体販売を終了
  • マイクロソフトは、Build を最後まで見てくれた人へのちょっとしたサプライズプレゼントを用意しました: GW-BASIC のソース

今日に至るまでBASICが抱える悪評の多くは、コモドールBASICのせいだと考えています。ジャック・トラミエルは破格の安値で手に入れましたが、その犠牲になったのは言語そのものだったのです。コモドールは数々の奇妙なビジネス上の決断を下しました。その一部については8月に取り上げましたが、最も大きな影響を及ぼしたのは、安値で販売されたBASICだと考えています。

マイクロコンピュータが登場する以前、BASICはミニコンピュータ上でのビジネスソフトウェア開発に使用されていた本格的な言語でした。ヒューレット・パッカードはHP BASICを、デジタル・リサーチは元シマンテックCEOで汎用言語業界の第一人者であるゴードン・ユーバンクスが開発したCP/M用CBASICコンパイラを提供していました。デジタル・イクイップメント・コーポレーションは、16ビットのBASIC-11や32ビットのVAX BASIC(現在は64ビットのVSI BASIC)など、いくつかの派生言語を提供していました。

すべての BASIC の不具合を報告します...

Reg FOSSデスクが1980年代後半に活動を開始した当時、本格的なビジネスソフトウェアは、まだBASICやRAD、4GLツールで書かれていました。

Windowsが台頭するにつれ、Visual Basicの衰退した力のおかげでBASICは一時的に復活し、BorlandとDelphiのおかげで、故ニクラウス・ヴィルトの最も有名な作品であるPascalも一時的に復活した。

しかし、一般的には、1990 年代以降、コンピュータ業界は Unix、特に C、C++、その他の中括弧言語からプログラミング ツールへと移行しました。

約30年後、数千万行に及ぶコードで構成される巨大なOSとアプリケーションを中心とした産業が誕生しました。その多くは、完全に型安全とは言えない言語、特にC言語やその類似言語で書かれています。より安全な派生言語の中には、厄介な副作用を抑制することを目的とした仮想マシンやランタイムに依存するものもあり、中には(特にRustのように)安全性を完全に考慮して設計されたものもあります。これらのソリューションは、ある程度の複雑さを増し、時には非効率性をもたらす傾向があります。例えばChromiumは現在4500万行近くに達し、その半分以上がC++で書かれています。

今では、数百メガバイト規模の毎日および毎週の必須アップデートが実施されています。リリース後10年以上もの間、誰も完全に理解していない膨大なコードベースの旧バージョンをメンテナンスし、パッチを適用し続けることを中心とした活況を呈する産業が存在します。

もちろん、これらすべてが Commodore BASIC によるものではありませんが、C64 よりもさらに重要な単一の要因に関するご提案を歓迎します。

BASICの再考

一歩下がって全体像を見る価値があると感じました。C++はビャーネ・ストラウストルップによって設計され、彼の博士課程の指導教官はデイビッド・J・ウィーラーでした。C++は、ゼロックスPARCの研究者であり、パーソナルコンピュータの父の一人であるバトラー・ランプソンの功績だとよく言われますが、実際、ランプソンは1993年のチューリング講演でウィーラーの言葉を引用しています。

これは現在、ソフトウェア工学の基本定理と呼ばれることが多い。しかし、ストラウストラップは自身の著書『C++プログラミング言語』の序文で、より詳細な定理を提示している。

今日では、私たちとハードウェアの間にどれほど多くのソフトウェアレイヤーが存在するかを忘れがちです。これには、システムが後方互換性のために組み込んでいる多くの前提や歴史的経緯も含まれます。Wheeler氏は次のように 述べています。

こうした誤り、互換性へのこだわりは、ほとんどの人が認識しているよりもはるかに根深いものです。そして、これを簡単に証明できるのが、言語の全盛期であった 1980 年代の BASIC インタープリタの機能です。これは、QuickBASIC から Visual BASIC に至る後の、表面上はプロフェッショナル向けの変種、さらには Python や Ruby などのすべての代替品には欠けています。

これは現代のコンピューティングのすべてを支える壮大な前提であるため、それを理解するには、少し過去を振り返る必要があります。

初めてコンピュータープログラミングを始める人は、まず機械の前に座り、テキストを入力します。ごく一部の難解な言語を除けば、彼らは英語に似た単語を入力します。なぜなら、アルファベットと文法のおかげで、英語は読み書きも理解も最も簡単な人間の言語の一つだからです。

キーボードの前に座り、たとえ仮想キーボードであっても、単語、数字、句読点を入力します。初心者が知っておくべき情報はこれだけです。つまり、テキストの入力方法と、間違えた時の修正方法です。

しかし、BASICはそのインタラクティブ性にさらなるレイヤーを加えます。記憶モデルも統合しているのです。ユーザーがコマンドを入力すると、コンピューターはそれに従おうとします。しかし、そのコマンドに番号を付与すると、コンピューターはすぐには命令を実行せず、後で実行するためにその命令を記憶します。

これは深く重要な比喩です。1960年代のミニコンピュータが現代のオペレーティングシステムのすべてに影響を与えて以来、私たちが背負わされてきた「ファイル」や「フォルダ」、「エディタ」、「コンパイラ」といった、時代遅れのナンセンスをすべて排除してくれます。初心者にはそんな重荷は必要ありません。彼らが真の才能を示し、プログラミングの道を進むことを選んだら、後で学ばせましょう。

簡単な式を入力すれば、コンピューターが計算してくれます。番号を付ければ、コンピューターがそれを記憶し、後で使えるようになります。ライティングソフトウェアに必要なのは、これだけです。

「ファイル」という旧来の概念を排除します。ファイルは間接参照のメカニズムとして発明されました。名前付きインデックス、つまり二次記憶装置(つまりメモリではなくディスク上)にある目的のデータ部分を見つけるためのポインタでした。初心者はRAMとディスクの違いを知りませんし、知る必要もありません。これは実装の詳細です。ドライブコントローラのメモリアドレスと同じように、目に見えないようにするべきです。

これは、今日一般的にBASICの現代的な代替としてPythonが推奨されていることの大きな問題点の一つです。Pythonはスクリプト言語であり、他のOSで動作するインタープリタです。確かに対話的に使用することは可能で(REPLがあります)、しかしプログラムを書くには、Pythonコードを格納するファイルを作成するためのテキストエディタが必要です。

初心者プログラマーは、「ファイル」とは何か、「エディタ」とは何か、あるいは「ファイル」内の「ソースコード」を操作するために「エディタ」が必要であることなど、知る必要はありません。これは純粋な技術的負債です。これらは実装の詳細であり、目に見えないようにすべきです。

これは「コンパイラ」と「インタプリタ」、そして「ソースコード」と「バイナリコード」にも当てはまります。これらはレガシーな実装の詳細であり、数十年前のシステムによって隠されていたものです。一般ユーザーも初心者プログラマーも、これらについて知る必要はありません。

Pythonは、C言語のプログラマーが好みのインデントパターンについて不平を言うという問題を解決しました。これは、FORTRANや一部のBASICと同様に、インデントを特定の方法で重要なものにすることで、誰もが従わざるを得ない状況を作り出しました。同様に、BASICの行番号は、簡素化と統一化を図る上で重要なメカニズムです。ですから、これを排除しようとしないでください。むしろ、初心者の便宜を図るため、BASICでは行番号を構文的に採用しています。これは良いことです。「ディレクトリ」内の「ファイル」や、プログラムを使ってプログラムを書くよりも、シンプルで分かりやすいシステムです。これは上級者向けに後回しにすべきでしょう。

子供や初心者に、ファイルシステムやエディタといったプロ仕様のツールを無理やり学ばせるべきではありません。知育玩具は良いものです。補助輪も役立ちます。子供たちに組み立て玩具を与えて、ものづくりを学ばせましょう。

プログラムとは何かを学んでいる間は、初心者には行番号を使ってコードを構造化させましょう。シンプルで、すぐに理解でき、見やすいからです。また、行番号と行番号の間にスペースを入れることで、将来的な計画を立てる力も養えます。その後は、行番号を操作するためのツール、例えばRENUMBERコマンドや範囲LIST x TO y指定などを与えましょう。時代は変わり、もはやコモドール64をこのような用途に使う人はいません。

彼らを…に任せましょう。ダイクストラの言う通りです。BBC BASICのように、… 、… 、… 、そして名前付き手続きGOTOを与えて、構造化プログラミングにスムーズに移行できるようにしましょう。IFTHENELSEWHILEWENDREPEATUNTIL

Go to 文が有害だと考えられているのは気にしないでください。もっと大きな視点で見てみましょう。マルチレベルストレージはレガシーな技術的負債です。ファイルは有害だとみなされるべき時が来ています。そうなるまでは、この60年前のメタファーへの対処はできるだけ先延ばしにすべきです。®

Discover More