Сумісність за помилками

Кажуть, що комп'ютерне обладнання або програмне забезпечення сумісні за помилками, якщо воно точно повторює небажані особливості[1] попередньої версії. Фраза є в Jargon File.[2]

Аспект підтримки зворотної сумісності зі старішою системою полягає в тому, що клієнтські програми таких систем часто залежать не лише від їхніх визначених інтерфейсів, але й від помилок і незапланованої поведінки, які також мають бути збережені в новій версії. Окрім значно вищої складності, яку доводиться підтримувати під час природної еволюції коду чи інтерфейсу, це іноді спричиняє проблеми з продуктивністю чи безпекою, а неузгодженість у поведінці інтерфейсів може призводити до нових помилок у програмному забезпеченні, яке його використовує, створюючи складні для розв'язання перехресні залежності між різними фрагментами коду.[3]

Приклади

DOS

Приклади можна знайти в MS-DOS/PC DOS. Коли MS-DOS/PC DOS 3.1 і вище (включно з Windows 9x) і OS/2 виявляють певні мітки FAT OEM[en], вони не довіряють деяким значенням блоку параметрів BIOS[en] (BPB) і переобчислюють їх за іншими параметрами геометрії диска, щоб обійти кілька «помилок на одиницю», викликаних програмами для форматування в деяких попередніх версіях систем.[4][5][6][7] Хоча така недокументована поведінка дозволяє їм упоратися з цими неправильно відформатованими томами, вона обмежує гнучкість геометрії диска, з якою вони можуть працювати в цілому, і може призвести до того, що вони відкидають правильно відформатовані томи, створені третіми сторонами, якщо вони відхиляються від стандартних значень, використовуваних Microsoft і IBM.[6][7] Коли MS-DOS/PC DOS 5.0 і вище працюють на процесорах 286 або вище, резидентний завантажувач[en] містить код, спеціально розроблений для виявлення та виправлення певних поширених програм і завантажувачів-заглушок (таких як програми, пов'язані зі старішими версіями Microsoft EXEPACK[en] або розширювачів DOS[en] 386 від Rational Systems) шляхом виправлення завантаженого образу програми перед його виконанням. За певних умов базова DOS також виправляє Windows (WINA20.386).

Під час розробки DR-DOS[en] також довелося модифікувати, щоб не тільки імітувати низку недокументованих особливостей і небажаних властивостей MS-DOS і PC DOS (наприклад, використання деяких оманливих імен файлів, таких як IBMBIO.COM[en], IBMDOS.COM[en] або COUNTRY.SYS, для файлів, які не відповідають специфікаціям для виконуваних файлів у DOS,[8][9][10][nb 1] або необхідність внутрішнього впровадження Current Directory Structure (CDS) з обмеженою довжиною шляху до каталогу[11][12][13]), а також фактичні помилки в ядрі та кількох драйверах, щоб змусити працювати в DR-DOS деякі інші драйвери та програми, які тестувалися лише на певних версіях MS-DOS.[11][6][14][15][16][17]

Windows

Ще один приклад — Windows, яка традиційно емулювала багато старих системних помилок, щоб забезпечити роботу старіших низькорівневих програм. Як наслідок, Wine, який дає змогу запускати багато програм Windows на інших платформах, також має підтримувати сумісність за помилками з Windows.[18]

Інші

Під час розробки комп'ютера, сумісного з IBM PC, інженери Compaq виявили, що Microsoft Flight Simulator не запускається через те, що Брюс Артвік[en] із subLOGIC назвав «помилкою в одному з чипів Intel», що змусило їх зробити свій комп'ютер сумісним за помилками з IBM PC.[19] Інший приклад з апаратним забезпеченням — адресна лінія A20[en] у IBM Personal Computer/AT, введена для емуляції поведінки старих процесорів.[14][15]

У Microsoft Excel завжди була навмисна помилка високосного року[en], через яку 29 лютого 1900 року сприймалося, як правильна дата, щоб забезпечити зворотну сумісність із Lotus 1-2-3[en].[20]

Гайрум Райт (Hyrum Wright), інженер Google, розповів про цю проблему, яку він спостерігав, працюючи над бібліотеками ядра C++. Ще один інженер Google, Титус Вінтерс (Titus Winters), популяризував цю концепцію як «закон Гайрума».[21]

Назва HTTP referer[en] містить помилку у слові referrer. Цю помилку, що з'явилася в оригінальній веб-пропозиції, збережено для сумісності.

Див. також

Виноски

Коментарі

  1. Файли IBMBIO.COM і IBMDOS.COM це особливі двійкові образи, що містять виконуваний код. Випадкова спроба запустити їх так, ніби це звичайні COM-програми спричиняє падіння системи. З цієї причини в MS-DOS/PC DOS у цих файлів установлено атрибут прихований. Цього можна було б уникнути, вибравши інші розширення (як у DRBIOS.SYS і DRBDOS.SYS), але цього не можна було зробити пізніше, щоб зберегти сумісність із різними інструментами, які очікують саме цих назв файлів. Для усунення ризику збоїв ці файли замінено на fat binary[en] в DR-DOS 7.02 і вище, які тепер містять крихітні заглушки для коректного завершення роботи у разі неправильного виклику.(Paul, 1997, Caldera, 1998)

Примітки

  1. bug-for-bug compatible. catb.org. Same as bug-compatible, with the additional implication that much tedious effort went into ensuring that each (known) bug was replicated.
  2. Bug-compatible - www.jargon.net. Процитовано 3 лютого 2010.
  3. Pontin, Jason (26 грудня 1994). Windows 95's third delay; needs polish. InfoWorld. InfoWorld Media Group, Inc. 16 (52): 18.
  4. Williams, Dave (12 січня 1992). Programmer's Technical Reference for MSDOS and the IBM PC. ISBN 1-878830-02-3. DOSREF. Процитовано 8 січня 2012. (Примітка. Автор згадує, що DOS 4.0 перевіряє мітку OEM, але заперечує, що DOS 3.2 теж перевіряє її (хоча вона це й робить).)
  5. Bass, Wally (14 лютого 1994). Cluster Size. Група новинcomp.os.msdos.programmer. Архів оригіналу за 9 вересня 2017. Процитовано 14 жовтня 2006.
  6. а б в Paul, Matthias R. (20 лютого 2002). Need DOS 6.22 (Not OEM). alt.msdos.programmer. Архів оригіналу за 9 вересня 2017. Процитовано 14 жовтня 2006.
  7. а б Paul, Matthias R. (25 серпня 2004). NOVOLTRK.REG. www.drdos.org. Архів оригіналу за 4 березня 2016. Процитовано 17 грудня 2011. [1]
  8. Paul, Matthias R. (2 жовтня 1997). Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM README.TXT. Архів оригіналу за 4 жовтня 2003. Процитовано 29 березня 2009. [2]
  9. DR-DOS 7.03 WHATSNEW.TXT - Changes from DR-DOS 7.02 to DR-DOS 7.03. Caldera, Inc. 24 грудня 1998. Архів оригіналу за 8 квітня 2019. Процитовано 8 квітня 2019.
  10. Paul, Matthias R. (10 червня 2001) [1995]. DOS COUNTRY.SYS file format (COUNTRY.LST file) (вид. 1.44). Архів оригіналу за 20 квітня 2016. Процитовано 20 серпня 2016.
  11. а б Schulman, Andrew; Brown, Ralf D.; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [November 1993]. Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1 (вид. 2). Reading, Massachusetts: Addison Wesley. ISBN 0-201-63287-X. (xviii+856+vi pages, 3.5"-floppy) Errata: [3][4]
  12. Paul, Matthias R. (7 червня 1997) [April 1994]. Chapter 1.3.xi: Überlange Pfade. NWDOS7UN.TXT — Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von Novell DOS 7. MPDOSTIP (нім.). Архів оригіналу за 7 листопада 2016. Процитовано 7 листопада 2016.
  13. Paul, Matthias R. (30 липня 1997) [1994-05-01]. NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds. MPDOSTIP (нім.) (вид. 3). Архів оригіналу за 10 вересня 2017. Процитовано 6 серпня 2014. (NWDOSTIP.TXT це докладна праця про Novell DOS 7 і OpenDOS 7.01, яка включає опис багатьох недокументованих функцій та особливостей. Це частина більшої збірки MPDOSTIP.ZIP підтримуваної до 2001 року та поширеної на багатьох сайтах. Наведено посилання на старішу версію HTML-файлу NWDOSTIP.TXT.) [5]
  14. а б Paul, Matthias R. (7 жовтня 2002). Re: masm .com (PSP) related trouble. alt.lang.asm. Архів оригіналу за 3 вересня 2017. Процитовано 3 вересня 2017.
  15. а б Paul, Matthias R. (2 лютого 2002). Treiber dynamisch nachladen (Intra-Segment-Offset-Relokation zum Laden von TSRs in die HMA) [Loading drivers dynamically (Intra-segment offset relocation to load TSRs into the HMA)]. de.comp.os.msdos (German) . Архів оригіналу за 9 вересня 2017. Процитовано 2 липня 2017. (Містить всебічний огляд історії та "природи" HMA та дрібних обмежень, які слід враховувати при розробці резидентних розширень, які підлягають завантаженню в HMA.)
  16. Paul, Matthias R. (1 квітня 2002). Fix for CauseWay DOS extender under DR-DOS 7.0x EMM386.EXE. Група новинcomp.os.msdos.programmer. Архів оригіналу за 19 вересня 2018. Процитовано 19 вересня 2018.
  17. Paul, Matthias R. (18 серпня 2001). Re: [fd-dev] On GRAFTABL and DISPLAY.SYS (Was: Changing codepages in FreeDOS). freedos-dev. Архів оригіналу за 4 вересня 2017. Процитовано 4 вересня 2017.
  18. WineFeatures - The Official Wine Wiki. Процитовано 3 лютого 2010.
  19. Yakal, Kathy (January 1985). Bruce Artwick / The Designer Behind Flight Simulator II. Compute!'s Gazette. с. 32. Процитовано 6 липня 2014.
  20. Excel incorrectly assumes that the year 1900 is a leap year. Retrieved 2019-05-01.
  21. Software Engineering at Google [Book]. www.oreilly.com (англ.). Процитовано 31 травня 2022.
Помилка цитування: Тег <ref> з назвою «Jargon», визначений у <references> в групі «», нічого не містить.
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya