【资料图】
在PC上很容易把向后兼容视为理所当然,以至于我们甚至很少使用"向后兼容"这个短语。大多数老游戏都能简单地运行,而对于其他的东西,通常有一个内置于Windows或DOSBox的兼容模式来让它运行。这并不是偶然发生的,正如一位前微软程序员的旧博文所解释的那样。
例如,当微软希望用户切换到Windows 95时,他们甚至未操作系统添加了特定的代码来寻找《模拟城市》,如果它正在运行,就改变内存分配的方式,这样游戏就不会崩溃。这篇博文是Joel Spolsky在2000年5月写的,但最近被播客和游戏编程客栈编程制作人Kal Yoshika在Twitter上重新发现了。Spolsky写的是"鸡和蛋的问题",即让用户采用没有大量软件的平台,以及让php软件制造商为没有大量用户的平台生产软件。他说,微软的解决方案是确保旧的软件能够运行--包括《模拟城市》。
"Windows 95?没问题。漂亮的新32位API,但它仍然可以完美地运行旧的16位软件。微软对此非常着迷,花了一大笔python钱来测试他们能找到的每一个使用Windows 95的旧程序,"Spolsky写道。"乔恩罗斯php(Jon Ross)为Windows 3.x编写了《模拟城市》的原始版本,他告诉我,他不小心在《模拟城市》中留下了一个错误,即他读取了刚刚释放的内存。是的。它在Windows 3.x上工作得很好,因为内存从来没出现过泄露。?
"惊人的是,在Windows 95的测试版本中,《模拟城市》在测试中并不正常工作。微软追踪到了这个错误,并在Windows 95中加入了特定的代码以在计算机中寻找《模拟城市》。如果它发现《模拟城市》正在运行,它就会以一种特殊的模式运行内存分配器,不会立即释放内存。这就是那种对向后兼容性的执着,使人们愿意升级到Windows 95"。
诸如此类的例子并不鲜见,例如,初代版本《最终幻想7》如果运行在Windows NT而不是Windows 95上就会崩溃,所以Windows会对游戏谎报其实际运行的操作系统。