7 ポイント 投稿者 GN⁺ 2025-04-04 | 2件のコメント | WhatsAppで共有
  • マイクロソフトの50年にわたる革新は Altair BASICのコード から始まった
  • Office、Windows 95、Xbox、AIよりも前に存在した最初の製品
  • このコードがパーソナルコンピューター時代を切り開き、マイクロソフト成長の基盤となった

私が書いた中で最もクールなコード

  • 1975年、Bill GatesとPaul Allenは「すべての机と家庭にコンピューターを」というビジョンのもとMicrosoftを創業した
  • マイクロソフトが50年を迎えられたのは、Steve Ballmer、Satya Nadellaのような優れたリーダーと数多くの社員の功績によるところが大きい
  • Gatesはこの記念すべき瞬間を迎え、喜びと同時に名残惜しさも感じた
    • ハーバードのPDP-10の前でコーディングしていたあの頃が、つい昨日のことのように感じられる
  • マイクロソフトの始まりは、1975年に Popular Electronics誌の表紙 で見た Altair 8800コンピューター だった
    • AltairはMITSという小規模な電子機器会社が作ったキット型PCで、当時としては革新的な製品だった
    • 雑誌を見た瞬間、GatesとAllenはPC革命が近づいていると直感し、その流れに加わることを決意した

BASICコードを書くと決めたきっかけ

  • 2人は学生時代、Lakeside校でコンピューターに魅了された
  • Altairが一般の人々にもプログラミングの機会を与えられることに感銘を受けた
  • GatesとAllenはAltair向けBASIC言語を開発したと、先にMITSへ提案した
  • しかし実際には まだ存在すらしていないソフトウェアだった ため、自分たちで作る必要があった

BASIC言語の基本概念

  • BASICは1964年、ダートマス大学の2人の教授が作った初心者向けプログラミング言語
  • コンピューター経験がまったくない人でも、短い学習だけで自分でプログラムを作れるよう設計されていた
    • 例: 小切手帳の残高計算機、三目並べゲームなど
  • GatesとAllenが最初に学んだプログラミング言語であり、現在でも使われている
  • BASICは英語のように コンピューターに作業を指示する言語 で、命令の実行、数学の問題の解決、機能の実行などを可能にする

BASICをコンピューターに理解させる方法

  • 問題は、コンピューターがBASICを理解できないことだった
  • GatesとAllenは、BASICコードをコンピューター命令へ 1行ずつ翻訳して実行するインタープリター(Interpreter) を作ることに決めた
    • リアルタイムのフィードバックを提供し、初心者がエラーをすばやく修正できる利点があった
  • プログラム全体を一度に翻訳する コンパイラー(Compiler) 方式も検討したが、初心者に優しいインタープリター方式のほうが適していると判断した

開発の開始

  • 当時はAltairに使われていた Intel 8080チップ がなかったため、PaulはハーバードのPDP-10上でそのチップを エミュレーション するプログラムを開発した
  • Gatesはインタープリターのメインコードを書き、友人のMonte Davidoffは 数学演算モジュール を担当した
  • この3人は2か月間昼夜を問わず作業し、実在しなかったソフトウェアを完成させた

メモリ制約の克服

  • 当時のコンピューターメモリは非常に高価で、Altairにメモリを追加すると費用がPC本体の価格を上回ることもありえた
  • BASICインタープリターを 4KB以内で実装 することが目標だった
    • そうすることで、ユーザーは自分自身のプログラムを実行するためのメモリを確保できた
  • Gatesはさまざまな メモリ最適化技法 を使ってこの目標を達成した
    • 例: 圧縮されたデータ構造、効率的なアルゴリズム

マイクロソフトの誕生

  • 幾度もの徹夜作業の末に完成したBASICインタープリターを、MITSの代表Ed Robertsにデモした
  • デモは成功し、MITSはこのソフトウェアの ライセンスを購入 した
  • この成功により、Altair BASICはマイクロソフトの最初の製品となり、Micro-Soft という社名が生まれた(のちにハイフンは削除された)
  • この1つのコードが、その後50年にわたって続くマイクロソフトのあらゆる革新の出発点となった
  • より詳しい話は回顧録 Source Code で確認できる

ソースコードのダウンロード

  • マイクロソフトの出発点となった Altair BASICのオリジナルソースコード を直接確認できる
  • 過去50年間でプログラミングがどれほど発展したかを示す歴史的資料であり、Gatesはこのコードに今なお大きな誇りを感じている

ソースコードをダウンロード (PDF)

2件のコメント

 
iolothebard 2025-04-06

MicrosoftがOEMとして供給した6502向けBASICのソースコード(Apple II、Commodore など)が、ビルド可能な状態に復元(?)されています。
https://github.com/mist64/msbasic

自作の6502 SBCを作って、そこにMSBASICをポーティングするケースもかなり多いですね。
https://github.com/beneater/msbasic

感心しているだけでもいいですが、実際に飛び込んでみるともっと面白いかもしれません… ;)

 
GN⁺ 2025-04-04
Hacker News の意見
  • ソースコードは読んでいて楽しい。GW-BASIC のソースコードを見つけたが、いくつか面白いコメントがある
    • 数値をバッファに収められないため、すべての文字をスタックから再度取り出し、開始バッファ位置を取り出して % 記号を入力しなければならない、というコメントがある
    • 乱数生成器の定数は Knuth Vol 2, Chapter 3 を参照しており、変更しないようにというコメントがある
  • 訂正: GW-BASIC であり、QBASIC ではない
  • Steve Jobs は Microsoft の問題はセンスがないことだとよく言っていた
    • スクロール時にフォントがちらつく効果がその言葉を思い出させる。非常に気が散るうえ、リーダーモードを使っても無効にできない
    • ちなみに、Bill Gates と彼が世界のためにしてきたことは好ましく思っている
  • Intel 8080 エミュレータを Dec10/VAX/IBM VM CMS 間で移植可能なように書いたことがある。8080 は 256 個の値スイッチで簡単に実装できた。FORTRAN77 で書いた
    • BASIC インタプリタを浮動小数点込みで書くのははるかに難しい。Gates、Allen、および他の協力者たちの BASIC はかなり優れていた
  • 少しの幸運とリスクを取る意思が、予想外の形で成果を生んだ。自分の生涯で PC 時代のようなものを再び見られるかはわからない。あるとすれば、モバイルフォンかインターネットだろう
  • ソースコードは末尾にリンクされている(警告: 100 MB の PDF)
  • なぜこのウェブサイトを見るために JS を有効にしなければならないのか不思議だ
  • Malcom Harris の Palo Alto を読んだあとでこの記事を読むのは興味深い
  • これは本当に素晴らしい。テキストはデザインにおいて十分に活用されていない媒体だと思う
  • 「このコードを ASCII で収めた GitHub リポジトリが出てくるのを期待している」と言いたいが、Microsoft はおそらく許可しないだろうと気づく
  • Microsoft(おそらく Bill Gates 個人としても)はハッカーコミュニティに強い「反感」を引き起こしてきた。しかし、彼と Paul Allen が純粋なハッカーであり、技術の発展に大きく貢献したことは否定できない。もちろん、私たちは皆 OSS を好み、Linus(あるいは他の OSS 開発者の名前)を「悪徳資本家」より 100 倍は選ぶだろうが、彼らは評価されるべきだ