Mea Culpa 罪责

作者: 安迪·赫茨菲尔德 日期: 1986年1月 人物: 布鲁斯·霍恩、巴德·特里布尔、杰罗姆·库南、比尔·阿特金森、安迪·赫茨菲尔德、比尔·盖茨、伯勒尔·史密斯 主题: 硬件设计、软件设计、技术 概要: 关于苹果第一代Macintosh的开发以及制造它的人的轶事: 以下是我们犯过的一些最严重的错误 , 罪责 Mea Culpa

Most people who worked on the original Macintosh computer are happy with the work they did, both as individuals and as a team. But that doesn’t mean they don’t also feel a little embarrassed about some of the mistakes they made. It’s a good idea to think about, and maybe even admit to, the biggest mistakes I personally made, as well as the main problems with the whole system and product.

大多数使用原始 Macintosh 计算机的人都对他们所做的工作感到满意,无论是作为个人还是作为团队。但这并不意味着他们不会对自己所犯的一些错误感到有点尴尬。
思考甚至承认我个人所犯的最大错误以及整个系统和产品的主要问题是一个好主意。

I made a big mistake with something called the memory manager. A man named Bud Tribble took a part from the Lisa computer and adapted it for the Macintosh. We needed to add a few things to make it better. One thing was a special label we could put on some memory blocks, which meant we couldn’t move the block at that moment. Another change was a flag that told the memory manager it could delete a block if there wasn’t enough memory. The main mistake was where I decided to put the controls for these special labels.

我在内存管理器上犯了一个大错误。一位名叫巴德·特里布尔 (Bud Tribble) 的人从 Lisa 计算机中取出了一部分,并将其改编为 Macintosh。我们需要添加一些东西以使其变得更好。
有一件事是我们可以在某些内存块上贴上特殊标签,这意味着我们当时无法移动该块。另一个变化是一个标志,它告诉内存管理器,如果没有足够的内存,它可以删除一个块。
主要的错误是我决定将这些特殊标签的控件放在哪里。

I placed the controls for making memory blocks “locked” or “purgable” at the end of a special number (called a master pointer) because those bits weren’t being used for anything else. The computer I was working with, the 68000, only uses 16 megabytes of memory. That means the last 8 bits of a memory address are always zero, and aren’t used by the computer. I thought it was a good idea to put these controls in the last bit of the number because they are easy to test.

我将用于使内存块“锁定”或“可清除”的控件放置在特殊数字(称为主指针)的末尾,因为这些位没有用于其他任何用途。我使用的计算机 68000 仅使用 16 MB 内存。
这意味着内存地址的最后 8 位始终为零,并且不被计算机使用。我认为将这些控件放在数字的最后一位是个好主意,因为它们很容易测试。

It was silly to rely on memory bits not being used. This caused problems when the Mac moved to a new processor in 1987. The new processor had a special way of addressing memory that made it hard for the Mac’s memory manager to keep using some bits as flags. It was easy to fix the memory manager, but many third-party programs did the same thing, even though it wasn’t allowed. It took a year or so to find and fix all the problems to make the Mac’s software work with the full address space of the new processor.

依赖未使用的内存位是愚蠢的。当 Mac 在 1987 年转向新处理器时,这引起了问题。新处理器有一种特殊的内存寻址方式,这使得 Mac 的内存管理器很难继续使用某些位作为标志。
修复内存管理器很容易,但许多第三方程序做了同样的事情,尽管这是不允许的。我们花了一年左右的时间找到并解决了所有问题,使 Mac 的软件能够在新处理器的完整地址空间上运行。

I made a mistake when I used a small amount of memory for some important settings for our toolbox. The computer I was using had a special way of storing important settings in the beginning of its memory, which was efficient. I thought it was a good idea to do the same for our toolbox, but it was a mistake. This meant we couldn’t run two or more programs at the same time, because each program needed its own set of settings.

当我使用少量内存来进行工具箱的一些重要设置时,我犯了一个错误。我使用的计算机有一种特殊的方式将重要设置存储在内存的开头,这种方式非常有效。
我认为对我们的工具箱做同样的事情是个好主意,但这是一个错误。这意味着我们无法同时运行两个或多个程序,因为每个程序都需要自己的一组设置。

At first, it didn’t matter that the computer could only hold 128,000 bits of information in its memory. This was because we could only run one program at a time. But when Apple released a new computer with 512,000 bits of memory in September 1984, it became a problem. When I left Apple and started working on my own, I figured out a way to solve the problem. I wrote a program called Switcher that let multiple programs stay open at the same time. This worked by moving parts of the programs to a “hidden” area of memory when switching between them. I developed this program in just a few days. Although it took a little extra time to switch between programs, and it made it harder to use a special chip to manage memory in the future, it wasn’t as big of a deal as I thought it would be.

起初,计算机的内存只能容纳 128,000 位信息,这并不重要。这是因为我们一次只能运行一个程序。但当苹果公司在 1984 年 9 月发布了一款具有 512,000 位内存的新计算机时,它就成了一个问题。
当我离开苹果并开始自己工作时,我找到了解决问题的方法。我编写了一个名为 Switcher 的程序,可以让多个程序同时保持打开状态。这是通过在程序之间切换时将部分程序移动到内存的“隐藏”区域来实现的。我在短短几天内开发了这个程序。
虽然在程序之间切换需要花费一些额外的时间,并且使将来使用特殊芯片来管理内存变得更加困难,但这并没有我想象的那么大。

