Término de programación
Se dice que un hardware o software de computadora es compatible con errores si replica exactamente una característica no deseada [1] de una versión anterior. La frase se encuentra en el Archivo de jerga . [2]
Un aspecto de mantener la compatibilidad con versiones anteriores de un sistema más antiguo es que los programas cliente de dichos sistemas a menudo no sólo dependen de sus interfaces específicas, sino también de errores y comportamientos no deseados. Eso también debe conservarse en el reemplazo más nuevo. Además de la complejidad significativamente mayor que debe mantenerse durante la evolución natural del código o la interfaz, a veces puede causar problemas de rendimiento o seguridad, y las inconsistencias en el comportamiento de las interfaces a veces pueden conducir a nuevos errores en el software que las usa, creando dependencias cruzadas multidireccionales difíciles de resolver entre varias piezas de código. [3]
Ejemplos
Dos
Se pueden encontrar ejemplos en MS-DOS / PC DOS : cuando MS-DOS/PC DOS 3.1 y superior (incluido Windows 9x ) y OS/2 detectan ciertas etiquetas FAT OEM , no confían en algunos valores del Bloque de parámetros del BIOS (BPB) y los recalculan a partir de otros parámetros de geometría del disco para evitar varios errores de cálculo de uno en uno causados por algunos de sus programas formateadores en ediciones anteriores de estos sistemas. [4] [5] [6] [7] Si bien este comportamiento no documentado les permite lidiar específicamente con estos volúmenes formateados incorrectamente, limita la flexibilidad de las geometrías de disco con las que pueden trabajar en general y puede hacer que descarten volúmenes formateados válidamente creados por terceros si se desvían de los valores predeterminados utilizados por Microsoft e IBM . [6] [7]
Cuando se ejecuta MS-DOS/PC DOS 5.0 y superior en procesadores 286 o superiores, el cargador de ejecutables residente contiene código especialmente diseñado para detectar y reparar ciertas aplicaciones y cargadores de código auxiliar generalizados (como programas vinculados con versiones anteriores de EXEPACK de Microsoft o extensores DOS 386 de Rational Systems ) al aplicar parches a la imagen del programa cargado antes de ejecutarlo. [8] Bajo ciertas condiciones, un DOS subyacente también aplica parches a Windows (WINA20.386). [9]
Durante el desarrollo, DR-DOS también tuvo que ser modificado no sólo para emular muchas peculiaridades no documentadas y propiedades indeseables de MS-DOS y PC DOS (como tener que usar ciertos nombres de archivo engañosos como IBMBIO.COM , IBMDOS.COM o COUNTRY.SYS para archivos que no siguen las especificaciones para ejecutables bajo DOS, [10] [11] [12] [nb 1] o tener que introducir una Estructura de Directorio Actual (CDS) limitada por la longitud de la ruta del directorio internamente [9] [13] [14] ), sino también errores reales en el núcleo y varios controladores, para hacer que ciertos otros controladores y aplicaciones se ejecuten en DR-DOS, cuando fueron probados solo en versiones específicas de MS-DOS. [9] [6] [8] [15] [16] [17]
Ventanas
Otro ejemplo es Windows , que tradicionalmente ha emulado muchos errores del sistema antiguo para permitir la ejecución de programas de bajo nivel más antiguos. Como resultado, Wine , que permite ejecutar muchas aplicaciones de Windows en otras plataformas, también necesita mantener la compatibilidad con Windows ante errores. [18]
Otro
Durante el desarrollo de su IBM PC compatible , los ingenieros de Compaq descubrieron que Microsoft Flight Simulator no funcionaba debido a lo que Bruce Artwick de subLOGIC describió como "un error en uno de los chips de Intel ", lo que los obligó a hacer que su computadora fuera compatible con el IBM PC. [19] Otro ejemplo de hardware se encuentra en el diseño de la línea de dirección del IBM Personal Computer/AT A20 para emular el comportamiento de procesadores más antiguos. [8] [15]
Microsoft Excel siempre ha tenido un error deliberado en los años bisiestos , que trata erróneamente el 29 de febrero de 1900 como una fecha real, para garantizar la compatibilidad con versiones anteriores de Lotus 1-2-3 . [20]
Hyrum Wright, ingeniero de Google , habla de este problema que observó de primera mano mientras trabajaba en las bibliotecas básicas de C++. Fue Titus Winters, también ingeniero de Google, quien popularizó este concepto a mayor escala como " Ley de Hyrum ". [21]
El encabezado de referencia HTTP es una falta de ortografía de la palabra referrer . Era un error en la propuesta web original y se mantuvo por cuestiones de compatibilidad.
Véase también
Notas
- ^ Los archivos IBMBIO.COM e IBMDOS.COM son imágenes binarias especiales que contienen código ejecutable . Si se intenta ejecutarlos accidentalmente desde el indicador como si fueran programas normales de estilo COM, el sistema se bloquearía. Esta es la razón por la que estos archivos tienen el atributo oculto establecido en MS-DOS / PC DOS . Esto se podría haber evitado eligiendo otras extensiones de archivo (como con DRBIOS.SYS y DRBDOS.SYS ), pero no se pudo hacer más adelante para seguir siendo compatible con varias herramientas que esperan estos nombres de archivo en particular. Para eliminar el riesgo de bloqueos, estos archivos se cambiaron a binarios pesados con DR-DOS 7.02 y versiones posteriores que ahora incluyen pequeños fragmentos para salir correctamente cuando se los invoca de forma inapropiada. [a] [b]
Referencias
- ^ "compatible con todos los errores". catb.org .
Lo mismo que compatible con todos los errores, con la implicación adicional de que se ha invertido mucho esfuerzo para garantizar que cada error (conocido) se reprodujera.
- ^ "Compatible con errores - www.jargon.net" . Consultado el 3 de febrero de 2010 .
- ^ Pontin, Jason (26 de diciembre de 1994). "El tercer retraso de Windows 95; necesita pulirse". InfoWorld . 16 (52). InfoWorld Media Group, Inc.: 18.
- ^ Williams, Dave (12 de enero de 1992). Referencia técnica del programador para MSDOS y la IBM PC. ISBN 1-878830-02-3. DOSREF . Consultado el 8 de enero de 2012 .(NB. El autor menciona que DOS 4.0 verifica la etiqueta OEM, pero niega que DOS 3.2 también la verifique (aunque lo hace).)
- ^ Bass, Wally (14 de febrero de 1994). "Cluster Size". Grupo de noticias : comp.os.msdos.programmer. Archivado desde el original el 9 de septiembre de 2017. Consultado el 14 de octubre de 2006 .
- ^ abc Paul, Matthias R. (2002-02-20). "Se necesita DOS 6.22 (no OEM)". alt.msdos.programmer . Archivado desde el original el 2017-09-09 . Consultado el 2006-10-14 .
- ^ ab Paul, Matthias R. (25 de agosto de 2004). "NOVOLTRK.REG". www.drdos.org . Archivado desde el original el 4 de marzo de 2016 . Consultado el 17 de diciembre de 2011 .[1]
- ^ abc Paul, Matthias R. (7 de octubre de 2002). "Re: problemas relacionados con masm .com (PSP)". alt.lang.asm . Archivado desde el original el 3 de septiembre de 2017 . Consultado el 3 de septiembre de 2017 .
- ^ abc Schulman, Andrew; Brown, Ralf D .; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [noviembre de 1993]. DOS no documentado: guía del programador para funciones y estructuras de datos reservadas de MS-DOS, ampliada para incluir MS-DOS 6, Novell DOS y Windows 3.1 (2.ª edición). Reading, Massachusetts: Addison Wesley . ISBN 0-201-63287-X.(xviii+856+vi páginas, disquete de 3,5") Erratas: [2][3]
- ^ Paul, Matthias R. (2 de octubre de 1997). "Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM README.TXT". Archivado desde el original el 4 de octubre de 2003. Consultado el 29 de marzo de 2009 .[4]
- ^ DR-DOS 7.03 WHATSNEW.TXT - Cambios de DR-DOS 7.02 a DR-DOS 7.03. Caldera, Inc. 1998-12-24. Archivado desde el original el 8 de abril de 2019 . Consultado el 8 de abril de 2019 .
- ^ Paul, Matthias R. (10 de junio de 2001) [1995]. «Formato de archivo DOS COUNTRY.SYS» (archivo COUNTRY.LST) (1.44.ª ed.). Archivado desde el original el 20 de abril de 2016. Consultado el 20 de agosto de 2016 .
- ^ Paul, Matthias R. (7 de junio de 1997) [abril de 1994]. "Capítulo 1.3.xi: Überlange Pfade". NWDOS7UN.TXT - Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von Novell DOS 7. MPDOSTIP (en alemán). Archivado desde el original el 7 de noviembre de 2016 . Consultado el 7 de noviembre de 2016 .
- ^ Paul, Matthias R. (30 de julio de 1997) [1 de mayo de 1994]. NWDOS-TIP: consejos y trucos para Novell DOS 7, con un clic para deshacer detalles, errores y soluciones. MPDOSTIP (en alemán) (3 ed.). Archivado desde el original el 10 de septiembre de 2017 . Consultado el 6 de agosto de 2014 .(NB. NWDOSTIP.TXT es un trabajo exhaustivo sobre Novell DOS 7 y OpenDOS 7.01, que incluye la descripción de muchas características y componentes internos no documentados. Es parte de la
MPDOSTIP.ZIP
colección aún más grande del autor, mantenida hasta 2001 y distribuida en muchos sitios en ese momento. El enlace proporcionado apunta a una versión anterior del NWDOSTIP.TXT
archivo convertida a HTML). [5] - ^ de Paul, Matthias R. (2002-02-02). "Carga dinámica de controladores (reubicación de desplazamiento entre segmentos para cargar TSR en la HMA)". de.comp.os.msdos (en alemán). Archivado desde el original el 2017-09-09 . Consultado el 2017-07-02 .(NB. Proporciona una descripción general completa de la historia y la "naturaleza" del HMA y las restricciones de diseño no obvias que se deben tener en cuenta al desarrollar extensiones del sistema residente que se cargarán en el HMA).
- ^ Paul, Matthias R. (1 de abril de 2002). "Corrección para el extensor CauseWay DOS en DR-DOS 7.0x EMM386.EXE". Grupo de noticias : comp.os.msdos.programmer. Archivado desde el original el 19 de septiembre de 2018. Consultado el 19 de septiembre de 2018 .
- ^ Paul, Matthias R. (18 de agosto de 2001). "Re: [fd-dev] Acerca de GRAFTABL y DISPLAY.SYS (antes: Cambiar páginas de códigos en FreeDOS)". freedos-dev . Archivado desde el original el 4 de septiembre de 2017 . Consultado el 4 de septiembre de 2017 .
- ^ "WineFeatures - La Wiki Oficial del Vino" . Consultado el 3 de febrero de 2010 .
- ^ Yakal, Kathy (enero de 1985). "Bruce Artwick / El diseñador detrás de Flight Simulator II". Compute!'s Gazette . p. 32 . Consultado el 6 de julio de 2014 .
- ^ Excel supone incorrectamente que el año 1900 es bisiesto. Consultado el 1 de mayo de 2019.
- ^ "Ingeniería de software en Google [Libro]". www.oreilly.com . Consultado el 31 de mayo de 2022 .