¿Deberían los desarrolladores web que estudian JavaScript y sus marcos, Node.JS, aprender WebAssembly y ES6 independientemente de estos y cuál es la conexión de estos dos con los programas anteriores?

WebAssembly significa que la web está a punto de ser mucho más rápida.


JavaScript se acelera cada día gracias a la investigación y el desarrollo de empresas como Google. ECMAScript 6 (ES6) ya está disponible en muchos navegadores y facilita mucho el desarrollo de JavaScript. Y veremos más mejoras gracias a los lanzamientos anuales de ECMAScript.

Por rápido que sea JavaScript, no es ningún secreto que los lenguajes de nivel inferior como C y Java son aún mucho más rápidos. Estos lenguajes operan varias capas de abstracción más cercanas al código binario que las máquinas entienden. Son más rápidos, pero un dolor para programar.

¿No sería genial si pudiéramos codificar en un lenguaje de script de alto nivel como JavaScript, y aún así poder sumergirnos en los 1 y 0 cuando el rendimiento realmente importa?

WebAssembly nos proporciona un formato binario para la web.

WebAssembly le dará a JavaScript una opción “nitrosa” para funcionalidades críticas de rendimiento como juegos y procesamiento de video.

También facilitará el puerto de código escrito en lenguajes más rápidos, como C o C ++, a la web. Es por eso que algunas personas dicen que WebAssembly podría indicar el final de JavaScript. Pero esto ha sido posible por un tiempo, gracias a herramientas como Emscripten, y eso apenas ha hecho mella en el dominio de JavaScript en la web.

WebAssembly ayudará a JavaScript más de lo que lo perjudicará, al hacer que la web sea un competidor más fuerte que el nativo.

npm continuará siendo el ecosistema de código abierto más grande por algún tiempo. Una vez que se publique WebAssembly (todavía son las primeras etapas de desarrollo), npm tendrá una tonelada de excelentes paquetes para ayudarnos a usar WebAssembly.


Hasta entonces, sigue aprendiendo JavaScript y Node.js. Están creciendo rápidamente. Y con la ayuda de WebAssembly, podrían admitir el próximo editor de video o videojuego de gran presupuesto, directamente en su navegador.

Para obtener más información sobre WebAssembly y su relación con JavaScript, lea ¿Qué es WebAssembly de Eric Elliot? El amanecer de una nueva era y el WebAssembly de Axel Rauschmayer: un formato binario para la web.

Aprende no solo JavaScript, sino también desarrollo web. JS es solo un subconjunto de este último. El desarrollo web implica conocer bien HTML (su semántica, cómo hacerlo accesible y SEO amigable, etc.), CSS (sus peculiaridades, limitaciones, genialidad, etc.), Dom y otras tecnologías.

De alguna manera, aprender JS es solo una pequeña parte de tu entrenamiento: la sintaxis es bastante simple (aunque un poco menos con ES6, que, por otro lado, simplifica otras cosas), en su mayoría debes aprender las peculiaridades (las “partes malas” ) e idiosincrasias (las “partes buenas”), es decir. cómo usarlo de manera efectiva (adoptando paradigmas de POO o PF, o mezclándolos, etc.).

WebAssembly es principalmente una versión binaria de ASM.js, un subconjunto JS especializado con extensiones especiales que permiten manipular datos de formas familiares a otros lenguajes (por ejemplo, matrices reales de enteros, donde JS solo conoce hashes de flotantes sin partes decimales) como C o C ++.

Como tal, es un buen objetivo para la compilación cruzada (o transpilación) de estos idiomas al navegador. Esto permite tener, por ejemplo, Box2D en el navegador sin perder mucho tiempo en grabarlo manualmente en JS.

Tenga en cuenta que, alternativamente, muchos idiomas lo cortan y solo se compilan en JS simple, pero puede ser ineficiente …

De todos modos, Wasm será importante en el futuro, pero es posible que no necesite aprenderlo, ya que no necesita aprender el lenguaje ensamblador para codificar en C. Es un objetivo para los compiladores, y estará oculto por la mayoría de las herramientas ( depuradores, etc.) que utilizarán mapas fuente para mostrar el código original y depurarlo.

Mientras tanto, JS continuará siendo una parte importante del desarrollo web. Sigue siendo el idioma nativo de la Web, millones de codificadores lo conocen bien, miles de frameworks / bibliotecas están codificados en él, etc. No cambiará los hábitos simplemente proporcionando una mejor alternativa.

Para tomar un caso similar, Java es un lenguaje detallado que mucha gente encuentra limitante y obsoleto. Muchos lenguajes intentan despojarlo de su dominio, compilando un código de bytes ejecutado por JVM (Java es un ecosistema y un lenguaje), aprovechando las miles de bibliotecas y marcos existentes en ese universo. Entonces tiene Groovy, Scala, Ceylon, Kotlin, además de idiomas portados a la JVM como JRuby, Jython, Clojure, etc.

