Switcher 切换器

作者: 安迪·赫茨菲尔德 日期: 1984年10月 人物: 安迪·赫兹菲尔德、尼尔·康岑、比尔·盖茨、巴德·特里布尔、史蒂夫·乔布斯、史蒂夫·卡普斯、查尔斯·西蒙尼、菲尔·戈德曼、汤姆·皮特里、维克多·布尔、约翰·马可夫、伯勒尔·史密斯、盖伊·川崎 主题: 软件设计、技术、薪酬 概要: 关于苹果第一代Macintosh的开发以及制造它的人的轶事: Macintosh 的第一个多任务环境 , 切换器 Switcher

After I left my job at Apple in March 1984, I started working on a new project. It was a special machine that could scan pictures and texts into a computer, and it was designed to work with the Macintosh. I worked with a small company called Thunderware to make it. I started working on it in June 1984, and by October, it was almost finished.

1984 年 3 月我辞去苹果公司的工作后,我开始从事一个新项目。它是一种特殊的机器,可以将图片和文本扫描到计算机中,并且设计用于与麦金塔电脑配合使用。我与一家名为 Thunderware 的小公司合作制作了它。我从 1984 年 6 月开始做这件事,到 10 月,它几乎完成了。

Tom Petrie, my coworker at Thunderware, arranged some special shows for computer magazines to get good reviews and help sell the product. Tom and I went to an office in Hillsborough on October 11th, 1984, to show Thunderscan to Byte magazine.

我在 Thunderware 的同事 Tom Petrie 为计算机杂志安排了一些特别节目,以获得好评并帮助销售产品。 1984 年 10 月 11 日,我和汤姆前往希尔斯伯勒的一间办公室,向 Byte 杂志展示 Thunderscan。

The person who wrote the review for Byte magazine was John Markoff. He was a good reporter who wrote about computers for the San Francisco Chronicle. Tom talked about Thunderscan while I set it up and started using it. John asked some questions and took notes on his IBM computer. I thought his computer was old-fashioned and didn’t like the text editor he was using. As I was answering one of his questions, the phone rang.

为 Byte 杂志撰写评论的人是约翰·马科夫 (John Markoff)。他是一位优秀的记者,为《旧金山纪事报》撰写有关计算机的文章。当我设置并开始使用 Thunderscan 时,Tom 谈到了它。
约翰提出了一些问题,并在他的 IBM 计算机上做了笔记。我认为他的电脑很老式,不喜欢他使用的文本编辑器。当我正在回答他的一个问题时,电话响了。

He said “Excuse me” and then pressed some keys on his computer. The screen changed to a different program. He talked on the phone for a minute or two, sometimes typing, and then finished the call. After that, he pressed some keys again to switch back to his notes on Thunderscan.

他说了声“对不起”,然后按下了电脑上的一些键。屏幕变成了不同的程序。他在电话里聊了一两分钟,有时还打字,然后就挂断了电话。随后,他又按了一些键,切换回了雷扫的笔记。

“I just did something,” I said to John. “I’m curious about the computer program you are using. How did you make it switch to a different program so fast?”

“我只是做了一些事情,”我对约翰说。 “我很好奇你正在使用的计算机程序。你是如何让它如此快地切换到不同的程序的?”

“Hey, I’m using a special program called Memory Shift,” John said. “Haven’t you heard of it?” “It lets me keep lots of programs open at the same time and quickly switch between them. I’ve been using it a lot lately.”

“嘿,我正在使用一个名为“记忆转移”的特殊程序,”约翰说。 “你没听说过吗?” “它让我可以同时打开许多程序并在它们之间快速切换。我最近经常使用它。”

“I think I can do that for the Macintosh”, I said suddenly, without thinking.

“我想我可以在 Macintosh 上做到这一点”,我不假思索地突然说道。

The new Macintosh computer with 512,000 kilobytes of memory was just being shipped. I thought about using it to run multiple programs at the same time, but I was worried it would cause problems because of the limited memory. However, when I saw how someone was using their computer to switch between different programs, I had an idea that didn’t seem too difficult to make work.

