MS-DOS is perhaps one of the strongest examples of requiring absolute unyielding backward compatibility. Hundreds if not thousands of programs scanned memory looking for specific byte sequences inside MS-DOS so it could patch them or hunted around inside MS-DOS's internal state variables so it could modify them. If you move one thing out of place, those programs stop working.Я не знал об этом. Я знал, что DOS и Windows проводили политику фанатичной совместимости с предыдущими версиями. Я знал, что во всех версиях Windows хранится и пополняется список "совместимых программ": когда Windows распознает, что бежит такая программа, она специально возвращает ей нестандартные результаты на определенные системные вызовы - потому что такие результаты возвращала какая-то прошлая версия, и данная программа этим пользуется, хоть они и были недокументированы.
MS-DOS contains chunks of "junk DNA", code fragments which do nothing but waste space, but which exist so that programs which go scanning through memory looking for specific byte sequences will find them. (This principle is not dead; there's even some junk DNA in Explorer.)
Но что в коде MS-DOS специально оставляли куски байтов из предыдущих версий, которые и не запускались никогда, но нужны были для старых программ, которые специально их искали - этого я не знал. Это уже почти за пределами моего понимания.
Когда очередные победители будут в очередной раз писать историю первых десятилетий персональных компьютеров, давайте и это вспомним. Уверенная победа Майкрософта была обусловлена многими причинами: глупыми поступками IBM, недальновидностью Apple, агрессивной тактикой самого Майкрософта по экслюзивным сделкам с OEM... но еще и героическими усилиями во имя совместимости старых приложений с новыми версиями ОС и даже с новыми ОС. Никакой программист не хочет заниматься такой мутной херней - но важность ее для пользователей Майкрософт понимала лучше всех своих конкурентов.