Sin embargo, Java sigue siendo el lenguaje de los trabajos más solicitados, donde se escriben la mayoría de las líneas de código, donde miles de millones de líneas de código necesitan mantenimiento, y así sucesivamente …

No subestimes el poder de la inercia. ¡Y no dude en aprender nuevos idiomas también! 😉

El ensamblaje web es un formato de archivo compilado como png o jar o swf. No necesita saber si funciona internamente a menos que sea un creador de herramientas.

En lo que me centraría es en herramientas e idiomas que aprovechan o compilan para el ensamblaje web. Y promocionando, apoyando y alentando a los fabricantes de navegadores a agregar soporte.

Cuanto antes esto suceda, más pronto usted como desarrollador podrá beneficiarse de ello.

También me gustaría contactar a los autores del ensamblaje web y alentarlos a que admitan cosas como convertidores swfs o swf a WA. Esto permitiría que millones de contenidos relacionados con Flash se reproduzcan en navegadores sin complementos. Obtendrá todos los beneficios de Flash pero sin la tecnología patentada. Puede utilizar IDE, herramientas y marcos relacionados con Flash para producir su contenido.

FYI A pesar de la presión negativa en torno a Flash Player, es una tecnología increíble que ejecuta el mismo contenido en múltiples plataformas. Cuando se convirtió en un vector de ataque y cuando Adobe se negó a abrir el código, perdió gran parte de su atractivo. Pero todavía hay muchos aspectos geniales al respecto. Al agregar soporte swf a webas, atraerías a muchos desarrolladores Flash increíbles al redil.

Mis predicciones:

No necesitaremos aprender wasm más de lo que los programadores de C ++ necesitan aprender el ensamblaje. En el mismo sentido, para seguir siendo competitivos como desarrolladores, necesitaremos aprender cómo encaja en nuestras cadenas de herramientas, lo que significa ser agradable y acogedor con ellas. En otras palabras, todos estaremos * generando * wasm, pero pocos de nosotros lo escribiremos o depuraremos directamente.

En el corto plazo, compilar lenguajes de bajo nivel que no sean GC’d como C ++ o Rust en wasm y ejecutarlo en navegadores será una opción. Sin embargo, esos idiomas ganan rendimiento a costa de la productividad, por lo que en última instancia habrá un nicho importante pero pequeño para ellos en el mercado.

A largo plazo, wasm obtendrá la semántica de GC y se convertirá en un objetivo de compilación adecuado para lenguajes como Dart o C #. Esto a su vez desencadenará una explosión cámbrica de lenguajes de programación del lado del cliente, alimentada en parte por el resentimiento de larga data contra la ubicuidad de JavaScript. Los políglotas tendrán una gran ventaja y prosperarán los lenguajes que funcionan bien en un entorno de bucle único de eventos.

Al mismo tiempo, JS se compilará en wasm como cualquier otra cosa, liberándolo del infierno de compatibilidad del motor que lo ha mantenido estancado todos estos años. Una evolución más rápida ayudará a JS a sobrevivir a las consecuencias darwinianas posteriores, pero los desarrolladores de JS, como de costumbre, se verán obligados a actualizar grandes extensiones de su conjunto de habilidades.

Tenga en cuenta también que, hasta cierto punto, ES5 ya ha demostrado ser un objetivo de compilación adecuado para los lenguajes GC’d, lo que hace que algunas de estas últimas predicciones ya hayan comenzado a cumplirse. (Piense: JSX, Dart2JS, Traceur, Typecript, Flow, Babel, etc.) WebAssembly en ese sentido simplemente acelerará las tendencias actuales. Intercambiar wasm en lugar de ES5 como un objetivo de compilación puede algún día ser tan simple como ajustar un parámetro en su cadena de herramientas y cosechar un aumento instantáneo del rendimiento.

WebAssembly es:

  • Una mejora para JavaScript: implemente sus elementos críticos de rendimiento en wasm e impórtelos como un módulo JavaScript estándar.
  • Un nuevo lenguaje: el código de WebAssembly define un AST (Árbol de sintaxis abstracta) representado en un formato binario . Puede crear y depurar en formato de texto para que sea legible.
  • Una mejora del navegador: los navegadores comprenderán el formato binario , lo que significa que podremos compilar paquetes binarios que se comprimen más pequeños que el JavaScript de texto que usamos hoy. Las cargas útiles más pequeñas significan una entrega más rápida. Dependiendo de las oportunidades de optimización en tiempo de compilación , ¡los paquetes de WebAssembly también pueden ejecutarse más rápido que JavaScript!
  • Un objetivo de compilación: una forma para que otros idiomas obtengan soporte binario de primera clase en toda la pila de la plataforma web.

Domina la Web con HTML5 (prueba de 30 MCQ):

>> BSNLCAFE

