日期:2008-03-31 14:40


The error-reporting service built into the Windows operating system is a massive global network for speaking truth to power. Be you a lowly clerk of accounts or a mighty captain of industry, when a Windows program crashes, you'll see a pop-up with an offer to 'tell Microsoft about this problem.'

Windows操作系统自带的错误报告机制 成了一个庞大的全球性实情汇报 络。不管你是名不见经传的会计师还是呼风唤雨的行业泰斗,每当一个Windows程序无法正常运行时,电脑都会一视同仁地蹦出一条提示:请向微软(Microsoft)汇报此错误。

Enough people around the world choose to do so that on the busiest days, 50 gigabytes of data from these error reports stream into Microsoft. Two dozen programmers are charged with monitoring them. The stories they tell of good computer programs going bad are full of the stuff of opera: pride and sloth, with lots of chaos theory and complexity thrown in.

全世界有不少用户选择了把问题汇报给微软,于是最繁忙的时候会有多达50G的错误报告数 从世界各个角落流向微软。微软有二三十名程序员专门负责处理这些信息。这些数 反映出的程序毛病真是无奇不有,充满戏剧色彩:傲慢和怠惰中掺杂着混沌理论和 杂化。

Errors come in two sorts. Kernel errors happen in the inner sanctum of the operating system, which lets in only essential programs -- drivers and the like -- and then gives them free rein. But if, say, a printer driver suddenly erases the kernel code needed to access the disk drive, the operating system will have part of its brain cut out. The result is the 'blue screen of death' in Windows and Mac, or a 'panic' in Unix.


The applications we use don't have the same all-access backstage passes as kernel programs. When they crash, the system itself usually stays up. Microsoft lists a dozen reasons for application crashes; my favorite is the absence of 'defensive programming.' Coders, just like freeway drivers, shouldn't assume other people are doing their jobs correctly. If you ask for two bytes of data, count the bytes when they're handed back.

我们平常使用的应用程序不像核心程序那样能自由进入电脑的深层。当这些应用程序崩溃时,操作系统本身一般还是运作正常的。微软罗列了十多个应用程序崩溃的可能原因,我最认同的一项是缺乏“防御性编程”,程序编写员就像是高速公路上的驾驶员,他们不能想当然地认为其他人都能把自己的工作做好。如果你要求得到两个字节的数 ,那么当它们被交回来的时候就要数一数字节数。

Microsoft folks like Trevor Kurtz, who heads one of the error-checking teams, are proud of their work: how scrupulous they are about respecting user privacy; how freely they share the aggregated data with outside software developers.

正如负责一个错误核查小组的特雷福•库尔茨(Trevor Kurtz)那样,微软人为自己的工作感到骄傲:他们小心翼翼地保护用户的隐私信息,但同时又随意地把收集到的数 跟外部的软件开发商共享。

Some things they won't tell you, though: which programs from Microsoft or others crash the most; who is at fault, Windows or the program.


The Microsoft nominations from my household include Internet Explorer, which regularly stalls, and Windows Explorer, which on full drives can't properly execute the keyboard shortcut for opening all folders and subfolders.


It's far from all bad, though. Word and Excel seem like Gibraltar, and months now go by in-between blue screens.


The experience of dealing with a software bug can involve an emotional journey that starts with helpless blind rage and ends with, if not a Kubler-Ross style of acceptance, then at least a little empathy.


Adobe allowed me to better understand bug-ology by helping me with problems with Premiere Pro, an amazingly powerful piece of video-editing software that, alas, seems to crash more than I had anticipated. One particular crash, involved with making screen titles, seemed especially crude, and Adobe thought it might involve a video driver.

Adobe 公司曾帮助我解决Premiere Pro的问题,这使我对程序崩溃这门学问有了进一步的了解。Premiere Pro是个功能超乎想象的视频编辑软件,然而它崩溃的次数也超乎我的预料。其中一次崩溃是在制作屏幕标题的时候,这个毛病好像尤其顽固。Adobe公司猜测它可能跟视频驱动有关。