具有 512,000 KB 内存的新型 Macintosh 计算机刚刚发货。我想过用它来同时运行多个程序,但我担心它会因为内存有限而出现问题。
然而,当我看到有人如何使用计算机在不同的程序之间切换时,我有了一个似乎不太难实现的想法。

“Okay, that sounds good,” John said. I kept showing off the Thunderscan demo, but it was hard for me to pay attention because I was thinking about how to change from one program to another. There were some tricky things to figure out, but I thought it would be easy to make it work. If I could make it work, it would be very useful.

“好吧,听起来不错,”约翰说。 我一直在展示 Thunderscan 演示,但我很难集中注意力,因为我正在考虑如何从一个程序更改为另一个程序。
有一些棘手的事情需要弄清楚,但我认为让它发挥作用很容易。如果我能让它发挥作用,那将非常有用。

Tom Petrie saw how excited I was about a new idea. On the way home from the demo, he reminded me of my important jobs and told me to finish the alpha version of Thunderscan as soon as possible before starting something new. We made a list of 12 tasks that I thought I could do in two weeks. Once I finished the alpha version, I could take a short break to work on something else, and then come back to Thunderscan to finish the final version by the end of November.

汤姆·皮特里看到我对一个新想法感到多么兴奋。在演示结束回家的路上,他提醒我重要的工作,并告诉我在开始新的事情之前尽快完成 Thunderscan 的 alpha 版本。我们列出了我认为可以在两周内完成的 12 项任务。
一旦我完成了 alpha 版本,我就可以短暂休息去处理其他事情,然后在 11 月底之前回到 Thunderscan 来完成最终版本。

For the next two weeks, I worked on making Thunderscan better for its first big test. I also thought about how to design the part of the program that lets the user switch between apps. I had to decide if I should put all the apps in one big block of memory or separate them into different areas. I chose to separate them, but I’m not sure if that’s the best way.

在接下来的两周里,我致力于让 Thunderscan 更好地进行第一次大型测试。我还考虑了如何设计程序中允许用户在应用程序之间切换的部分。
我必须决定是否应该将所有应用程序放在一大块内存中,或者将它们分成不同的区域。我选择将它们分开,但我不确定这是否是最好的方法。

There were many small issues to fix. The most important one was that the system software was using too much of the low memory to store special variables for each application. This meant we had to move these variables to other parts of the computer’s memory when an application wasn’t being used, so that other applications could use the same variables. It was tricky to figure out what exactly needed to be moved, because some variables were easy to identify, but others were tricky and depended on how the applications were using them. I knew my first try wouldn’t be perfect, but I was sure I could fix the problems that would arise once I saw how the applications were actually failing.

有许多小问题需要解决。最重要的是系统软件使用了太多的低内存来存储每个应用程序的特殊变量。
这意味着当不使用应用程序时,我们必须将这些变量移动到计算机内存的其他部分,以便其他应用程序可以使用相同的变量。
弄清楚到底需要移动什么是很棘手的,因为有些变量很容易识别,但其他变量则很棘手,并且取决于应用程序如何使用它们。
我知道我的第一次尝试不会是完美的,但我确信一旦我看到应用程序实际上是如何失败的,我就可以解决可能出现的问题。

A few days after starting to finish my project, I got a surprising phone call from Jeff Harbers. He is the boss of the team at Microsoft that makes apps for Mac computers. Jeff said that Microsoft has a very important project for Mac computers and they think I’m the best person to do it. He didn’t say what the project is, but offered to fly me to Seattle to talk about it in person. Although I was in the middle of finishing another project, I was curious so I agreed to go to Seattle to talk to him the following Tuesday.

开始完成项目几天后,我接到杰夫·哈伯斯打来的令人惊讶的电话。他是微软为 Mac 电脑开发应用程序的团队的老板。
Jeff 说微软有一个非常重要的 Mac 电脑项目,他们认为我是做这个项目的最佳人选。他没有透露这个项目是什么,但提出带我飞到西雅图亲自讨论这个项目。
虽然我正在完成另一个项目,但我很好奇,所以我同意下周二去西雅图和他谈谈。

