Ошибка совместимости
Компьютерное оборудование или программное обеспечение считается совместимым с ошибками , если оно точно воспроизводит нежелательную функцию. [1] предыдущей версии. Фраза находится в файле жаргона . [2]
Аспектом обеспечения обратной совместимости со старой системой является то, что клиентские программы таких систем часто зависят не только от указанных интерфейсов, но также от ошибок и непреднамеренного поведения. Это также должно быть сохранено при более новой замене. Помимо значительно более высокой сложности, которую необходимо поддерживать в ходе естественного развития кода или интерфейса, иногда это может вызывать проблемы с производительностью или безопасностью, а несогласованность в поведении интерфейсов может иногда приводить к новым ошибкам в программном обеспечении, использующем его, создавая сложно разрешить разнонаправленные перекрестные зависимости между различными частями кода. [3]
Примеры
[ редактировать ]ПРИНАДЛЕЖАЩИЙ
[ редактировать ]Примеры можно найти в MS-DOS / PC DOS : Когда MS-DOS/PC DOS 3.1 и выше (включая Windows 9x ) и OS/2 обнаруживают определенные метки FAT OEM , они не доверяют некоторым значениям блока параметров BIOS (BPB) и пересчитывают их на основе других параметров геометрии диска, чтобы обойти их. несколько ошибок расчета на единицу, вызванных некоторыми программами форматирования в более ранних выпусках этих систем. [4] [5] [6] [7] Хотя такое недокументированное поведение позволяет им справляться конкретно с этими неправильно отформатированными томами, оно ограничивает гибкость геометрии дисков, с которой они могут работать в целом, и может привести к тому, что они уничтожат правильно отформатированные тома, созданные сторонними организациями, если они отклоняются от настроек по умолчанию, используемых Майкрософт и IBM . [6] [7] Когда MS-DOS/PC DOS 5.0 и выше работают на процессорах с процессором 286 или выше, резидентный исполняемый загрузчик содержит код, специально разработанный для обнаружения и исправления некоторых широко распространенных приложений и загрузчиков-загрузчиков (например, программ, связанных со старыми версиями Microsoft EXEPACK или Rational Systems). ' 386 расширителей DOS), исправляя загруженный образ программы перед ее выполнением. [8] При определенных условиях базовая DOS также исправляет Windows ( WINA20.386 ). [9]
В ходе разработки DR-DOS также пришлось модифицировать, чтобы не только эмулировать многие недокументированные особенности и нежелательные свойства MS-DOS и PC DOS (например, необходимость использования некоторых вводящих в заблуждение имен файлов, таких как IBMBIO.COM , IBMDOS.COM или COUNTRY) . .SYS для файлов, которые не соответствуют спецификациям исполняемых файлов в DOS, [10] [11] [12] [номер 1] или необходимость введения пути к каталогу. с ограниченной длиной внутренней структуры текущего каталога (CDS) [9] [13] [14] ), но также и реальные ошибки в ядре и некоторых драйверах, необходимые для запуска некоторых других драйверов и приложений в DR-DOS, когда они тестировались только на определенных версиях MS-DOS. [9] [6] [8] [15] [16] [17]
Окна
[ редактировать ]Другим примером является Windows , которая традиционно эмулировала многие старые системные ошибки, чтобы обеспечить запуск старых низкоуровневых программ. В результате Wine , который позволяет запускать множество приложений Windows на других платформах, также должен поддерживать совместимость с Windows. [18]
Когда Microsoft прекратила поддержку 16-битного кода в Windows и больше не включала NTVDM в 64-битные версии операционной системы, исполняемый загрузчик был изменен, чтобы распознавать некоторые конкретные 16-битные программы запуска и установки и заменять их на месте. Fly с эквивалентными заглушками кода, работающими на 64-разрядных процессорах. [19] [20]
Другой
[ редактировать ]Во время разработки продукта, совместимого с IBM PC , Compaq инженеры обнаружили, что Microsoft Flight Simulator не запускается из-за того, что subLOGIC из Брюс Артвик назвал «ошибкой в одном из чипов Intel », что вынудило их сделать свой компьютер совместимым с ошибками IBM-ПК. [21] Другой пример аппаратного обеспечения можно найти в конструкции адресной строки IBM Personal Computer/AT A20 для эмуляции поведения старых процессоров. [8] [15]
В Microsoft Excel всегда была преднамеренная ошибка високосного года , которая ошибочно считала 29 февраля 1900 года фактической датой, чтобы обеспечить обратную совместимость с Lotus 1-2-3 . [22]
Хайрам Райт , инженер Google , рассказывает об этой проблеме, которую он наблюдал воочию, работая над основными библиотеками C++. Именно Титус Уинтерс , также инженер Google, популяризировал эту концепцию в более широком масштабе как « Закон Хайрама ». [23]
Заголовок HTTP-реферера — это неправильное написание слова реферер . Это была ошибка в исходном веб-предложении, и она была сохранена для совместимости.
См. также
[ редактировать ]Примечания
[ редактировать ]- ^ Файлы IBMBIO.COM и IBMDOS.COM представляют собой специальные двоичные образы, содержащие исполняемый код . Случайная попытка запустить их из командной строки, как если бы это были обычные программы в стиле COM, привела бы к сбою системы. По этой причине эти файлы имеют «скрытый», атрибут установленный в MS-DOS / PC DOS . Этого можно было избежать, выбрав другие расширения файлов (например, DRBIOS.SYS и DRBDOS.SYS ), но этого нельзя было сделать позже, чтобы сохранить совместимость с различными инструментами, ожидающими эти конкретные имена файлов. Чтобы исключить риск сбоев, эти файлы были преобразованы в толстые двоичные файлы в DR-DOS 7.02 и выше, теперь включая крошечные заглушки для корректного выхода при ненадлежащем вызове. [а] [б]
Ссылки
[ редактировать ]- ^ «совместимость между ошибками» . catb.org .
То же, что и совместимость с ошибками, но с дополнительными последствиями, заключающимися в том, что для обеспечения репликации каждой (известной) ошибки было затрачено много утомительных усилий.
- ^ «Совместимость с ошибками — www.jargon.net» . Проверено 03 февраля 2010 г.
- ^ Понтин, Джейсон (26 декабря 1994 г.). «Третья задержка Windows 95; нуждается в доработке» . Инфомир . 16 (52). InfoWorld Media Group, Inc.: 18.
- ^ Уильямс, Дэйв (12 января 1992 г.). Технический справочник программиста для MSDOS и IBM PC . ISBN 1-878830-02-3 . ДОСРЕФ . Проверено 8 января 2012 г. (Примечание. Автор упоминает, что DOS 4.0 проверяет OEM-маркировку, но отрицает, что DOS 3.2 также проверяет ее (хотя это так).)
- ^ Басс, Уолли (14 февраля 1994 г.). «Размер кластера» . Группа новостей : comp.os.msdos.programmer . Архивировано из оригинала 9 сентября 2017 г. Проверено 14 октября 2006 г.
- ^ Перейти обратно: а б с Пол, Матиас Р. (20 февраля 2002 г.). «Нужна DOS 6.22 (не OEM)» . alt.msdos.programmer . Архивировано из оригинала 9 сентября 2017 г. Проверено 14 октября 2006 г.
- ^ Перейти обратно: а б Пол, Матиас Р. (25 августа 2004 г.). «НОВОЛТРК.РЕГ» . www.drdos.org . Архивировано из оригинала 4 марта 2016 г. Проверено 17 декабря 2011 г. [1]
- ^ Перейти обратно: а б с Пол, Матиас Р. (07 октября 2002 г.). «Re: Проблемы, связанные с masm.com (PSP)» . alt.lang.asm . Архивировано из оригинала 3 сентября 2017 г. Проверено 3 сентября 2017 г.
- ^ Перейти обратно: а б с Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Михелс, Раймонд Дж.; Кайл, Джим (1994) [ноябрь 1993 г.]. Недокументированная DOS: Руководство программиста по зарезервированным функциям и структурам данных MS-DOS - расширено и включает MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Ридинг, Массачусетс: Эддисон Уэсли . ISBN 0-201-63287-Х . (xviii+856+vi страниц, 3,5-дюймовая дискета) Исправления: [2] [3]
- ^ Пол, Матиас Р. (2 октября 1997 г.). «Обновление Caldera OpenDOS 7.01/7.02 Alpha 3 IBMBIO.COM README.TXT» . Архивировано из оригинала 4 октября 2003 г. Проверено 29 марта 2009 г. [4]
- ^ DR-DOS 7.03 WHATSNEW.TXT — изменения с DR-DOS 7.02 на DR-DOS 7.03 . Кальдера, Инк. 24 декабря 1998 г. Архивировано из оригинала 08 апреля 2019 г. Проверено 08 апреля 2019 г.
- ^ Пол, Маттиас Р. (10 июня 2001 г.) [1995]. «Формат файла DOS COUNTRY.SYS» (файл COUNTRY.LST) (изд. 1.44). Архивировано из оригинала 20 апреля 2016 г. Проверено 20 августа 2016 г.
- ^ Пол, Матиас Р. (07.06.1997) [апрель 1994 г.]. «Глава 1.3.xi: Слишком длинные пути». NWDOS7UN.TXT — Сводка документированных и недокументированных возможностей Novell DOS 7 . МПДОСТИП (на немецком языке). Архивировано из оригинала 07.11.2016 . Проверено 7 ноября 2016 г.
- ^ Пол, Матиас Р. (30 июля 1997 г.) [1 мая 1994 г.]. NWDOS-TIPs — советы и подсказки для Novell DOS 7, с просмотром недокументированных подробностей, ошибок и обходных путей . MPDOSTIP (на немецком языке) (3-е изд.). Архивировано из оригинала 10 сентября 2017 г. Проверено 6 августа 2014 г. (Примечание. NWDOSTIP.TXT — это обширная работа по Novell DOS 7 и OpenDOS 7.01, включая описание многих недокументированных функций и внутренних устройств. Это часть еще более обширной работы автора.
MPDOSTIP.ZIP
Коллекция сохранялась до 2001 года и в то время распространялась на многих сайтах. Предоставленная ссылка указывает на более старую версию файла, преобразованную в HTML.NWDOSTIP.TXT
файл.) [5] - ^ Перейти обратно: а б Пол, Матиас Р. (2 февраля 2002 г.). «Treiber dynamisch nachladen (Intra-Segment-Offset-Relokation zum Laden von TSRs in die HMA)» [Динамическая загрузка драйверов (перемещение внутрисегментного смещения для загрузки TSR в HMA)]. de.comp.os.msdos (на немецком языке). Архивировано из оригинала 9 сентября 2017 г. Проверено 2 июля 2017 г. (Примечание. Дается всесторонний обзор истории и «природы» HMA , а также неочевидных конструктивных ограничений, которые необходимо учитывать при разработке расширений резидентной системы для загрузки в HMA.)
- ^ Пол, Матиас Р. (1 апреля 2002 г.). «Исправление расширения DOS CauseWay под DR-DOS 7.0x EMM386.EXE» . Группа новостей : comp.os.msdos.programmer . Архивировано из оригинала 19 сентября 2018 г. Проверено 19 сентября 2018 г.
- ^ Пол, Матиас Р. (18 августа 2001 г.). «Re: [fd-dev] О GRAFTABL и DISPLAY.SYS (было: Изменение кодовых страниц в FreeDOS)» . freedos-dev . Архивировано из оригинала 4 сентября 2017 г. Проверено 4 сентября 2017 г.
- ^ «WineFeatures — Официальная винная вики» . Проверено 03 февраля 2010 г.
- ^ «Установка приложения на 64-битных системах» . Майкрософт . 2018-05-31. Архивировано из оригинала 22 июля 2021 г. Проверено 26 мая 2016 г.
- ^ «64-разрядные версии Windows не поддерживают 16-разрядные компоненты, 16-разрядные процессы и 16-разрядные приложения» . 2.0. Майкрософт . 08 сентября 2020 г. [11 сентября 2011 г.]. КБ896458. Архивировано из оригинала 12 сентября 2021 г. Проверено 26 мая 2016 г.
- ^ Якал, Кэти (январь 1985 г.). «Брюс Артвик / Разработчик авиасимулятора II» . Бюллетень Compute ! п. 32 . Проверено 6 июля 2014 г.
- ^ Excel ошибочно предполагает, что 1900 год — високосный . Проверено 1 мая 2019 г.
- ^ «Программная инженерия в Google [Книга]» . www.oreilly.com . Проверено 31 мая 2022 г.