翻译《The Old New Thing》 - Why does the CreateProcess function do autocorrection?

本文讨论了WindowsCreateProcess函数如何在处理包含空格的程序路径时进行自动修正,以兼容旧程序。作者探讨了实用主义与纯粹主义在技术决策中的平衡,指出用户需求和市场接受度对于产品成功的重要性,以电动汽车和软件市场竞争为例.
摘要由CSDN通过智能技术生成

Why does the CreateProcess function do autocorrection? - The Old New Thing (microsoft.com)icon-default.png?t=N7T8https://devblogs.microsoft.com/oldnewthing/20050623-03/?p=35213

Raymond Chen 在 2005 年 6 月 23 日


为什么 CreateProcess 函数会进行自动更正?

译注:在文章中提到的 "CreateProcess function do autocorrection"(CreateProcess 函数进行自动更正)是指该函数在处理程序路径时的一种行为。具体来说,当一个程序在创建进程时传递给 CreateProcess 函数的可执行文件路径中包含空格,而没有使用引号正确地括起来,CreateProcess 函数会尝试自动更正这个问题,以确保程序能够正确地创建进程。

在早期的 Windows 系统中,一些程序在写入可执行文件路径到注册表时,并没有正确处理空格,因为在当时短文件名(SFN)路径中空格的使用非常罕见。因此,CreateProcess 函数在设计时需要考虑到这一点,以兼容那些没有正确处理空格的旧程序。

        没有考虑到长文件名处理的程序可能会犯下一些错误,比如在将可执行文件的路径写入注册表时,没有意识到路径中可能包含需要用引号括起来的空间。(虽然技术上允许,但在短文件名(SFN)路径中,空格的使用极为罕见。)

        CreateProcess 函数面临一个选择:是自动更正这些无效路径,还是让程序因此停止运行。

        这是一个实用主义与纯粹主义之间的较量。

        纯粹主义者可能会说:“让他们为他们的错误付出代价吧。我们不会为了迁就这种低级错误而破坏我们完美的架构。”然而,这种态度是有代价的:如果一个标榜“纯粹”的系统无法运行用户所需的程序,用户就不会选择使用它。

        换句话说,如果你的产品不能持续发展到 2.0 版本,那么无论 1.0 版本多么出色,都无济于事。

        你是选择“保持纯粹但无人问津”,还是“追求实用而广受欢迎”?历史上充满了许多技术上先进但因缺乏市场接受度而消亡的例子,如索尼的 Betamax 录像带、美泰的 Intellivision 游戏机(以及在美国,公制测量系统也是同样的命运)。

        电动汽车也是一个例子。尽管电动汽车非常出色,但它们在市场上从未取得过显著的成功。只有当它们放弃一定的“纯粹性”,通过增加汽油混合动力引擎来迎合市场口味时,电动汽车才最终获得了市场的认可。

        我不断看到这样的情况发生。比如,一个假设中的产品团队,他们制作了自动化绘图软件,可能会说:“我简直不敢相信我们在竞争中输给了 Z 公司。诚然,Z 公司的图表可能更快、更吸引人,但我们的软件在处理<微妙细节>上更为准确。当你遇到<极端情况>时,他们的图表会出现轻微的变形。他们之所以更快,是因为他们没有尝试防止在<场景 Q>中 X 和 Y 发生重叠。我们做到了这一切;这就是为什么我们的速度较慢,但也正因为如此,我们的产品更优秀。Z 公司的人根本‘不懂’。”

        你猜怎么着?消费者正在用他们的钱包做出选择,而他们当前的选择表明,尽管存在那些“可怕的缺点”,Z 公司的产品仍然更受欢迎。消费者可能不理解他们产品中的“某些方面”,但他们显然理解“让足够多的人满意到愿意为之付费”的重要性。

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0x0007

可不可奖励我吃只毛嘴鸡 馋😋

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值