Jeff came to the airport to pick me up, and we went to Microsoft’s main office. We met a 23-year-old man named Neil Konzen who is very good at computers. He works for Microsoft on the Macintosh computer. I knew Neil a long time ago when he was still just a teenager. We worked together on a computer project when he was 16 years old.

Jeff 来机场接我,然后我们去了微软的总部。
我们遇到了一位名叫 Neil Konzen 的 23 岁男子,他非常擅长计算机。他在 Microsoft 的 Macintosh 计算机上工作。
我很久以前就认识尼尔了,当时他还只是个十几岁的孩子。当他 16 岁时,我们一起参与了一个计算机项目。

Jeff asked me what I was doing, and I told him about a project I’m working on called Thunderscan. He seemed interested. But when I said I was going to try some new things with a special tool that helps switch between different things, Jeff’s mouth fell open and he looked surprised. He couldn’t believe what I was saying.

杰夫问我在做什么,我告诉他我正在从事一个名为 Thunderscan 的项目。他似乎很感兴趣。
但当我说我要使用一种特殊的工具来尝试一些新事物,以帮助在不同的事物之间切换时,杰夫张大了嘴,看起来很惊讶。他无法相信我说的话。

“He said, ‘That’s exactly what we wanted to discuss with you!’ and ‘It’s good that you’ve already started working on it’”.

“他说,‘这正是我们想和你讨论的!’以及‘很高兴你已经开始努力’”。

Jeff explained that Microsoft worked hard to make their programs use less space on the 128K Macintosh, which is important for competing. But, the new 512K Macintosh will make it harder for them, because it can hold larger programs. Also, Lotus just announced a special program for the 512K Mac that makes it easy to switch between different tasks. If the Macintosh can run multiple programs at the same time, the small size of Microsoft’s programs will still be a benefit. Their programs use less memory, so many of them can run together at once. Users can also create their own set of favorite programs. The purpose of this visit was to ask me to write a program that allows people to switch between different applications, and work with Microsoft.

Jeff 解释说,微软努力让他们的程序在 128K Macintosh 上占用更少的空间,这对于竞争很重要。但是,新的 512K Macintosh 将使他们变得更加困难,因为它可以容纳更大的程序。此外,Lotus 刚刚宣布了针对 512K Mac 的特殊程序,可以轻松地在不同任务之间切换。
如果Macintosh可以同时运行多个程序,微软程序的小尺寸仍然会是一个好处。他们的程序使用较少的内存,因此许多程序可以同时运行。用户还可以创建自己喜欢的节目集。这次访问的目的是要求我编写一个程序,允许人们在不同的应用程序之间切换,并与微软合作。

Neil Konzen showed me an idea he had for a design on a whiteboard. He decided to use one big pile of memory instead of dividing it into smaller sections, like we had talked about before. He added some new ideas to make it work better. I told him about another way to do it, where we would divide the memory into separate sections. I said it might be a good idea to use that way to make it more stable, even if it makes the memory a bit harder to manage. I told him I would think more about his idea.

Neil Konzen 向我展示了他在白板上的设计想法。他决定使用一大堆内存,而不是将其分成更小的部分,就像我们之前讨论过的那样。他添加了一些新想法以使其更好地发挥作用。
我告诉他另一种方法,我们可以将内存分成不同的部分。
我说使用这种方式使其更加稳定可能是一个好主意,即使它使内存更难以管理。我告诉他我会更多地考虑他的想法。

At the end of my visit to Microsoft, I had a private meeting with the company’s boss, Bill Gates. Jeff brought me to Bill’s office and told him about what we talked about earlier. Then, he left us alone so we could talk about making a deal. I had met Bill a few times before, and I knew he was good at technology. But I was also a little worried because people were saying he might not always be honest in his business deals.

