Programas incompatibles entre sistemas operativos (Windows, Linux y Mac).

Familias de sistemas operativos populares
Familias de sistemas operativos populares
  • ¿por qué no puedo ejecutar cualquier programa en cualquier sistema operativo?
  • ¿por qué algunos programas existen para múltiples sistemas operativos y otros no?
  • ¿por qué algunos programas funcionan en cualquier sistema operativo?

¡qué de preguntas! Y todo tiene respuesta, pero primero hay que entender cómo se ejecutan los programas en una computadora. Tranquilos, voy a tratar de ser bien claro y cortito.

Un programa es una secuencia de pasos que un programador escribe en un lenguaje de programación, y que le indica a la computadora que debe hacer. Pero el lenguaje de programación que utiliza el programador humano no es entendible por la computadora, con lo cual es necesaria una transformación desde el código fuente a un código ejecutable (se le llama código objeto) que la computadora sí puede entender. A esto le llamamos compilación (o interpretación en algunos casos). Los compiladores generan código binario para una determinada familia de sistemas operativos; podemos tener un programa escrito en C y generar un ejecutable para Windows y un .sh para Linux, compilándolo en cada caso con el compilador apropiado.

Este código binario compilado posee muchísimas invocaciones al sistema, o sea solicitudes que el programa realiza al sistema operativo subyacente para realizar determinadas operaciones que solo el sistema operativo puede hacer, como por ejemplo escribir en disco, liberar o solicitar memoria adicional, etcétera. Y aquí es donde comienzan nuestros problemas: cada sistema operativo (o cada familia de sistemas operativos) tiene su manera particular de proveer estas operaciones. Nombres distintos, distintos parámetros, distintos tipos,… El punto es que el código ejecutable de un programa para Windows es muy distinto del de  un programa para Linux  y muy distinto del de un programa para Mac. Uno podría decir: y bueno, pongo código ejecutable para cualquier sistema operativo y listo. Obviamente, esto no es solución: los ejecutables serían enormes, y si sale un nuevo sistema operativo habrá que modificar todos los compiladores para que puedan generar código compatible para este nuevo sistema; no da ni ahí.

Ahora que tenems estos conceptos más claros, podemos comenzar a responder las preguntas:

¿por qué no puedo ejecutar cualquier programa en cualquier sistema operativo?

Bueno, esta es obvia. Es simplemente porque los códigos binarios son incompatibles. Salvo que haya algo en el medio que transforme las invocaciones al sistema desde un sistema operativo hacia otro (por ejemplo, Wine).

¿por qué algunos programas existen para múltiples sistemas operativos y otros no?

Porque los desarrolladores se encargan de generar versiones compiladas para cada sistema operativo. Un claro ejemplo de este es el Mozilla Firefox, tenemos versiones para cualquier distro de Linux, de 32 y de 64 bits, para Windows, para Mac, para Solaris… y también nos dan el código fuente, por si queremos compilarlo nosotros mismos (o modificarlo 😀 )

¿por qué algunos programas funcionan en cualquier sistema operativo?

Existen algunos programas que funcionan sobre cualquier sistema operativo, como por ejemplo las aplicaciones Java. ¿cómo hacen esto? En Java, el código fuente se compila en un código intermedio, que se llama bytecode; este código no es ejecutable aún, es una mezcla entre código fuente y codigo objeto, no es ni uno ni el otro. Pero es igual para cualquier sistema.

El Sistema Operativo subyacente deberá tener la JRE (Java Runtime Environment, antes conocida como JVM o Java Virtual Machine), que es básicamente un entorno de ejecución que permite tomar cualquier programa en bytecode y ejecutarlo. La JRE sí depende del sistema operativo, ya que transforma el bytecode en llamadas al sistema apropiado; y la gente de SUN se han encargado de proveer una JRE para cada sistema operativo moderno (la mayoría de las distros incluyen una y hasta hay una implementación libre de la jre, Windows tiene, Mac tiene, obvio que Sun Solaris también).

10 comentarios sobre “Programas incompatibles entre sistemas operativos (Windows, Linux y Mac).

  1. pues todos deberian ser amables y poner los programas a disposicion de mas de un sistema operativo que no sean envidiosos 😛 jeje

    1. no ves que no se puede, creo que seria como pedir que los motores o repuestos de BMW tambien se los pueda poner en Mazda, creo que es asi si entendi bien.

  2. Muchas gracias… esta informacion me ha sido muy util, despues de tres días de investigar para un trabajo de la universidad, aca encontre al fin informacion de facil entendimiento para la gente que no tiene ningun conocimiento en terminos informaticos.
    Gracias Mil.

  3. Las mac son lo más!!! Cada vez más los programas tienen versiones para PC y para Mac PERO Apple tiene un sistema operativo mejor que Windows, muy rara vez da problemas, pero son máquinas, y cada tanto surge algún inconveniente, o problema con el disco, por el uso natural… En esos casos, conviene tener un buen servicio técnico de mac. En Buenos Aires, Capital Federal, probé varios pero el que mejor me ha respondido en tiempo y forma, es uno que se llama MacHelp http://soportecnicomachelp.com.ar lo recomiendo, no te hacen esperar días y días como en otros lugares, y tu mac queda 10 puntos.

Deja un comentario