Supongamos que escribe un programa en un lenguaje de bajo nivel (C / C ++), ¿puede ejecutarlo en cualquier lugar?

El código en sí es obviamente portátil. Las computadoras de escritorio que usan procesadores Intel y AMD usan arquitectura x86, que es una arquitectura CISC. Los teléfonos Android generalmente tienen un procesador ARM que utiliza la arquitectura RISC. La diferencia entre ambos es la cantidad de instrucciones que se utilizan en el nivel bajo (ensamblaje o código de máquina). Ahora, para responder completamente a su pregunta: El propósito de lenguajes como C, C #, Java, etc. es tener capas abstractas. Esto significa que el desarrollador que crea código en C o Java no tiene que preocuparse por la estructura subyacente, como CISC o RISC. Este suele ser el trabajo del compilador. Por lo tanto, la respuesta parcial a su pregunta es sí. Sin embargo, dado que la mayoría de las aplicaciones usan API específicas del sistema operativo, como iOS, Android o Windows API, no puede usar el mismo código y ejecutarlo en ningún hardware sin optimizarlo. Además, Android usa Java mientras que iOS usa Swift y Objective C. Sin embargo, técnicamente es posible ejecutar el mismo programa si se vuelve a compilar para la misma arquitectura y se escribe el sistema operativo de forma independiente.

La respuesta de Joe está un poco fuera de lugar. C ++ es ciertamente portátil. Es casi seguro que puede obtener algo para compilar en muchos sistemas diferentes si codifica la portabilidad. El problema con C / C ++ (y la mayoría de los otros lenguajes) es que tienen interacciones muy específicas con el sistema operativo y / o el sistema de ventanas. Ahora, si se adhiere a las interfaces compatibles con Posix para interactuar con el sistema operativo, además de usar una biblioteca de ventanas portátil, debería ser altamente portátil.

Si y no.

Si escribe una aplicación que no es GUI en C, sin usar funciones específicas del sistema operativo, entonces, si todo es igual, probablemente pueda ejecutarla en muchas computadoras diferentes. Tome Lua, es un lenguaje escrito en ANSI C, se construye sin previo aviso en un AS / 400, lo he hecho, es algo sorprendente, ya que creo que Lua fue creado sin haber sido probado en un AS / 400. AS / 400 también es una plataforma única, nada como Linux ni nada de eso.

Sin embargo, declaras una aplicación de juego, que es algo completamente diferente, si usas Metal en iOS y OpenGL en Android, vas a tener un momento bastante desagradable para que sea portátil. Luego, en xBox, estás hablando de DirectX.

Además de eso, es posible que desee cosas específicas de la plataforma como notificaciones, etc.

Sin embargo, puede consultar cosas como SDL, ver si está disponible en las plataformas que desee. Google para motores de juegos multiplataforma, etc.

No. Escribes en idiomas de nivel superior para portabilidad. Si escribe algo en C ++, solo se ejecuta en un tipo de chip y sistema operativo.

En cuanto a Android, no creo que realmente puedas hacerlo en C ++. El lenguaje de nivel más bajo para Android es Java. Para iOS, debe escribirlo en el Objetivo C. Entonces, en ese nivel, su portabilidad es cero.

Sin embargo, si sube de nivel, puede escribir la aplicación de su teléfono en Javascript con Phonegap. Si lo haces, tienes portabilidad. Pero creo que aún necesita masajear un poco su aplicación para que funcione en el otro sistema.