在微软访问结束时,我与该公司的老板比尔·盖茨进行了一次私人会面。杰夫带我到比尔的办公室,告诉他我们之前谈过的事情。
然后,他就离开了我们,这样我们就可以讨论达成协议的事宜。
我之前见过比尔几次,我知道他擅长技术。但我也有点担心,因为人们说他在商业交易中可能并不总是诚实的。

He started by talking to me and saying how important the Macintosh was to Microsoft. Then he looked me straight in the eye and said, “You’re a great programmer, aren’t you? I think you must be a great programmer.”

他首先与我交谈,并说麦金塔电脑对微软有多么重要。然后他直视着我的眼睛说:“你是一个伟大的程序员,不是吗?我想你一定是一个伟大的程序员。”

“I agree,” I said, without knowing why he was trying to make me feel good.

“我同意,”我说,但不知道他为什么要让我感觉良好。

“I think so. How long do you think it will take to finish this project? Maybe a month or two? I think someone as good as you can finish it in less than two months.”

“我想是的。你认为这个项目需要多长时间才能完成?也许一两个月?我认为像你这样优秀的人可以在不到两个月的时间内完成它。”

“I don’t know,” I said. “I’m not that far along to know if it’s possible or not.”

“我不知道,”我说。 “我还不知道这是否可能。”

“Let’s get started,” he said. “I think the project has about 10,000 lines of code. As a skilled programmer, you can probably write 1,000 lines per week. So, if you’re as good as I think you are, it will take you around 10 weeks to finish it.”

“让我们开始吧,”他说。 “我认为这个项目大约有 10,000 行代码。作为一名熟练的程序员,你可能每周可以编写 1,000 行代码。所以,如果你像我认为的那样优秀,那么你大约需要 10 周才能完成它”。

I didn’t know what to say, so I didn’t say anything. He kept talking without me interrupting him.

我不知道该说什么,所以我什么也没说。他一直在说话,我没有打断他。

“How much should a very good computer programmer be paid? In our place, we pay our top programmers about $2,000 every week. Do you think you should get paid more than that?”

“一个非常优秀的计算机程序员应该得到多少报酬?在我们这里,我们每周向顶级程序员支付大约 2,000 美元。你认为你应该得到比这更多的报酬吗?”

I said “I don’t know”. It looked like Bill wanted to pay me less money for my work because he thought I could do it quickly. Bill was trying to make me say that I can do the application switcher fast, so he could pay me less.

我说“我不知道”。比尔似乎想少付我的工作钱,因为他认为我可以很快完成工作。比尔试图让我说我可以快速完成应用程序切换,这样他就可以少付我钱。

“I don’t think you can make more than $4,000 per week. Maybe even less. If you take ten weeks to write it, and you make $4,000 each week, then you would get a total of $40,000.”

“我认为你每周的收入不会超过 4,000 美元。甚至可能更少。如果你花十周的时间来写它,并且每周赚 4,000 美元,那么你总共会得到 40,000 美元。”

At first, $40,000 didn’t seem like a lot to me. I thought it was strange for Microsoft to want it so much. I think Bill was expecting me to say I wanted more money, but I wasn’t really interested in selling it to Microsoft, no matter how much I was paid. The thing should be part of the Mac OS in the long run.

起初,40,000美元对我来说并不算多。我觉得微软如此想要它很奇怪。我认为比尔希望我说我想要更多的钱,但我对将其出售给微软并不真正感兴趣,无论我得到多少钱。从长远来看,它应该成为 Mac 操作系统的一部分。

“Let’s be clear, I want to write this on my own, without any payment from you. I don’t want to talk about a deal until I’ve finished writing it, because it might not work out and then I won’t be able to make it work. But if it does work, I think it should be included with every Macintosh computer that has 512KB of memory.”

“让我们明确一点,我想自己写这篇文章,而不需要你支付任何费用。在我写完之前我不想谈论交易,因为它可能不会成功,然后我就不会但如果它确实有效,我认为每台拥有 512KB 内存的 Macintosh 计算机都应该配备它。”

Bill changed his plan. “Okay, it doesn’t matter if Microsoft owns it as long as our users can use it. I want you to promise that you will do your best to make it work well with our programs. If you have any problems, I want you to call Jeff to help you. We can talk about publishing it later if you need more time. Is that okay with you?”

