在 Apple 1 计算机物理构建之前,Steve Wozniak 通过在纸上起草汇编代码并将其手动输入到硬件中,编写了其 BASIC 解释器。这种方法论通常被称为“慢速编程”,是那些缺乏多台机器或现代开发环境资源的 8 位爱好者的一种标准做法。
“慢速编程”工作流程
Hacker News 上的原始帖子探讨了 Wozniak 是如何在硬件存在之前编写 Apple 1 BASIC 的。Hacker News 上的评论者解释说,Wozniak 遵循了 8 位爱好者的默认路径:在纸上编写程序并在现场进行测试。
一位以 femto 为名的评论者指出,这种“慢速编程”是一种刻意的权衡。因为过程缓慢,它迫使程序员在触摸键盘之前就对逻辑进行深入思考。
这种方法让开发者能够背诵常用指令,最终使他们能够几乎完全凭记忆将汇编语言转换为机器代码。
手动汇编与技术参考
技术过程涉及研究 CPU 的技术参考手册以了解其指令集架构 (ISA)。一位名为 billforsternz 的评论者将此描述为通过在内存中存储特定代码来“塑造功能”的过程。
这要求在纸上非常仔细地写出每一条指令和十六进制代码,包括调整内存地址。这个过程对哪怕最微小的错误也极不容忍,因为一个错误的字符就可能破坏整个程序。
一位名为 david-gpu 的评论者指出,虽然如果 ISA 广为人知,这本身并不“困难”,但它是一项极其乏味的任务,现今已在很大程度上被现代编译器所取代。
硬件限制与离线编辑
在 Apple 1 时代,硬件和存储极其昂贵。一位名为 MarkusWandel 的评论者回忆说,即使是单个软盘在今天的货币中也可能花费超过 20 美元,这使得频繁保存工作变得困难。
为了规避这些成本,一些开发者使用行式打印机输出他们的代码。这允许他们“保存”工作,并在休息时间(例如在公交车上)用铅笔继续进行调试。
这些限制培养了一些开发者至今仍保留的习惯,例如比起自动补全或语法高亮等现代便利功能,他们更倾向于手动逻辑。
手动时代的权衡
那个时代的首要权衡是牺牲速度以换取对机器更深层次、更亲密的理解。手动汇编要求对处理器达到一定程度的精通,而现代高级语言往往会跳过这一步。
虽然现代工具提供即时反馈,“慢速”方法确保了逻辑在执行之前是正确的。然而,正如一位评论者指出的,要达到 Wozniak 在 1975 年所展示的精通水平,需要数十年的经验。