Significará dos cosas:

  1. La web como plataforma obtendrá más capacidades. Será posible ejecutar aplicaciones más eficaces, será más fácil usar el navegador para procesar audio / video, editar imágenes y traer más aplicaciones que hasta ahora se ejecutaban en el servidor o de forma nativa.
  2. Con suerte, la popularidad de J caerá, y para muchos proyectos será irrelevante. Seguirá siendo una opción, pero una entre muchas otras, en igualdad de condiciones, y otros idiomas son mucho más adecuados para aplicaciones de alto rendimiento y alta calidad.

No no no, el ensamblaje web no es algo que se supone que debe aprenderse, es un estándar que debe usarse cuando esté disponible. Actualmente, debe centrarse en ES6, ya que aún obtendrá experiencia con las tecnologías de desarrollo web independientemente. Cuando el ensamblaje web, si prefiere un lenguaje diferente y de más alto rendimiento, entonces cambie todos los idiomas. En ese momento, aprender otro idioma no debería ser difícil porque ya tendrá experiencia en ES6 y las API que utilice serán las mismas porque todavía está programando para la web. Actualmente no esperaría a Web Assembly, probablemente me llevará mucho tiempo estandarizarme, con el soporte adecuado (y la compatibilidad con emscripten).

Hasta donde yo sé, el ensamblaje web no está destinado a ser utilizado directamente por programadores como cualquier otro lenguaje. Es un lenguaje de bajo nivel utilizado como objetivo de compilación para otros idiomas. Por ejemplo, hoy tenemos varios idiomas que son incompatibles. No podemos usar Python en el navegador, por ejemplo. Solo JavaScript es compatible allí.

Hay otros lenguajes que funcionan en el navegador, como CoffeeScript o Typecript, pero funcionan porque se compilan (traducen) a JavaScript antes de ejecutarse.

Con el ensamblaje web, los desarrolladores podrían usarlo para implementar sus idiomas. Entonces, en lugar de escribir Python o Ruby en C, lo escribirían en ensamblaje web, y dado que este formato sería compatible de forma nativa con todos los navegadores, sería posible usar más lenguajes, además de JavaScript.

WebAssembly no cambiará mucho para los desarrolladores actuales de JavaScript. Pueden seguir usando JavaScript igual que ahora.

No recomendaría aprender WebAssembly en sí mismo a menos que esté planeando inventar su propio lenguaje de programación o construir un compilador. En general, si no tiene interés en aprender el bytecode / ensamblado de Java, probablemente no le interesará aprender WebAssembly. Realmente solo interactuarás directamente con él si eres un constructor de herramientas.

Pueden aparecer algunos idiomas nuevos y la experiencia de depuración mejorará un poco para los idiomas que no sean JS. Estoy muy entusiasmado con eso porque el lenguaje JS me parece demasiado detallado y ruidoso.

La mayoría de las implementaciones profesionales implican pasos de minificación y concatenación. Estos serán reemplazados por un paso de compilación. Una vez configurado, el flujo de trabajo para la mayoría de los desarrolladores será el mismo.

WebAssembly no tiene conexiones con Node.js.

WebAssembly es como el bytecode de Java (al igual que, puede usar otras implementaciones), pero para la web. Puede escribir aplicaciones web en todo tipo de idiomas. Puede establecer el objetivo de salida en WebAssembly cuando compila sus aplicaciones web. Por seguridad, las aplicaciones WebAssembly se ejecutarán en un entorno limitado.

En la primera etapa, las aplicaciones de WebAssembly se compilarán en JavaScript, pero al final, las aplicaciones de WebAssembly se compilarán en bytecode, que no tiene nada relacionado con JavaScript.

WebAssembly espera resolver los mismos problemas que Adobe Flash y Java resolvieron, pero con la palabra brillante de “ensamblador”.

La promoción de WebAssembly como una forma para que la web se vuelva increíblemente más rápida ignora la estructura de una página web moderna que carga docenas (si no cientos) de URL adicionales para imágenes y publicidad (y seguimiento, e ignora la lentitud impuesta por las interacciones JSON.

WebAssembly es una forma de ofuscar páginas web y agregar otra API de posibles fallas de seguridad en un navegador.

Javascript sigue siendo el idioma para aprender para desarrolladores web. WebAssembly debería complementar Javascript, por lo que, a menos que esté escribiendo bibliotecas que necesiten un alto rendimiento, todavía estará trabajando en Javascript.

Es solo algo a tener en cuenta. Siempre y cuando puedas dar una explicación de una o dos oraciones, eres bueno por ahora.

Incluso si / cuando el ensamblaje web se convierte en algo común, la mayoría del desarrollo web será HTML, CSS y JavaScript. El ensamblaje web será para aplicaciones de gama alta, como los juegos que necesitan más acceso a los recursos del sistema de lo que las tecnologías web pueden proporcionar.

Tutoriales de JavaScript (ES6) – YouTube