比尔改变了他的计划。 “好吧,只要我们的用户可以使用它,微软是否拥有它并不重要。我希望你保证,你会尽最大努力让它与我们的程序很好地配合。
如果您有任何问题,我希望您致电 Jeff 来帮助您。如果您需要更多时间,我们可以稍后讨论发布它。你觉得可以吗?”

I said it sounded like a good idea and I promised to do my best to make it work well with Microsoft programs. This was important to me because most people use Microsoft apps, so I wanted to make sure it worked well with those. We shook hands and I left feeling happy and positive.

我说这听起来是个好主意,并且我承诺将尽最大努力使其与 Microsoft 程序良好配合。
这对我来说很重要,因为大多数人都使用 Microsoft 应用程序,所以我想确保它与这些应用程序配合良好。我们握了握手,离开时我感到快乐和积极。

By the time I got home to Palo Alto that night, I was excited to start working on something new. I still had a few days of work to finish the final version of Thunderscan, but I decided to try to build a simple test version of the application switcher first.

那天晚上,当我回到帕洛阿尔托的家时,我很高兴开始从事新的工作。我还有几天的时间来完成 Thunderscan 的最终版本,但我决定首先尝试构建一个简单的应用程序切换器测试版本。

I will need to create a user interface in the future to let people choose which programs to run. But for now, I didn’t have to worry about that because the program was designed to only work with a few specific programs, like MacPaint, MacWrite, and MacDraw. I worked for 20 hours straight to write the main part of the program. It worked by using some important system commands, like getting events, launching programs, and quitting. The hardest part was finding and understanding what was using the computer’s memory. As I worked, the program started to work, but it kept crashing at first. This was until I found and fixed the problems that were causing it to crash. It was very satisfying to see the program start to work correctly.

将来我需要创建一个用户界面,让人们选择要运行的程序。但现在,我不必担心这一点,因为该程序被设计为仅适用于少数特定程序,例如 MacPaint、MacWrite 和 MacDraw。
我连续工作了 20 个小时来编写程序的主要部分。它通过使用一些重要的系统命令来工作,例如获取事件、启动程序和退出。
最困难的部分是找到并理解什么在使用计算机的内存。当我工作时,程序开始工作,但一开始总是崩溃。直到我发现并修复了导致其崩溃的问题。看到程序开始正常工作真是令人非常满意。

I had been using the Macintosh for about an hour when I saw Bud Tribble come home. Bud had finished a big program at the University of Washington, where he studied medicine and science, and even worked as an intern for a year. But he decided that working on the Macintosh was more fun than being a doctor, so he went back to working at Apple. He returned to Apple in July 1984 and started working as the manager of the software team again. Bud was living at a house next door to mine, which belonged to Burrell Smith.

当我看到巴德·特里布尔回家时,我已经使用了麦金塔电脑大约一个小时。巴德在华盛顿大学完成了一个大型项目,在那里他学习医学和科学,甚至还实习了一年。
但他认为在麦金塔电脑上工作比当医生更有趣,所以他回到苹果公司工作。 1984年7月,他回到苹果,再次担任软件团队经理。巴德住在我家隔壁的一所房子里,那所房子属于伯勒尔·史密斯。

I took my friend Bud to my house to show him something cool. I could quickly switch between three computer programs: MacPaint, MacWrite, and MacDraw. Bud was impressed. But I was surprised when he said that, even though it was very fast, the switching was actually too quick.

我带我的朋友巴德到我家给他看一些很酷的东西。我可以在三个计算机程序之间快速切换:MacPaint、MacWrite 和 MacDraw。
巴德印象深刻。但当他说虽然很快,但切换其实也太快了。

“I think it might be confusing to switch from one thing to another without knowing what’s happening,” he said. “What if someone accidentally switches instead of meaning to? Maybe you could use animations to make the transition smoother and clearer.”

