Apple 1コンピュータが物理的に構築される前に、スティーブ・ウォズニアックは紙にアセンブリコードを書き、それを手動でハードウェアに入力することでBASICインタプリタを執筆しました。この手法は、しばしば「スロー・プログラミング」と呼ばれ、複数のマシンや現代の開発環境を所有するリソースを持たなかった8ビットのホビーユーザーにとって標準的な慣行でした。

「スロー・プログラミング」のワークフロー

Hacker Newsの元の投稿では、ウォズニアックがハードウェアが存在する前にどのようにApple 1 BASICを書き上げたかを探求しています。Hacker Newsのコメント欄では、ウォズニアックが8ビットのホビーユーザーの標準的な経路に従い、プログラムを紙に書き、それらをその場でテストしたことが説明されています。

femtoというハンドルネームのコメント投稿者は、この「スロー・プログラミング」は意図的なトレードオフであったと指摘しました。プロセスが遅かったため、プログラマーはキーボードに触れる前に、ロジックに対して多大な思考を強制されることになったのです。

このアプローチにより、開発者は一般的な命令を暗記することができ、最終的にはアセンブリをほぼ完全に記憶からマシンコードに変換することが可能になりました。

手動アセンブリと技術リファレンス

技術的なプロセスには、CPUの技術リファレンスマニュアルを研究してその命令セットアーキテクチャ(ISA)を理解することが含まれていました。billforsternzというコメント投稿者は、これを特定のコードをメモリに格納することで「機能を成形する」プロセスとして表現しました。

これには、メモリアドレスの調整を含め、すべての命令と16進コードを紙の上に非常に注意深く書き出すことが必要でした。このプロセスは極めて些細なミスも許容されず、たった一つの誤った文字がプログラム全体を破壊する可能性がありました。

david-gpuというコメント投稿者は、ISAがよく知られていればこれは本質的に「難しい」わけではないが、現代のコンパイラによって大部分が置き換えられた、信じられないほど退屈な作業であると指摘しました。

ハードウェアの制約とオフライン編集

Apple 1の時代、ハードウェアとストレージは法外に高価でした。MarkusWandelというコメント投稿者は、当時の1枚のフロッピーディスクで現代の価値で20ドル以上したことを思い出し、頻繁に作業を保存することが困難であったことを回想しました。

これらのコストを回避するために、一部の開発者はラインプリンターを使用してコードを出力しました。これにより、彼らは作業を「保存」し、バスの移動中などの空き時間に鉛筆を使ってデバッグを続けることができました。

これらの制約は、オートコンプリートや構文ハイライトのような現代の利便性よりも手動のロジックを好むなど、一部の開発者が今日でも持ち続けている習慣を育みました。

手動時代のトレードオフ

この時代の主なトレードオフは、マシンに対するより深く親密な理解のためにスピードを犠牲にしたことでした。手動アセンブリには、現代の高水準言語によってしばしば回避される、プロセッサに対する高度な習熟が必要とされます。

現代のツールは即座のフィードバックを提供しますが、「スロー」な手法は、実行される前にロジックが健全であることを保証しました。しかし、あるコメント投稿者が指摘したように、ウォズニアックが1975年に示した習熟のレベルに達するには、数十年の経験が必要でした。