It didn't. The next step was the lengthy process of turning parts of the system off and on to see what made a difference. It's the computer equivalent of taking endless allergy tests to see what's making you sneeze.

然而却不是。接下来一个漫长的过程开始了,他们把系统的各个部分逐一打开、关闭,看看前后有何区别。这情形就好像你打了个喷嚏,却要无休止地做过敏测试以便 定原因,只不过这个测试现在拿到了电脑上而已。

I declined. Frequent saving of my project was easier.


Adobe support engineer Mitch Wood told me about a bit of Premiere Pro sleuthing he had just finished, with a user who couldn't import video. It took many hours to figure out that a piece of software from a small company had mislabeled one of its tiny graphics routines. That slip-up cascaded throughout Windows and ended up keeping Premiere Pro from doing its job. That sort of complexity is part of what makes the personal computer so exciting. But, as the story shows, it's also one of the main causes of all the errors that drive users nuts. There is just so much that can go wrong.

Adobe 的技术工程师米奇•伍德(Mitch Wood)向我透露了一点他刚完成的一个Premiere Pro错误追踪情况,该Premiere Pro用户的问题是没办法导入视频。伍德花了很多时间最后才发现原来是某小公司生产的软件错误标示了一个很小的日常图片操作。这个小错误渐渐波及整个 Windows,最后导致Premiere Pro瘫痪。这种复杂性正是个人电脑如此激动人心的部分原因,而同时正如这个例子所反映的那样,这也是那些能让用户气得发狂的主要错误之一。能出毛病的地方太多了。

Why, then, do so many software companies make it even worse with their Napoleonic software? (That's my phrase for half-pint programs that crown themselves emperor by insisting pridefully that they launch when Windows launches, or by sticking a miniversion of themselves in memory at all times.)


The latter is supposed to speed their own start-up, but in addition to adding to the system's complexity and thus its tendency to crash, these programs play a cynical zero-sum game. The time saved launching the program must, of necessity, be transferred instead to Windows boot time, which we all know doesn't need to get any longer.

他们的后一种做法旨在加快其自己程序的启动速度,不过除了让系统更 杂、更容易死机之外,这些程序正在玩一个愤世嫉俗的零和游戏。启动程序节省的时间必然会转加到Windows的启动时间上,而我们也知道Windows的启动时间是不能再长的了。

Companies sometimes do this to be able to push out program updates every few weeks. Had Dante used a computer, he surely would have created a special circle of hell for programs that gratuitously update.


Worse, these often also make you reboot. Windows, properly done, rarely needs rebooting, but because of slothful updates, they can be a daily curse. In an update, all the old versions must be shut down. Programmers can write some code to do that, or they can have users do it for them by taking five minutes out of their busy lives to reboot.


Mahadev Satyanarayanan, who teaches computers at Carnegie Mellon, says it's impossible for software to be defect-free. Still, he thinks Microsoft folks would be better off if, in open-source fashion, they let others see under the hood. A million eyes beat two dozen any time.

卡内基梅隆大学的电脑教师马哈德夫•萨特亚那拉亚南(Mahadev Satyanarayanan)认为,软件是不可能完美无缺的。不过他还是觉得,如果微软能公开源代码,让别人看清楚程序背后的玄机,微软人的日子可能会好过些。毕竟一百万双眼睛总比二十多双眼睛要强。

  • assumevt. 假定,设想,承担; (想当然的)认为
  • allergyn. 过敏症,反感,厌恶
  • tendencyn. 趋势,倾向
  • helplessadj. 无助的,无依靠的
  • lengthyadj. 冗长的,漫长的
  • faultn. 缺点,过失,故障,毛病,过错,[地]断层 vt.
  • networkn. 网络,网状物,网状系统 vt. (以网络)覆
  • minutesn. 会议记录,(复数)分钟
  • kerneln. 核心,中心,精髓 [计算机] 核心
  • beatv. 打败,战胜,打,敲打,跳动 n. 敲打,拍子,心跳