“我认为在不知道发生了什么的情况下从一件事切换到另一件事可能会令人困惑,”他说。 “如果有人无意中切换而不是有意切换怎么办?也许你可以使用动画来使过渡更加平滑和清晰。”

I thought that was a good idea. We decided to have one app move off the screen to the side while another one moved on, which made it easy for users to understand how the apps worked. It was like a plate on a lazy Susan, which you can turn to see the app you want. I quickly made some code for fast scrolling, and it looked really cool to see the apps moving quickly across the screen.

我认为这是个好主意。我们决定将一个应用程序从屏幕移到一侧,同时另一个应用程序继续移动,这使用户可以轻松了解应用程序的工作原理。
它就像一个懒惰的苏珊上的盘子,你可以转动它来查看你想要的应用程序。我很快编写了一些用于快速滚动的代码,看到应用程序在屏幕上快速移动看起来真的很酷。

I showed my idea to some friends at Apple and some groups of users. They liked it a lot. But I still had to finish making the product Thunderscan by the end of November, which was a big challenge. I finally did it! After taking a short break, I went back to work on another project I was calling “Switcher”. By Christmas, I had made a lot of progress and made it easier for people to switch between apps. I also made a feature that remembers groups of related apps.

我向苹果的一些朋友和一些用户群体展示了我的想法。他们非常喜欢它。但我还是要在11月底前完成Thunderscan产品的制作,这是一个很大的挑战。
我终于做到了!短暂休息后,我又继续从事另一个我称之为“Switcher”的项目。
到了圣诞节,我取得了很大的进步,让人们可以更轻松地在应用程序之间切换。我还制作了一个可以记住相关应用程序组的功能。

In January 1985, I got a phone call from Guy Kawasaki. He worked for Apple and told me that Apple wanted to buy a company called Switcher. Guy was in charge of making it happen. The first thing he needed to do was set up a special showing for Steve Jobs, a important person at Apple.

1985 年 1 月,我接到盖伊·川崎 (Guy Kawasaki) 打来的电话。他在苹果公司工作,告诉我苹果公司想收购一家名为 Switcher 的公司。
盖伊负责让这一切发生。他要做的第一件事就是为苹果公司的重要人物史蒂夫·乔布斯举办一场特别的表演。

I walked into Steve’s office feeling a little nervous. I thought Switcher was worth a lot of money to Apple, at least $250,000. But I knew Steve might not want to pay me that much. At the same time, I was very proud of Switcher and wanted to see how Steve would react to it.

我走进史蒂夫的办公室,感觉有点紧张。我认为 Switcher 对苹果来说值很多钱,至少 25 万美元。但我知道史蒂夫可能不想付给我那么多钱。同时,我对 Switcher 感到非常自豪,并想看看史蒂夫对此有何反应。

I turned on my computer and used the usual programs I show to people, like MacWrite, MacPaint, MacDraw, and the Finder. I also opened a small game that makes mazes. I changed some settings in the Switcher program so the special animation would be surprising when I showed it later. Then, I showed how I can quickly copy and paste text and pictures between MacWrite, MacPaint, and MacDraw. This took only a few seconds instead of minutes. After that, I turned on the animation and showed how I can easily move between these programs many times, going both forward and backward.

我打开电脑,使用我向人们展示的常用程序,例如 MacWrite、MacPaint、MacDraw 和 Finder。我还打开了一个制作迷宫的小游戏。我更改了 Switcher 程序中的一些设置,因此当我稍后展示它时,特殊的动画会令人惊讶。
然后,我展示了如何在 MacWrite、MacPaint 和 MacDraw 之间快速复制和粘贴文本和图片。这只花了几秒钟而不是几分钟。之后,我打开动画并展示了如何轻松地在这些程序之间多次移动,无论是前进还是后退。

“Stop talking now, I’ve had enough,” Steve said. “This is going to be good. Apple is going to include it with the Mac. Congratulations to you!”

“别再说了,我已经受够了,”史蒂夫说。 “这会很好。苹果将把它包含在 Mac 中。恭喜你!”

