El problema con el desarrollo de aplicaciones multiplataforma no tiene nada que ver con los lenguajes de programación; Tiene más que ver con los marcos y bibliotecas de nivel de sistemas. Mac, Linux y Windows proporcionan API específicas para interactuar con el sistema operativo. Mac y Linux, ambos descendientes de Unix, admiten muchas ideas similares (por ejemplo, estándares POSIX y OpenGL). Pero también proporcionan sus propias bibliotecas únicas que permiten a un desarrollador aprovechar el sistema operativo, como las bibliotecas Core en Mac (todas las que comienzan con NS *). Windows es una bestia completamente diferente. La estructura del archivo es única y la API es muy única. Esa singularidad es lo que hace que portar aplicaciones de Windows a * nix sea una tarea más complicada que portar una aplicación de Mac a Linux.
En cuanto a un lenguaje de programación que permite crear aplicaciones nativas multiplataforma, C o C ++ son probablemente las más cercanas. Es ampliamente compatible con los compiladores en muchos sistemas diferentes. También se usa comúnmente para desarrollar SDK para iOS y Android y para crear juegos multiplataforma para Mac, Windows, Linux y consolas. Una cosa para recordar es que C ++ se usa para implementar la mayoría de los sistemas operativos e intérpretes de lenguaje modernos (como Java), por lo que cualquier cosa que pueda hacer en Python, Java, JavaScript o Ruby, hay una manera de hacerlo en C ++. Puede que no sea la forma más fácil, pero hay una manera. La ventaja de los lenguajes de nivel superior, como Python, es que podemos trabajar en un nivel de abstracción superior y evitar preocuparnos por los detalles específicos del sistema. Básicamente, ¡la abstracción nos hace la vida más fácil! 🙂
La siguiente pregunta ahora es, si los idiomas son capaces de hacer esto, ¿por qué hay una diferencia en las bibliotecas? ¿Por qué no simplemente construir una biblioteca de bajo nivel para servir a cada sistema operativo o especificar una API común y obligar a los sistemas operativos a cumplir con esos estándares? Para crear una aplicación nativa, debe interactuar con el sistema operativo. Esta API variada que existe, se debe en parte a las decisiones comerciales. Pero también se debe a la variabilidad en el hardware. La mayoría de los sistemas operativos están personalizados y optimizados para sus plataformas previstas. Aquí es donde entran en juego los intérpretes de lenguaje y las máquinas virtuales. La JVM, por ejemplo, proporciona un conjunto común de bibliotecas que permiten a un desarrollador crear una aplicación multiplataforma. ¡JVM maneja todas las idiosincrasias subyacentes del sistema operativo por nosotros! Es más fácil para un grupo de personas muy inteligentes construir una plataforma que maneje cosas específicas del sistema operativo para nosotros y para que podamos usarla, que tratar de luchar con los detalles de trabajar en Mac, Windows y Linux simultáneamente.
- ¿Cuál es la razón del fallo de raíz en un dispositivo Android?
- ¿Por qué el sistema Android me quita toda la batería?
- ¿Cómo puedo grabar audio / voz usando un teléfono Android sin instalar aplicaciones que desean permisos innecesarios como GPS o acceso a la red?
- ¿Por qué se ensambla Moto X en EE. UU.?
- ¿Por qué no puedo responder / rechazar llamadas desde la ventana emergente en Moto G2 Lollipop?
Gracias por el A2A!