En telecomunicaciones e informática , la compatibilidad con versiones anteriores (o compatibilidad hacia atrás ) es una propiedad de un sistema operativo , software, producto del mundo real o tecnología que permite la interoperabilidad con un sistema heredado más antiguo o con una entrada diseñada para dicho sistema.
Modificar un sistema de una manera que no permita la compatibilidad con versiones anteriores a veces se denomina "romper" la compatibilidad con versiones anteriores. [1] Tal ruptura generalmente implica varios tipos de costos, como el costo de cambio .
Un concepto complementario es la compatibilidad futura ; un diseño que es compatible con el futuro generalmente tiene una hoja de ruta para la compatibilidad con estándares y productos futuros. [2]
Un ejemplo simple de compatibilidad hacia atrás y hacia adelante es la introducción de la radio FM en estéreo . La radio FM inicialmente era mono , con solo un canal de audio representado por una señal . Con la introducción de la radio FM estéreo de dos canales, muchos oyentes solo tenían receptores FM mono. La compatibilidad hacia adelante para receptores mono con señales estéreo se logró enviando la suma de los canales de audio izquierdo y derecho en una señal y la diferencia en otra señal. Eso permite que los receptores FM mono reciban y decodifiquen la señal de suma mientras ignoran la señal de diferencia, que solo es necesaria para separar los canales de audio. Los receptores FM estéreo pueden recibir una señal mono y decodificarla sin la necesidad de una segunda señal, y pueden separar una señal de suma en canales izquierdo y derecho si se reciben señales de suma y diferencia. Sin el requisito de compatibilidad con versiones anteriores, se podría haber elegido un método más simple. [3]
La compatibilidad total con versiones anteriores es particularmente importante en las arquitecturas de conjuntos de instrucciones de computadora , siendo dos de las más exitosas las familias de mainframes IBM 360 / 370 / 390 / Zseries y la familia de microprocesadores Intel x86 .
IBM anunció los primeros modelos 360 en 1964 y ha continuado actualizando la serie desde entonces, con migraciones a lo largo de las décadas desde registros de 32 bits/direcciones de 24 bits a registros y direcciones de 64 bits.
Intel anunció los primeros procesadores Intel 8086/8088 en 1978, nuevamente con migraciones a lo largo de las décadas de 16 bits a 64 bits. (Los 8086/8088, a su vez, fueron diseñados teniendo en mente la fácil traducibilidad por máquina de los programas escritos para su predecesor, aunque no eran compatibles con el conjunto de instrucciones del procesador Intel 8080 de 8 bits de 1974. El Zilog Z80 , sin embargo, era totalmente compatible con versiones anteriores del Intel 8080).
Los procesadores totalmente compatibles con versiones anteriores pueden procesar las mismas instrucciones de software ejecutables binarias que sus predecesores, lo que permite el uso de un procesador más nuevo sin tener que adquirir nuevas aplicaciones o sistemas operativos . [4] De manera similar, el éxito del estándar de comunicación digital Wi-Fi se atribuye a su amplia compatibilidad hacia adelante y hacia atrás; se volvió más popular que otros estándares que no eran compatibles con versiones anteriores. [5]
En el desarrollo de software, la compatibilidad con versiones anteriores es una noción general de interoperación entre piezas de software que no producirán ningún error cuando se invoque su funcionalidad a través de API . [6] El software se considera estable cuando su API que se utiliza para invocar funciones es estable en diferentes versiones. [6]
En los sistemas operativos, se dice que las actualizaciones a versiones más nuevas son compatibles con versiones anteriores si los ejecutables y otros archivos de las versiones anteriores funcionan normalmente. [7]
En los compiladores , la compatibilidad con versiones anteriores puede referirse a la capacidad de un compilador para una versión más nueva del lenguaje de aceptar el código fuente de programas o datos que funcionaban con la versión anterior. [8]
Se dice que un formato de datos es compatible con versiones anteriores cuando una versión más nueva del programa puede abrirlo sin errores al igual que su predecesor. [9]
Existen varios incentivos para que una empresa implemente la compatibilidad con versiones anteriores. La compatibilidad con versiones anteriores se puede utilizar para preservar software antiguo que de otro modo se habría perdido si un fabricante decide dejar de dar soporte a hardware antiguo. Los videojuegos clásicos son un ejemplo común utilizado cuando se habla del valor de dar soporte a software antiguo. El impacto cultural de los videojuegos es una gran parte de su éxito continuo, y algunos creen que ignorar la compatibilidad con versiones anteriores haría que estos títulos desaparecieran. [10] La compatibilidad con versiones anteriores también actúa como un argumento de venta para el nuevo hardware, ya que una base de jugadores existente puede actualizar de manera más asequible a las generaciones posteriores de una consola. Esto también ayuda a compensar la falta de títulos en el lanzamiento de nuevos sistemas, ya que los usuarios pueden sacar de la biblioteca de juegos de la consola anterior mientras los desarrolladores hacen la transición al nuevo hardware. [11] Además, los estudios realizados a mediados de la década de 1990 descubrieron que incluso los consumidores que nunca juegan juegos antiguos después de comprar un nuevo sistema consideran la compatibilidad con versiones anteriores una característica muy deseable, valorando la mera capacidad de seguir jugando una colección existente de juegos incluso si eligen no hacerlo nunca. [12] Se considera que la compatibilidad con los discos de software y periféricos originales de PlayStation (PS) fue un factor de venta clave para la PlayStation 2 (PS2) durante sus primeros meses en el mercado. [13]
A pesar de no estar incluida en el lanzamiento, Microsoft incorporó lentamente la compatibilidad con versiones anteriores para títulos seleccionados en Xbox One varios años después de su ciclo de vida del producto. [14] Los jugadores han acumulado más de mil millones de horas con juegos compatibles con versiones anteriores en Xbox, y la generación más nueva de consolas como PlayStation 5 [15] y Xbox Series X/S también admiten esta función. Una gran parte del éxito y la implementación de esta función es que el hardware dentro de las consolas de nueva generación es potente y lo suficientemente similar a los sistemas heredados como para que los títulos más antiguos se puedan desmontar y reconfigurar para ejecutarse en Xbox One. [16] Este programa ha demostrado ser increíblemente popular entre los jugadores de Xbox y va en contra de la tendencia reciente de remasterizaciones de títulos clásicos realizadas por estudios, creando lo que algunos creen que es un cambio importante en las estrategias de los fabricantes de consolas. [14]
Los costos monetarios de dar soporte a software antiguo se consideran un gran inconveniente para el uso de la compatibilidad con versiones anteriores. [11] [12] Los costos asociados a la compatibilidad con versiones anteriores son una mayor factura de materiales si se requiere hardware para dar soporte a los sistemas heredados; una mayor complejidad del producto que puede llevar a un mayor tiempo de comercialización , obstáculos tecnológicos y una ralentización de la innovación; y mayores expectativas de los usuarios en términos de compatibilidad. [1] También introduce el riesgo de que los desarrolladores favorezcan el desarrollo de juegos que sean compatibles tanto con los sistemas antiguos como con los nuevos, ya que esto les da una base más grande de compradores potenciales, lo que resulta en una escasez de software que utilice las características avanzadas del nuevo sistema. [12] Debido a esto, varios fabricantes de consolas eliminaron gradualmente la compatibilidad con versiones anteriores hacia el final de la generación de consolas para reducir costos y revitalizar brevemente las ventas antes de la llegada de hardware más nuevo. [17]
Es posible evitar algunos de estos costes de hardware. Por ejemplo, los sistemas PlayStation 2 (PS2) anteriores utilizaban el núcleo de la CPU de la PlayStation (PS1) original como procesador de doble propósito, ya sea como CPU principal para el modo PS1 o aumentando la velocidad de reloj para descargar la E/S en el modo PS2. Este coprocesador fue reemplazado por un procesador basado en PowerPC en sistemas posteriores para cumplir las mismas funciones, emulando el núcleo de la CPU de la PS1. Sin embargo, este enfoque puede resultar contraproducente, como fue el caso de la Super Nintendo Entertainment System (Super NES). Optó por la CPU 65C816 más peculiar en lugar de los microprocesadores de 16 bits más populares sobre la base de que permitiría una fácil compatibilidad con la Nintendo Entertainment System (NES) original, pero en última instancia no resultó viable una vez que se diseñó el resto de la arquitectura de la Super NES. [18]
compatibilidad hacia adelante.