After that, he stopped talking and looked at me for a second with a very strong and serious look in his eyes. It was like he was trying to figure me out or maybe even try to frighten me.

说完,他不再说话,用非常强烈和严肃的眼神看了我一秒钟。就好像他试图了解我,甚至可能试图吓唬我。

“I don’t want you to use this situation to your benefit. I won’t let you use Apple for your own gain.”

“我不希望你利用这种情况为自己谋取利益。我不会让你利用苹果来谋取私利。”

“Can you explain that?” I asked him, really confused.

“你能解释一下吗?”我问他,真的很困惑。

“You couldn’t have written that program without learning secrets from your work at Apple. You don’t have the authority to set any price you want for it.”

“如果没有从苹果公司的工作中学到秘密,你就不可能编写出这个程序。你无权为其设定任何价格。”

I got mad. “The project is only halfway done, and if I don’t think I’m being paid enough, I won’t feel like finishing it.”

我生气了。 “这个项目只完成了一半,如果我认为自己没有得到足够的报酬,我就不想完成它。”

Steve looked at me very hard for a few seconds. Then he said one number, but didn’t explain what it meant.

史蒂夫非常认真地看了我几秒钟。然后他说了一个数字,但没有解释这意味着什么。

“One hundred thousand US dollars.”

“十万美元。”

“I’m not sure,” I said, “I think it’s probably worth a lot more than he’s offering.”

“我不确定,”我说,“我认为它的价值可能比他提供的要高得多。”

“Don’t disagree with me. I think $100,000 is a reasonable amount, and you probably agree too.”

“不要不同意我的观点。我认为十万美元是一个合理的数额,你可能也同意。”

I felt like I had no choice but to agree with Steve’s price because he is very convincing and I really wanted Switcher to come with the Mac. I finally worked out the deal with Guy Kawasaki. Besides the $100,000, I also got to keep 10% of the money Apple would make if they sold Switcher separately. Steve said they would never do that, but it turned out I got another $50,000 from the royalty.

我觉得我别无选择,只能同意 Steve 的价格,因为他非常有说服力,而且我真的希望 Switcher 能与 Mac 一起使用。
我终于和盖·川崎达成了协议。除了 10 万美元之外,我还可以保留苹果单独出售 Switcher 所赚的钱的 10%。
史蒂夫说他们永远不会这样做,但结果我又从版税中得到了 50,000 美元。

Making Switcher work wasn’t easy, but it was especially hard to finish. This is because Switcher changed some basic ideas about how programs work, but it still needed to make sure everything worked as usual. Towards the end, I spent a lot of time testing Switcher with many different programs and fixing problems that caused it to crash. Usually, I could find a way to fix the problem without making other problems worse.

让 Switcher 工作起来并不容易,但完成起来尤其困难。这是因为 Switcher 改变了程序工作方式的一些基本想法,但它仍然需要确保一切正常工作。
最后,我花了很多时间使用许多不同的程序测试 Switcher 并修复导致其崩溃的问题。通常,我可以找到解决问题的方法,而不会让其他问题变得更糟。

It was difficult to finish Switcher because it had to work well with Microsoft’s computer programs. Microsoft started developing this early, and they made some unusual choices that most developers would avoid. The main problem was that Microsoft’s instructions were written in a special language that was not easy to understand. This was because they wanted to save space, which was an idea taken from Xerox’s technology that Charles Simonyi, a well-known expert, liked.

完成 Switcher 很困难,因为它必须与微软的计算机程序很好地配合。微软很早就开始开发,他们做出了一些大多数开发人员会避免的不寻常的选择。
主要问题是微软的指令是用一种特殊的语言编写的,不容易理解。
这是因为他们想节省空间,这是著名专家查尔斯·西蒙尼(Charles Simonyi)喜欢的施乐技术的想法。

I had trouble fixing a problem with a program because it crashed and I couldn’t take it apart to look at it. This made it hard to find and fix the problem. After trying different ways, I finally figured out a way to step through the program a few steps at a time to find the part that was causing the problem. It was frustrating, but I was determined to solve the problem because I had promised to do so when I visited Microsoft.

