La compatibilidad hacia adelante o hacia arriba es una característica de diseño que permite que un sistema acepte datos de entrada destinados a una versión posterior del mismo. Este concepto se puede aplicar a sistemas completos, interfaces eléctricas , señales de telecomunicaciones , protocolos de comunicación de datos , formatos de archivo y lenguajes de programación . Un estándar admite la compatibilidad hacia adelante si un producto que cumple con versiones anteriores puede procesar sin problemas datos de entrada diseñados para versiones posteriores del estándar, ignorando las partes nuevas que no comprende.
El Grupo de Arquitectura Técnica (TAG) del W3C define el concepto de manera más formal: "un cambio en la definición de un lenguaje es compatible con versiones futuras si los consumidores del lenguaje original pueden procesar correctamente el texto escrito para la versión evolucionada del lenguaje". [ 1 ]
El objetivo de la tecnología compatible con versiones futuras es que los dispositivos antiguos reconozcan cuándo se han generado datos para dispositivos nuevos. [ 2 ]
La compatibilidad con versiones anteriores del sistema antiguo generalmente implica compatibilidad con versiones anteriores del nuevo sistema, es decir, la capacidad de procesar datos del sistema antiguo; el nuevo sistema suele ser totalmente compatible con el antiguo, ya que puede procesar y generar datos en el formato del sistema antiguo.
La compatibilidad con versiones futuras no es lo mismo que la extensibilidad . Un diseño compatible con versiones futuras puede procesar al menos parte de los datos de una versión futura del mismo. Un diseño extensible facilita la actualización. Un ejemplo de ambas ideas de diseño se encuentra en los navegadores web. En cualquier momento, un navegador actual es compatible con versiones futuras si acepta sin problemas una versión más reciente de HTML , mientras que la facilidad con la que se puede actualizar el código del navegador para procesar el HTML más reciente determina su extensibilidad.
Principios de diseño
El Grupo de Arquitectura Técnica del W3C ha documentado una familia de reglas de sustitución que permiten el diseño de lenguajes compatibles con versiones futuras. Cada regla especifica cómo debe comportarse un consumidor cuando encuentra construcciones que no reconoce:
- Debe ignorar lo desconocido: un consumidor que encuentra un constructo no reconocido debe continuar procesando, tratando el constructo como si no estuviera allí. [ 3 ]
- Debe aceptar y descartar lo desconocido: un consumidor debe aceptar construcciones desconocidas en puntos de extensión definidos y luego descartarlas. [ 3 ]
- Debe aceptar y preservar lo desconocido: un consumidor debe aceptar las construcciones desconocidas y, al reenviar o transformar el contenido, preservarlas para los consumidores posteriores. [ 3 ]
Estas reglas sustentan la compatibilidad hacia adelante en lenguajes y protocolos ampliamente utilizados. HTTP/1.1 , por ejemplo, especifica que los campos de encabezado no reconocidos deben ser ignorados por el destinatario y deben ser reenviados por proxies transparentes, una aplicación directa de la regla de "conservar lo desconocido". [ 4 ]
Ejemplos
Estándares de telecomunicaciones
La introducción de la transmisión estéreo FM , o televisión en color, permitió la compatibilidad hacia adelante, ya que los receptores de radio FM monofónicos y los televisores en blanco y negro aún podían recibir una señal de un nuevo transmisor. [ 2 ] También permitió la compatibilidad hacia atrás, ya que los nuevos receptores podían recibir señales monofónicas o en blanco y negro generadas por transmisores antiguos.
videojuegos
- La Game Boy puede ejecutar ciertos juegos lanzados para la Game Boy Color . Estos juegos utilizan el mismo diseño de cartucho que los juegos para la Game Boy original, aunque el plástico utilizado suele ser negro en lugar de gris y presenta el logotipo de GBC en la etiqueta y el empaque; Nintendo se refería oficialmente a estos títulos como de "Modo Dual". [ 5 ]
- El Leapster puede reproducir juegos de Leapster L-Max, y el Leapster L-Max puede reproducir juegos de Leapster2 .
- La PlayStation original es compatible con el mando DualShock 2. [ 6 ] Asimismo, la PlayStation 3 se puede jugar con un mando DualShock 4 y DualSense . [ 7 ] [ 8 ] [ 9 ]
- La Neo Geo Pocket podía ejecutar la mayoría de los juegos de Neo Geo Pocket Color .
- El WonderSwan puede ejecutar algunos juegos de WonderSwan Color.
- La Xbox One puede usar el mando de la Xbox Series X y Xbox Series S , y del mismo modo un mando de Xbox One funcionará en la Xbox Series X y Series S. [ 10 ]
- El V.Smile Smartridge es compatible con todas las consolas y sistemas de juegos portátiles de VTech . Sin embargo, no es compatible con los sistemas V.Smile Baby , PC Pal ni V.Flash . [ 11 ] Dependiendo del dispositivo insertado, algunas funciones pueden estar limitadas, lo que refleja las diferentes capacidades de cada consola. [ 12 ]
- La Nintendo Switch puede reproducir juegos digitales y físicos de la " Nintendo Switch 2 Edition ". En la Nintendo Switch 2, estas versiones incluyen tanto el juego base como un paquete de actualización, que ofrece mejor rendimiento, gráficos, contenido adicional (este último generalmente específico de ciertos juegos de la propia Nintendo) y más. Sin embargo, los paquetes de actualización no funcionan en la Nintendo Switch original, solo el juego base. [ 13 ]
HTML
HTML está diseñado para tratar todas las etiquetas de la misma manera (como elementos inertes, sin estilo, en línea ) a menos que su apariencia o comportamiento se anule; ya sea por la configuración predeterminada del navegador o por scripts o estilos incluidos en la página. [ 14 ] Esto hace que la mayoría de las nuevas características se degraden elegantemente en navegadores antiguos. Un caso en el que esto no funcionó como se esperaba fueron los bloques de scripts y estilos, cuyo contenido está destinado a ser interpretado por el navegador en lugar de ser parte de la página. Estos casos se abordaron encerrando el contenido dentro de bloques de comentarios. [ 15 ] De manera más general, la compatibilidad hacia adelante de HTML sigue un diseño de "debe ignorarse": las primeras especificaciones de HTML requerían que las etiquetas de inicio y fin no reconocidas se asignaran a nada durante la tokenización, lo que permitió que elementos posteriores como se introdujeran sin romper los navegadores existentes. [ 3 ]<img>
Como no existe una actualización obligatoria de ordenadores o navegadores web, muchos desarrolladores web utilizan un enfoque de degradación gradual o mejora progresiva , intentando que los sitios web recién creados sean compatibles con ordenadores y navegadores web antiguos, utilizables cuando JavaScript está desactivado o en una conexión más lenta, al tiempo que aprovechan el hardware más rápido y la mejor compatibilidad con JavaScript en los navegadores web más modernos, cuando estén disponibles. [ 16 ]
Medios ópticos
Cada uno de los tres formatos de medios ópticos de 12 cm más comunes ( CD , DVD y Blu-ray ) se lanzó inicialmente en formato de solo lectura años antes de que estuvieran disponibles los formatos grabables. Dentro de cada formato, existe compatibilidad tanto hacia adelante como hacia atrás, de modo que la mayoría de las unidades y reproductores antiguos de solo lectura pueden leer (pero no escribir) medios grabables del mismo formato, mientras que las unidades de lectura/escritura pueden leer (pero no escribir) medios antiguos de solo lectura. No existe compatibilidad hacia adelante entre formatos; un reproductor de CD, por ejemplo, no puede leer un DVD (un formato más reciente), ni siquiera las pistas de audio. Puede haber compatibilidad hacia atrás para una mejor comercialización (como un reproductor de DVD que reproduce un CD de audio), pero no es intrínseca a los estándares. [ 17 ]
Relación con el principio de robustez
El diseño compatible con versiones futuras está estrechamente relacionado con el principio de robustez articulado por Jon Postel en el RFC 761 (enero de 1980): "sé conservador en lo que haces, sé liberal en lo que aceptas de los demás". [ 18 ] La parte del principio que dice "liberal en lo que aceptas" describe la postura que adopta un sistema compatible con versiones futuras ante entradas no reconocidas; la regla de "debe ignorar lo desconocido" puede interpretarse como una implementación específica de dicho principio.
Sin embargo, definir formalmente la compatibilidad hacia adelante ha resultado difícil. En 2007, los miembros del Grupo de Arquitectura Técnica del W3C trataron la definición de compatibilidad hacia adelante y hacia atrás como un problema abierto, en parte porque el concepto describe una relación con versiones futuras de un lenguaje que aún no existen. [ 19 ]
No es compatible con versiones anteriores.
Algunos productos no están diseñados para ser compatibles con versiones futuras, lo que se conoce como NUC (no compatible con versiones anteriores). En algunos casos, esto puede ser intencional por parte de los diseñadores como una forma de dependencia del proveedor o regresión de software .
Por ejemplo, un fabricante de cubículos considera cambiar el diseño. Un diseñador propone modificar la superficie de 1,22 m² a 1,2 metros cuadrados. Inmediatamente, el gerente de ventas llama a "NUC" y se comprende el problema: si la superficie cambia y los clientes actuales están considerando comprar más al fabricante, tendrán que instalar una unidad de diferente tamaño en una oficina diseñada para cubículos de 1,22 m².
La obsolescencia programada es un tipo de compatibilidad ascendente, pero en lugar de adoptar una política de compatibilidad retroactiva, las empresas adoptan una política comercial de incompatibilidad retroactiva, de modo que las aplicaciones más recientes requieren dispositivos más recientes.
Véase también
- Compatibilidad con versiones anteriores
- Compatibilidad con errores , compatibilidad con versiones anteriores que mantiene los fallos conocidos.
- Compatibilidad informática
- reciclaje de menor calidad
- Preparación para el futuro
- Principio de robustez
- Reutilización
Referencias
- ↑ Grupo de Arquitectura Técnica del W3C. "Extensión y versionado de lenguajes: terminología" . W3C . Consultado el 18 de abril de 2026 .
{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace ) - 1 2 Tulach, Jaroslav (2008). Diseño práctico de API: Confesiones de un arquitecto de frameworks Java . Apress. pág. 233. ISBN 978-1-4302-0973-7.
- 1 2 3 4 Grupo de Arquitectura Técnica del W3C. "Extensión y versionado de lenguajes: estrategias de compatibilidad" . W3C . Consultado el 18 de abril de 2026 .
{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace ) - ↑ Protocolo de transferencia de hipertexto (HTTP/1.1): Sintaxis de mensajes y enrutamiento . IETF . Junio de 2014. doi : 10.17487/RFC7230 . RFC 7230 .
- ↑ Tabla de compatibilidad de Game Boy . Nintendo of America. Consultado el 3 de octubre de 2017.
- ↑ "¿Funcionará el mando de PS2 en una PS1?" . forum.digitpress.com . Consultado el 27/12/2017 .
- ↑ Newhouse, Alex (1 de julio de 2014). "El mando de PlayStation 4 ahora funciona de forma inalámbrica con PlayStation 3" . GameSpot . Consultado el 27 de diciembre de 2017 .
- ↑ Santa Maria, Alex (2 de noviembre de 2020). "El mando DualSense de PS5 funciona perfectamente en PS3 (pero no en PS4)" . ScreenRant . Consultado el 1 de julio de 2021 .
- ↑ Williams, Demi (2 de noviembre de 2020). "El mando DualSense de PS5 funciona en PS3" . gamesradar .
- ↑ "¿Se puede usar un mando de Xbox Series X en Xbox One? Sí, por supuesto" . Windows Central . 18 de marzo de 2021. Consultado el 24 de marzo de 2021 .
- ↑ "Una inmersión profunda en el universo extendido de V.smile" . YouTube . Consultado el 23 de octubre de 2024 .
- ↑ "Emuladores de V.Smile" . Wiki general de emulación . Consultado el 23 de octubre de 2024 .
- ↑ "Juegos optimizados para Nintendo Switch 2 - Nintendo EE. UU." . www.nintendo.com . Consultado el 23 de octubre de 2025 .
- ↑ Realmente deshaciendo html.css por Eric A. Meyer.
- ↑ Etiqueta HTML <!--...--> en w3schools.com: 'También puedes usar la etiqueta de comentario para "ocultar" los scripts de los navegadores que no los admiten [...]'.
- ↑ "Degradación elegante versus mejora progresiva" .
- ↑ "¿Pueden los discos Blu-ray reproducir DVD y CD?" . Archivado del original el 18 de febrero de 2009. Consultado el 25 de enero de 2009 .
- ↑ Jon Postel (enero de 1980). Protocolo estándar de control de transmisión del Departamento de Defensa . IETF . doi : 10.17487/RFC0761 . RFC 761 .
- ↑ Marc de Graauw (12 de septiembre de 2007). "RE: la definición de compatibilidad hacia adelante/compatible hacia atrás sigue siendo un problema abierto [ XMLVersioning-41 ISSUE-41 ] " . Lista de correo www-tag del W3C . Recuperado el 18 de abril de 2026 .
Enlaces externos
- Regla de extensibilidad: Diseña para el futuro, porque llegará antes de lo que piensas , en El arte de la programación Unix.
- Compatibilidad con versiones anteriores
- Interoperabilidad