javascript - attribute - title html
Montaje web, JavaScript, y otros lenguajes. (2)
Creo que en este caso, gradualmente, el código javascript escrito se transferirá a un lenguaje de programación más preferido.
Con el advenimiento de la Nueva Era de la Web, WebAssembly, que se diseñará en colaboración con Google, Microsoft, Apple y Mozilla:
Objetivos de alto nivel de montaje web
- Defina un formato binario portátil, de tamaño y tiempo de carga que sirva como un objetivo de compilación que pueda compilarse para ejecutarse a una velocidad nativa aprovechando las capacidades de hardware comunes disponibles en una amplia gama de plataformas, incluidas móviles e IoT
Me gustaría preguntar a aquellos que ya poseen este conocimiento:
¿Se puede compilar potencialmente cualquier lenguaje de programación a WebAssembly una vez hecho? Deja que sea C #, Java, Python, JavaScript, Ruby. Si este es el caso, ¿podría un desarrollador web elegir cualquier idioma para lograr lo que lograría con JavaScript ahora?
El objetivo es, de hecho, admitir cualquier idioma, pero es difícil lograrlo sin grandes retrasos.
Actualmente, WebAssembly se centra en los idiomas que tradicionalmente se compilan con anticipación, funcionan bien con el almacenamiento dinámico de memoria lineal y que no requieren una compilación dinámica, la carga de código en tiempo de ejecución o las recolecciones de basura. Algunas de estas restricciones estaban allí para llegar a un Producto Mínimo Viable lo antes posible (esto ocurrió en febrero de 2017 ), y tener en cuenta lo que pueden hacer los compiladores existentes en el navegador.
Tenga en cuenta que el MVP no admite subprocesos. Los hilos se añadirán poco después.
Python, JavaScript y Ruby se pueden admitir fácilmente compilando un intérprete, escrito en C / C ++, en WebAssembly. Las versiones posteriores de WebAssembly admitirán la compilación JIT, pero los motores como V8 tendrán que apuntar a WebAssembly como si fuera una nueva ISA (por ejemplo, a la par con x86-64 / ARM / ...).
C # y Java requieren primitivas de manipulación de pila y GC similares. Eso también está en la hoja de ruta, pero después de MVP, subprocesos y enlaces dinámicos.
Tenga en cuenta que los idiomas pueden funcionar bien, pero también es difícil admitir todas sus bibliotecas. Nosotros (los ingenieros del navegador) podemos trabajar para apoyar bien los idiomas, pero necesitamos comunidades para desarrollar un gran soporte de bibliotecas.
¿WebAssembly reemplazará a JavaScript?
En su última frase: sí, WebAssembly debería poder hacer muchas cosas que JavaScript puede hacer porque tendrá acceso a las mismas API web. Sin embargo, su objetivo no es reemplazar JavaScript: es complementar JavaScript, evitar agregar funciones a JavaScript por el hecho de no admitir naturalmente otros idiomas, y ofrecer un rendimiento casi nativo predecible a lenguajes de bajo nivel como C ++ / Rust.
Mantenga la evolución de JavaScript para las personas que tienen como objetivo JavaScript o compilan lenguajes similares a JavaScript (por ejemplo, TypeScript), y evolucione a WebAssembly para que sea un excelente compañero de JavaScript a quien le gustan otros idiomas.
Con el tiempo, WebAssembly admitirá aún más funciones de bajo nivel . Algunos de estos no tendrían sentido para la adopción de JavaScript, pero el código existente (por ejemplo, las bases de código grandes de C ++) asume que estas características existen para la corrección y / o el rendimiento.
¿Debería la gente dejar de escribir JavaScript y cambiar a WebAssembly? No. Espero que la estrecha integración con JavaScript signifique que los módulos de ensamblaje web se usarán desde JavaScript (por ejemplo, un procesador rápido de imágenes), y que las bases de código de C ++ existentes estarán orientadas a la web, pero no veo que JavaScript muera pronto .