我在解决程序问题时遇到了麻烦,因为它崩溃了,而且我无法拆开它来查看它。这使得查找和解决问题变得困难。
在尝试了不同的方法之后,我终于找到了一种方法,一次逐步执行程序,以找到导致问题的部分。
这很令人沮丧,但我决心解决这个问题,因为我在访问微软时就答应过这样做。

Before releasing Switcher in March 1985, I solved an important problem. Sometimes, using many programs at the same time can cause one program to stop working and affect all the other programs. I made it possible for the user to stop the current program if it gets stuck, by watching for a certain key combination while the computer is doing other things.

在 1985 年 3 月发布 Switcher 之前,我解决了一个重要问题。有时,同时使用多个程序可能会导致一个程序停止工作并影响所有其他程序。我让用户可以在当前程序卡住时停止当前程序,方法是在计算机执行其他操作时观察某个组合键。

I knew I had to choose a special key combination that was hard to do by accident. This was because you didn’t want people accidentally closing their programs. I chose the combination “Shift-Command-Option-Period”, where you had to hold down four keys at the same time. I thought this was very unlikely to happen by mistake. But, surprisingly, I got a call from Jeff Harbers at Microsoft.

我知道我必须选择一个特殊的组合键,这很难偶然完成。
这是因为您不希望人们意外关闭他们的程序。我选择了“Shift-Command-Option-Period”组合,您必须同时按住四个键。我认为这不太可能是错误发生的。
但令人惊讶的是,我接到了微软杰夫·哈伯斯的电话。

“Hey, I like the new ‘cancel’ feature you added. But, we need to change the button combination because we already use it in Microsoft Word. Microsoft Word is really complicated and has a huge number of keyboard shortcuts, which can be a bit overwhelming.”

“嘿,我喜欢您添加的新‘取消’功能。但是,我们需要更改按钮组合,因为我们已经在 Microsoft Word 中使用了它。
Microsoft Word 确实很复杂,并且有大量的键盘快捷键,这可能有点让人不知所措。”

“I’m open to changing it. What do you think I should change it to?” I said to Jeff.

“我愿意改变它。你认为我应该把它改成什么?”我对杰夫说。

Jeff didn’t think about what he wanted to do, so he said he would call me back later. The next day, he called me back and said he changed his mind. He wanted me to remember that the correct way to stop something is to use the keys shift, command, option, and period all at the same time. I couldn’t help but laugh.

杰夫没有考虑他想做什么,所以他说他稍后会给我回电话。
第二天,他给我回电话,说他改变了主意。他想让我记住,停止某事的正确方法是同时使用 Shift、Command、Option 和 period 键。我忍不住笑了。

“I agree,” I said. “But why did we change it? Doesn’t it still not work well with Microsoft Word?”

“我同意,”我说。 “但是我们为什么要改变它?它不是仍然不能很好地与 Microsoft Word 配合使用吗?”

“We will make a change in the next update so that Word doesn’t use a certain word. The problem was that we couldn’t find a safe way to use it - we’ve already tried all the possible combinations!”

“我们将在下一次更新中进行更改,以便 Word 不使用某个单词。问题是我们找不到安全的方法来使用它 - 我们已经尝试了所有可能的组合!”

I finished my project called Switcher in April 1985. I kept improving it for a little while, but later I gave it to someone else. That person was Phil Goldman, a very good programmer from a university in New Jersey who was new at Apple. Phil worked on a new system called MultiFinder with another programmer named Erich Ringewald. MultiFinder was an improvement to Switcher and was released in 1987.

我于 1985 年 4 月完成了名为 Switcher 的项目。我持续改进了它一段时间,但后来我把它交给了别人。
这个人就是菲尔·戈德曼(Phil Goldman),一位来自新泽西州一所大学的非常优秀的程序员,也是苹果公司的新人。 Phil 与另一位名叫 Erich Ringewald 的程序员一起开发了一个名为 MultiFinder 的新系统。
MultiFinder 是 Switcher 的改进版,于 1987 年发布。
目录