Se dice que un hardware o software informático es compatible con errores si reproduce exactamente una característica indeseable [ 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 antiguo es que los programas cliente de dichos sistemas a menudo no solo dependen de sus interfaces especificadas, sino también de errores y comportamientos no deseados que deben conservarse en el sistema de reemplazo más reciente. Además de la complejidad significativamente mayor que debe mantenerse durante la evolución natural del código o la interfaz, esto a veces puede causar problemas de rendimiento o seguridad, y las inconsistencias en el comportamiento de las interfaces pueden generar nuevos errores en el software que las utiliza, creando dependencias cruzadas multidireccionales difíciles de resolver entre varias partes del código. [ 3 ]
Ejemplos
DOS
Ejemplos se pueden encontrar 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 solucionar varios errores de cálculo de uno causados por algunos de sus programas formateadores en versiones anteriores de estos sistemas. [ 4 ] [ 5 ] [ 6 ] [ 7 ] Si bien este comportamiento no documentado les permite lidiar con estos volúmenes formateados incorrectamente en particular, limita la flexibilidad de las geometrías de disco con las que pueden trabajar en general y puede hacer que desechen volúmenes formateados válidamente creados por terceros si se desvían de los valores predeterminados utilizados por Microsoft e IBM . [ 6 ] [ 7 ] Cuando MS-DOS/PC DOS 5.0 y versiones posteriores se ejecutan en procesadores 286 o superiores, el cargador de ejecutables residente contiene código especialmente diseñado para detectar y corregir ciertas aplicaciones y cargadores auxiliares de uso generalizado (como programas vinculados con versiones anteriores de EXEPACK de Microsoft o extensores DOS 386 de Rational Systems ) parcheando la imagen del programa cargado antes de ejecutarlo. [ 8 ] En determinadas condiciones, un DOS subyacente también parchea Windows ( WINA20.386 ). [ 9 ]
Durante el desarrollo, DR-DOS también tuvo que ser modificado no solo 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 internamente una Estructura de Directorio Actual (CDS) con longitud de ruta de directorio limitada [ 9 ] [ 13 ] [ 14 ] ), sino también errores reales en el núcleo y varios controladores, para hacer que ciertos otros controladores y aplicaciones se ejecutaran en DR-DOS, cuando se probaban solo en versiones específicas de MS-DOS. [ 9 ] [ 6 ] [ 8 ] [ 15 ] [ 16 ] [ 17 ]
Windows
Windows , que tradicionalmente ha emulado muchos errores del sistema antiguo para permitir la ejecución de programas de bajo nivel más antiguos, es otro ejemplo. Como resultado, Wine , que permite ejecutar muchas aplicaciones de Windows en otras plataformas, también necesita mantener la compatibilidad con errores de Windows. [ 18 ]
Otro
Durante el desarrollo de su compatible con IBM PC , 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 error de la IBM PC. [ 19 ] Decenas de fabricantes de clones del IBM Enhanced Graphics Adapter tuvieron que replicar sus errores, utilizando un diseño de sala limpia para no infringir los derechos de autor de IBM. [ 20 ] Otro ejemplo de hardware se encuentra en el diseño de la línea de direcciones IBM Personal Computer/AT A20 para emular el comportamiento de procesadores más antiguos. [ 8 ] [ 15 ]
Microsoft Excel siempre ha tenido un error deliberado relacionado con 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 . [ 21 ]
Hyrum Wright , ingeniero de Google , habla de este problema que observó de primera mano mientras trabajaba en las bibliotecas principales de C++. Fue Titus Winters , también ingeniero de Google, quien popularizó este concepto a mayor escala como la " ley de Hyrum ". [ 22 ]
El encabezado HTTP referer es un error ortográfico de la palabra referrer . Fue un error en la propuesta web original y se mantuvo por motivos de compatibilidad.
Véase también
Notas
- ↑ Los archivos IBMBIO.COM e IBMDOS.COM son imágenes binarias especiales que contienen código ejecutable . Intentar ejecutarlos accidentalmente desde la línea de comandos como si fueran programas COM normales provocaría un fallo del sistema. Por este motivo, estos archivos tienen el atributo oculto activado en MS-DOS / PC DOS . Esto podría haberse evitado eligiendo otras extensiones de archivo (como DRBIOS.SYS y DRBDOS.SYS ), pero no se pudo hacer posteriormente para mantener la compatibilidad con diversas herramientas que esperan estos nombres de archivo específicos. Para eliminar el riesgo de fallos, estos archivos se convirtieron en binarios completos con DR-DOS 7.02 y versiones posteriores, que ahora incluyen pequeños fragmentos para salir correctamente cuando se ejecutan de forma inapropiada. [a] [b]
Referencias
- ↑ "bug-for-bug compatible" . catb.org .
Lo mismo que bug-compatible, con la implicación adicional de que se hizo un gran esfuerzo tedioso para asegurar que cada error (conocido) se replicara.
- ↑ "Compatible con errores - www.jargon.net" . Consultado el 3 de febrero de 2010 .
- ↑ Pontin, Jason (26 de diciembre de 1994). "Tercer retraso de Windows 95; necesita pulido" . InfoWorld . 16 (52). InfoWorld Media Group, Inc.: 18.
- ↑ Williams, Dave (12 de enero de 1992). Guía técnica del programador para MSDOS y el IBM PC . ISBN 1-878830-02-3. DOSREF . Consultado el 08-01-2012 .(Nota: El autor menciona que DOS 4.0 comprueba la etiqueta del fabricante, pero niega que DOS 3.2 también lo haga (aunque sí lo hace).)
- ↑ Bass, Wally (14 de febrero de 1994). "Tamaño del clúster" . Grupo de noticias : comp.os.msdos.programmer . Consultado el 14 de octubre de 2006 .
{{cite newsgroup}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - 1 2 3 Paul, Matthias R. (2002-02-20). "Need DOS 6.22 (Not OEM)" . alt.msdos.programmer . Recuperado el 2006-10-14 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - 1 2 Paul, Matthias R. (2004-08-25). "NOVOLTRK.REG" . www.drdos.org . Archivado del original el 2016-03-04 . Recuperado el 2011-12-17 .
- 1 2 3 Paul, Matthias R. (2002-10-07). "Re: masm .com (PSP) related trouble" . alt.lang.asm . Recuperado el 2017-09-03 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - 1 2 3 Schulman, Andrew; Brown, Ralf D .; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [noviembre de 1993]. Undocumented DOS: 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.ª ed.). Reading, Massachusetts: Addison Wesley . ISBN 0-201-63287-X.(xviii+856+vi páginas, disquete de 3,5") Erratas:
- ↑ Paul, Matthias R. (1997-10-02). "Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM README.TXT" . Archivado del original el 4 de octubre de 2003. Recuperado el 29 de marzo de 2009 .
- ↑ 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) ( ed. 1.44). Archivado del original el 20 de abril de 2016. Recuperado 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 — Actualización de las condiciones de documentación y desdocumentación de 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 . (Nota: NWDOSTIP.TXT es una obra exhaustiva sobre Novell DOS 7 y OpenDOS 7.01, que incluye la descripción de muchas características y aspectos internos no documentados. Forma parte de la
MPDOSTIP.ZIPcolección, aún más extensa, del autor, mantenida hasta 2001 y distribuida en numerosos sitios web en aquella época. El enlace proporcionado dirige a una versión anterior delNWDOSTIP.TXTarchivo convertida a HTML). - 1 2 Paul, Matthias R. (2002-02-02). "Treiber dynamisch nachladen (Intra-Segment-Offset-Relokation zum Laden von TSRs in die HMA)" [ Carga dinámica de controladores (reubicación de desplazamiento intrasegmento para cargar TSRs en el HMA) ] . de.comp.os.msdos (en alemán) . Consultado el 2017-07-02 .
{{cite web}}: CS1 maint: servicio de archivo obsoleto ( enlace ) (Nota: Ofrece una visión general completa sobre la historia y la "naturaleza" del HMA y las restricciones de diseño no obvias que deben tenerse en cuenta al desarrollar extensiones de sistema residentes para cargarlas en el HMA). - ^ Pablo, Matías R. (1 de abril de 2002). "Solución para el extensor CauseWay DOS en DR-DOS 7.0x EMM386.EXE" . Grupo de noticias : comp.os.msdos.programmer . Consultado el 19 de septiembre de 2018 .
{{cite newsgroup}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ Paul, Matthias R. (2001-08-18). "Re: [ fd-dev ] Sobre GRAFTABL y DISPLAY.SYS (Antes: Cambiar las páginas de códigos en FreeDOS)" . freedos-dev . Recuperado el 2017-09-04 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "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ág. 32. Recuperado el 6 de julio de 2014 .
- ↑ Howard, Bill (13 de enero de 1987). "Abortar, Reintentar, Ignorar" . PC . págs. 152–153 .
- ↑ Excel asume erróneamente 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 .
- Errores de software
- Compatibilidad con versiones anteriores
- jerga informática