Estoy trabajando en un documento sobre programación multiplataforma y me gustaría incluir secciones sobre ventajas/desventajas. Desde mi entendimiento; tener cualquier aplicación ser multiplataforma es un gran punto de venta para el desarrollador, ya que permite a casi cualquier usuario de computadora como comprador potencial, entre otras cosas. Solo estoy tratando de descubrir posibles desventajas. ¿Si alguna?¿Hay alguna desventaja para que un idioma sea independiente de la plataforma?
Respuesta
Generalmente, en un entorno multiplataforma necesitará un nivel adicional de abstracción entre el lenguaje y la máquina, como un intérprete o la JVM. Este nivel adicional le dice a la máquina específica cómo ejecutar el código en su entorno y trae más código que su computadora tiene que ejecutar para manejar un conjunto dado de instrucciones. Debido a esto, las aplicaciones multiplataforma generalmente son más lentas.
La lógica detrás de esto es que en lugar de codificar la misma aplicación muchas veces para cada entorno, se crea una especie de interfaz para que los codificadores programen. Cada plataforma necesita su propia implementación de esta interfaz, pero está destinada a ejecutar el código de una manera uniforme.
Además, aunque esta capa está diseñada para proporcionar un comportamiento universal en múltiples plataformas, es posible que aún deba tener en cuenta las diferencias en las convenciones de nomenclatura y el almacenamiento de archivos de una plataforma a otra.
Los navegadores web son el ejemplo más extendido de esto. Si tiene un buen navegador, interpreta el código estándar web (HTML/CSS/JS, etc.) y se ocupa de cómo mostrarlo en su plataforma en particular, en lugar de que el que escribe el código necesite acomodarse a estas diferencias.
¿Hay desventajas en un lenguaje (pedido en el título) es independiente de la plataforma?
Como implementador idioma, tengo que decir que hacer algo ejecutarse en múltiples plataformas es un montón un trabajo más. La mayor parte del trabajo adicional está en el sistema de tiempo de ejecución. Hacer algo independiente de la plataforma es aún más difícil; tiene que apegarse a un estándar ampliamente utilizado como ANSI C.
Debo agregar que no necesariamente tiene que escribir mucho código; solo tienes que pensar más. Lua es un buen ejemplo de un lenguaje independiente de plataforma sin una gran implementación monstruosa. GHC es lo opuesto: un montón de código para obtener un gran rendimiento en muchas plataformas —, pero el sistema de tiempo de ejecución solo es cuatro veces el tamaño de la versión 6 de Unix.
¿Qué tal "Jack of all trades, master of none"?
Tener un lenguaje diseñado e implementado en una plataforma permite que el diseño se adapte a esas plataformas. Además, los recursos suelen ser limitados, por lo que la implementación y la depuración se centran en una, en lugar de en muchas plataformas.
Esto no se aplica a los esfuerzos de la comunidad donde abundan los recursos, como Perl.
principales desventajas son:
- más tiempo al desarrollo debido a las diferencias de plataforma (por ejemplo, el sistema de archivos de acceso difiere en diferentes plataformas)
- Mucho más pruebas requiere y por lo tanto mucho mayor gasto para poner a prueba en múltiples plataformas soportadas.
desventaja importante - no se puede utilizar las opciones específicas de la plataforma ...
Ésta es una cuestión más filosófica - ¿dónde está el límite entre las habilidades del lenguaje y habilidades del compilador ...
que pueda write directx code ... pero para que ocurra el mismo resultado en Linux ...
Muchas veces hace que un lenguaje sea menos rico en funciones o, alternativamente, más lento debido a la necesidad de un tiempo de ejecución más grande y complejo. La mayoría de los idiomas logran llevarlo decentemente bien, pero hay un par que probablemente no se benefició de la implementación en todas las plataformas.
¡Common Lisp es como un caso de estudio en esto! :-)
En cierto modo, tienen bastante razón: hay algunas cosas que parecen extrañas desde una perspectiva teórica pero que permiten a los procesadores modernos no especializados implementarla rápidamente. Por ejemplo, hay algunas expresiones aritméticas sin sentido a las que se les permite devolver basura en lugar de señalar una condición de error, porque puede ser mucho más eficiente de esa manera.
En otras formas, trataron de ser independientes de la plataforma, y agregaron complejidad con poca o ninguna ganancia. Un ejemplo clásico es el subsistema pathname; la firma make-pathname
función tiene el siguiente aspecto:
make-pathname &key host device directory name type version defaults case
Ya en la década de 1980 cuando fue estandarizada, podría haber parecido razonable incluir soporte nativo para sistemas de ficheros muy ricos, pero no he visto un VAX (o cualquier otra sistema con un sistema de archivos versionado) en más de 10 años. Hoy en día, es la complejidad que most people don't care about. (Sé que las rutas y las rutas lógicas son características técnicamente separadas, pero no están tan lejos en lo que intentan hacer).
Como programador, nunca se puede adivinar en qué área necesitará flexibilidad en el futuro, o incluso en qué eje querrá flexibilidad, los programadores lo saben bien, y es por eso que las palabras cursis como "ágil" se han vuelto comunes. Al diseñar un lenguaje independiente de la plataforma, se trata de lo peor de ambos mundos: los lenguajes son para la abstracción y las plataformas son muy concretas. Efectivamente, cada lenguaje independiente de la plataforma está lleno de una cantidad decente de succión, de C en adelante.
Pregunta Sun. ¿Cómo funcionó todo el asunto de Java para la empresa? (Sí, lo sé, muestra de 1 y todo)
En este caso, lo estoy mirando desde el punto de vista de un proveedor. Hicieron un lenguaje, que si bien es popular, no hizo nada para aprovechar el poder (real) del sistema operativo que vendieron. Tenía que funcionar en Windows, con todas las tonterías paralizantes que eso conlleva. ¿Desea desviar un proceso secundario y abrir una tubería o dos entre padres e hijos? Demasiado. Diviértete con tus errores de hilo. Diviértete con tu E/S de archivo lento para perros. (cuando, si es que alguna vez, Java finalmente incluyó una implementación de "nio" ?)
Microsoft por supuesto no cometió ningún error con .NET. Y se centraron en mejores características de lenguaje, en lugar de gastar recursos en implementaciones de tiempo de ejecución múltiples.
- 1. ¿Por qué la JVM no es independiente de la plataforma, dado que Java (el idioma) es independiente de la plataforma?
- 2. Desventaja de hacer que la clase sea Serializable
- 3. ruta de concatenación - plataforma independiente - "/", "\"
- 4. ¿La plataforma WCF es independiente?
- 5. ¿Hay alguna desventaja al devolver esto en lugar de anular?
- 6. ¿La plataforma de archivos objeto es independiente?
- 7. ¿Cómo hacer que maven build platform sea independiente?
- 8. ¿Hay alguna desventaja en el uso de las funciones -Bsymbolic-?
- 9. receptor independiente de la plataforma/dev/null para Java
- 10. ¿Cómo hacer que DateTime sea independiente de la cultura actual?
- 11. Administración de recursos independiente de plataforma
- 12. Kindle SDK Idioma/plataforma
- 13. SFTP en Python? (plataforma independiente)
- 14. ¿Hay alguna aplicación de JavaScript que no sea web?
- 15. ¿Hay alguna manera fácil de hacer que ScrollViewer sea "hinchable"?
- 16. ¿Hay alguna desventaja al usar PRINT en mis procesos almacenados?
- 17. ¿Hay alguna biblioteca simple de Servidor FTP que sea incrustable?
- 18. ¿Hay alguna solución para hacer que un miembro de la estructura sea de alguna manera "privado" en C?
- 19. Atributos de HTML que no son (X) ... alguna desventaja?
- 20. Mapeo de la memoria independiente de la plataforma [archivo] IO
- 21. #ifdef DEPURACIÓN con CMake independiente de la plataforma
- 22. ¿Hay alguna manera de hacer que UserControl sea inafocable?
- 23. ¿Cómo hacer que la aplicación Java sea independiente?
- 24. ¿Hay alguna mejor IDOMImplementation que no sea MSXML?
- 25. ¿Hay alguna forma de marcar un método para garantizar que T no sea nulo?
- 26. Independiente de la plataforma/dev/null en C++
- 27. ¿Hay alguna forma de hacer que un bloque sea opcional en la plantilla de Django?
- 28. ¿Busca un idioma que no sea LL (1)?
- 29. ¿Hay alguna alternativa a JTable, que sea gratuita y mejor?
- 30. Android: ¿Hay alguna forma de cambiar el idioma predeterminado de Android a un nuevo idioma?
¿Está preguntando por entornos o idiomas? Yo diría que el ejemplo más extendido de una plataforma independiente * lenguaje * es C, y en C las capas de abstracción no suelen ser cuellos de botella. – Ken