Compatibilidad (informática)
# Compatibilidad (informática)

La compatibilidad es la condición que hace que un programa y un sistema, arquitectura o aplicación logren comprenderse correctamente tanto directamente o indirectamente (mediante un algoritmo). A este algoritmo que hace que un programa logre ser comprendido por un sistema, arquitectura o aplicación se lo denomina emulador por el hecho de que es un intérprete entre el programa y el sistema, arquitectura o aplicación.

## Problemas de compatibilidad

Un problema de compatibilidad (incompatibilidad) surge a partir de la falta o mala interpretación de un programa por un algoritmo, esto conlleva a una mala ejecución de dicho programa o a la imposibilidad de ser ejecutado.

Un ejemplo práctico:

Compatibilidad:

El programa le indica una orden al sistema y el sistema la interpreta y la ejecuta sin problemas.

Incompatibilidad Caso A (Mala ejecución):

El programa le indica una orden al sistema y el sistema la interpreta pero de forma errónea, devolviendo un resultado no esperado.

Incompatibilidad Caso B (Imposibilidad de ejecución):

El programa le indica una orden al sistema que para él es arbitraria y por ende no logra interpretarla.

## Emulación

La emulación consiste en utilizar un algoritmo de por medio, denominado emulador que simula ser el sistema, arquitectura o aplicación para el cual el programa está preparado, el emulador modifica los comandos del programa en memoria para que el sistema pueda interpretarlo como si estuviera especialmente diseñado para él.

Un ejemplo:

Ejecución de orden del programa:

Ejecución del emulador:

Ejecución de orden del programa emulada en memoria:

Resultado en el sistema:

## OpenSource

Hoy en día los programas OpenSource (código abierto), generalmente en los sistemas basados en Unix lograron solucionar bastante el tema de la compatibilidad, por el hecho de que el sistema que compilará el programa, podrá antes adaptar el código a su kernel modificando opciones de compilación, generalmente ingresando en la interfaz de línea de comandos el siguiente comando: ./configure

Luego compila el código con el siguiente comando: make

Y por último instala los ejecutables compilados con: make-install

Logrando así obtener un programa genérico completamente adaptado al sistema operativo que lo ha compilado.

