Lenguajes de programación (Intérpretes, Linux...)

Unas dudillas que tengo...

Hay programas que para hacer una versión para GNU/Linux se necesita hacer una nueva versión del código.

¿Eso es según el lenguaje de programación? ¿Si se utiliza un lenguaje que usa compilador o intérprete?

Por ejemplo, el programa de mensajería instantánea emesene está escrito en Python. El mismo archivo se ejecuta en Windows y GNU/Linux. ¿Esto es porque Python usa un intérprete?

En lenguajes que se usa un compilador, como C, ¿no es posible escribir un programa que sirva para GNU/Linux y Windows a la vez?

No sé si me he explicado bien.
Depende de las librerías que se usen. Si usas librerías estándar , los programas que hagas en C los podrás usar en ambos sistemas, aunque la implementación de las librerías sean distintas en ambos sistemas, de eso tú no te enteras.

Al ser interpretado, puede que implemente alguna librería de distinta forma para linux y windows y, en tiempo de ejecución, detecte en qué sistema esté y use la correcta.

Al ser python interpretado, si no incluye librerías exclusivas de un sistema, no hace falta hacer cambios. C, en cambio, hay que compilarlo. Puesto que los binarios de linux y de windows son distintos, aunque el código sea el mismo, habrá que compilarlo en cada sistema.

No sé si se entiende, no me he explicado muy bien :P
Vamos, no te he entendido bien, pero según lo que he cogido:

¿Eso es según el lenguaje de programación? ¿Si se utiliza un lenguaje que usa compilador o intérprete?


Al usar un compilador, éste te generará un archivo que digamos solo entiende un SO en concreto. Ésto se consigue mediante un makefile, que contiene las instrucciones que el compilador debe seguir para generar el ejecutable.

Por ejemplo, el programa de mensajería instantánea emesene está escrito en Python. El mismo archivo se ejecuta en Windows y GNU/Linux. ¿Esto es porque Python usa un intérprete?


Eso es porque hay diferentes versiones del interprete Python para diferentes SO, de tal forma que el archivo a ejecutar con Python es el mismo, y lo único que cambia es el interprete.

En lenguajes que se usa un compilador, como C, ¿no es posible escribir un programa que sirva para GNU/Linux y Windows a la vez?


No. Tendrías que generar 2 ejecutables diferentes: uno para windows y otro para linux. Esto se consigue cambiando el makefile.

Espero que te sirva de ayuda.

Salu2!!

EDITO: Se me adelantaron xDD. Si es que tardo mucho en escribir :-|
Muchas gracias, más o menos lo he entendido :)
3 respuestas