We wanted the Macintosh computer to use a simple design so it could work well even with limited parts inside. We thought we could do this by not using a special part that manages memory, which would have cost a lot. This was a good decision because of the cost. However, we also decided to treat all software as one and the same, rather than separating user and system code. This made it easy for programs to run on the computer and made the system simpler. But, it was a bad choice in the long run because it made it harder to control the software as the computer developed.

我们希望 Macintosh 计算机采用简单的设计,这样即使内部部件有限,它也能很好地工作。我们认为我们可以通过不使用管理内存的特殊部件来做到这一点,否则会花费很多。考虑到成本,这是一个很好的决定。
然而,我们还决定将所有软件视为同一软件,而不是将用户代码和系统代码分开。这使得程序可以很容易地在计算机上运行,​​并使系统变得更简单。但是,从长远来看,这是一个糟糕的选择,因为随着计算机的发展,它使得控制软件变得更加困难。

Even someone as good as Bill Atkinson made mistakes sometimes. His biggest mistake was using a type of number called a signed 16-bit integer to store sizes in certain parts of the QuickDraw system. This caused a problem because it meant that certain things, like regions and pictures, couldn’t be any bigger than 32 kilobytes. This became a big limitation when people started using computers with more memory in the future. Another person, Bruce Horn, made a similar mistake with his resource manager. He used 16-bit numbers for offsets, which meant that file sizes were limited unnecessarily.

即使像比尔·阿特金森这样优秀的人有时也会犯错误。他最大的错误是使用一种称为带符号 16 位整数的数字来存储 QuickDraw 系统某些部分的尺寸。
这导致了一个问题,因为这意味着某些内容(例如区域和图片)不能大于 32 KB。当人们将来开始使用具有更多内存的计算机时,这成为一个很大的限制。
另一个人 Bruce Horn 在他的资源管理器中也犯了类似的错误。他使用 16 位数字作为偏移量,这意味着文件大小受到不必要的限制。

The main issue with the Macintosh computer’s hardware was that it couldn’t be easily made bigger or changed. This wasn’t just a technical problem, but also a matter of opinion. We thought it would be better to make every Macintosh computer the same, so it would be simpler for users and developers. This was a valid idea, and some people thought it was brave, but it wasn’t very realistic. The computer industry was changing too fast for this approach to work. Moore’s Law, which says that computers will get faster and cheaper quickly, is a big reason why. One of the designers, Burrell, tried to add some ways to make the Macintosh better, but it didn’t work perfectly.

麦金塔计算机硬件的主要问题是它不能轻易地变大或改变。这不仅仅是一个技术问题,也是一个观念问题。我们认为最好让每台 Macintosh 计算机都一样,这样对于用户和开发人员来说会更简单。
这是一个正确的想法,有些人认为这是勇敢的,但不太现实。计算机行业变化太快,这种方法无法发挥作用。摩尔定律是一个重要原因,该定律指出计算机将变得更快、更便宜。
其中一位设计师 Burrell 试图添加一些方法来使 Macintosh 变得更好,但效果并不完美。

When the hardware of a thing can’t be changed or added to, it makes its other problems worse. In the first Mac, we made a big mistake. We didn’t give it enough space to store files. The way we stored files was simple and didn’t work well with big hard drives. In fact, someone from Microsoft, Bill Gates, told us about this problem in 1981. We also didn’t have a good way to get files in and out of the computer quickly enough for the hard drive. This was a mistake, but it was hard for us to fix because the Mac was one of the things that made it different from another expensive computer, the Lisa. Unfortunately, this lack of flexibility also made it harder for other companies to help fix the problem. But some companies still tried to help anyway.

当一个东西的硬件无法改变或添加时,它的其他问题就会变得更糟。在第一台 Mac 上,我们犯了一个大错误。我们没有给它足够的空间来存储文件。我们存储文件的方式很简单,并且不适用于大硬盘。
事实上,微软的比尔·盖茨 (Bill Gates) 在 1981 年就告诉过我们这个问题。我们也没有一个好的方法可以让硬盘足够快地将文件移入和移出计算机。
这是一个错误,但我们很难修复,因为 Mac 是它与另一台昂贵的计算机 Lisa 不同的地方之一。不幸的是,缺乏灵活性也让其他公司更难帮助解决问题。但一些公司仍然试图提供帮助。

In a bigger sense, I think many of our mistakes happened because we didn’t understand what we were really doing. We thought we were making a great new computer, like the Apple II but for the 1980s, but instead, we were actually creating something that would be used for a very long time. If we didn’t do it right, none of the other compatible computers that came later would have been possible. Maybe if we had known how important it would be in the future, we would have put more effort into making it good for now as well.

从更大的意义上来说,我认为我们的许多错误的发生是因为我们不明白我们真正在做什么。我们以为我们正在制造一款很棒的新电脑,就像 20 世纪 80 年代的 Apple II 一样,但事实上,我们正在创造一种可以使用很长时间的东西。
如果我们做得不对,后来出现的其他兼容计算机就不可能实现。也许如果我们知道它在未来有多么重要,我们就会付出更多的努力让它在现在也变得更好。
目录