El futuro de las tecnologías frontend y su impacto en la conversión: WebAssembly - Flat 101

El futuro de las tecnologías frontend y su impacto en la conversión: WebAssembly

Si no has oído hablar sobre WebAssembly (o Wasm) todavía, es el momento. Wasm es uno de los secretos mejor guardados de esta Industria, es un formato de código binario portable, para la ejecución íntegra en navegador de scripts de lado del cliente. En este post repasamos la evolución de las tecnologías frontend hasta el día de hoy, para entender la necesidad de un código máquina como Wasm.

Charla íntegra sobre “El futuro de las tecnologías frontend y su impacto en la conversión: WebAssembly” impartida en las Flat 101 Digital Sessions del día 17 de abril de 2020

¿WebAssembly?

Si no has oído hablar sobre WebAssembly (o Wasm) todavía, es el momento. Wasm es uno de los secretos mejor guardados de esta Industria, es un formato de código binario portable, para la ejecución íntegra en navegador de scripts de lado del cliente. En este post repasamos la evolución de las tecnologías frontend hasta el día de hoy, para entender la necesidad de un código máquina como Wasm. Y veremos el completo funcionamiento de WebAssembly, y cómo desarrollar un sencillo programa en esta tecnología.

¿Cómo funciona la navegación web?

Cuando navegamos en internet, lo que estamos haciendo es conectarnos a un servidor, pedirle información, y este nos devuelve dicha información, que nosotros leemos a través de un programa llamado “navegador”, este navegador, es lo que llamamos cliente.

Por lo tanto tendremos dos partes diferenciadas:

  • El servidor, ejecuta servicios y algoritmos, lo que llamamos Tecnologías BackEnd.
  • Y nuestro navegador, o cliente, ejecuta algoritmos para presentar dicha información de forma óptima y amable, lo que llamamos Tecnologías Frontend.  Normalmente estas tecnologías y lenguajes vienen implementados en los diferentes Navegadores que existen. Las tecnologías más utilizadas en el FrontEnd son HTML, CSS, JavaScript, Ajax.

Desde el punto de vista del CRO, conocer y manejar correctamente las tecnologías Frontend es muy importante. Desde la correcta implementación de un test AB, integración de herramientas de analítica cualitativa, hasta la implementación de herramientas de analítica ad-hoc o de inteligencia artificial para nuestro sitio web.

Un poco de historia

Para entender mejor las necesidades de una tecnología como WebAssembly necesitamos ver un poco de historia.

Los 90

Nuestra historia empieza a principio de los 90, cuando la mayoría de los usuarios se conectaban a Internet con módems de 28.8kbps. En esta época, empezaban a desarrollarse las primeras aplicaciones web, y se empezaban a incluir formularios complejos.

Año 1995

Con una navegación tan lenta, y con aplicaciones web tan complejas, la usabilidad de las webs y su conversión iba cayendo en picado. Hasta que en 1995, un ingeniero de Netscape pensó que un lenguaje de programación que se ejecutara en el navegador podría mejorar la interacción con estas aplicaciones pesadas.

Y así fue como nació JavaScript, mejorando la experiencia del usuario y la conversión, pudiendo ejecutar código en el navegador, sin tener que crear una comunicación para cualquier cosa.

A partir de este momento, a mediados de los 2000 fueron apareciendo librerías como dojo, prototype, jQuery, que simplificaron la sintaxis de JavaScript, permitiendo que un programador sin mucha experiencia pudiera utilizar esta tecnología.

Los 2000

Durante los 2000, se fueron desarrollando aplicaciones cada vez mas complejas sobre JavaScript, y empezaron a verse las deficiencias y desventajas del siempre demasiado estático HTML. Hasta que en 2009, apareció AngularJS (no confundir con Angular), que estableció un marco y reunió ideas y mejores prácticas de otras bibliotecas, poco más tarde fue adquirido por Google. A partir de ahí empezaron a nacer otros frameworks JavaScript como Vue, React, Angular, hasta el día de hoy.

Javascript para Todo

Hoy en día, utilizamos el navegador para cosas que antes hacíamos con aplicaciones de escritorio. Vemos series, vemos películas, hacemos videollamadas, jugamos a videojuegos, utilizamos redes sociales con un sin fin de posibilidades y conexiones… Y además, al contrario de lo que pasaba en los 90, la velocidad de la conexión no es un problema.

Os ha pasado estar navegando y que de repente el ventilador de vuestro ordenador se ponga a funcionar a máximo rendimiento? O que la batería de vuestro móvil empiece a caer de forma considerable? Esto es, porque todas estas cosas que hacemos en los navegadores, no son gratis, y consumen muchos recursos, recursos de frontend, de vuestro ordenador o dispositivo móvil.

He aquí cuando surge la necesidad de un lenguaje de programación que utilice los recursos de tu ordenador de una forma más óptima.

WebAssembly al rescate

Cuando pensamos en rendimiento a nivel de código, nos hacemos la siguiente pregunta ¿Qué código ofrece un mejor procesamiento? La clara respuesta es, los códigos binarios. Aquellos códigos que son compilados con lenguajes como C, C++, Rust, y que generan un código binario optimizado para un procesador.

Aquí es cuando entra WebAssembly en juego: WebAssembly es un estándar abierto que nos permite la ejecución de código binario en la Web, y por lo tanto nos ofrece un nivel de performance sin parangón en el estándar actual, muy cercano al que sería la ejecución “nativa” de ese código, pero en un navegador.

En el gráfico anterior se presenta una comparativa entre Wasm (en azul) y JavaScript (en rojo), como se puede comprobar Wasm es mucho más rápido, ya que se ejecuta en formato binario, mientras que JavaScript al ejecutarse como código legible, su rendimiento es peor.

¿Cómo se ejecuta Wasm?

En primer lugar necesitamos una Herramienta para compilar nuestro código fuente (C,C++,…) a WebAssembly (hello-flat.c -> fello-flat.wasm)

Necesitaremos un código Javascript que cargará nuestro wasm y comunica el ejecutable con la API del navegador

Y finalmente tendremos el código HTML que incluye el código JavaScript y nuestro navegador consume.

Por ejemplo, escribimos el siguiente código, en este caso en C.

A continuación lo compilaríamos mediante el compilador Emscripten (Más info: https://github.com/emscripten-core/emsdk$ emcc hello-flat.c

Cargaríamos nuestro .wasm mediante código Javascript, en este caso nuestro f101 WASM runner.

Y este sería el resultado final:

A continuación, os dejamos las diapositivas utilizadas en la charla:



Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Últimos artículos publicados
Blog
2 min
Por Flat 101
23 octubre, 2024
Blog
4 min
Por Arantxa Hernández
3 septiembre, 2024
Analítica Web
6 min
Por Xavier Daviu
24 julio, 2024
Blog
6 min
Por Mariana Camors
1 julio, 2024

Si necesitas especialistas para desarrollar o mejorar tu negocio digital, podemos ayudarte

  • Los datos que nos faciliten el usuario a través este formulario se incorporarán a tratamientos cuyo responsable es FLAT 101 S.L. con CIF B99393613 y domicilio social en Avda. Maria Zambrano, nº 31, Edif. WTCZ, Torre Oeste, 12D, 50018 de Zaragoza. Puede contactar llamando al 976419856 o a través del correo electrónico info@flat101.es. La finalidad de recogida de datos en este formulario es poder contestar las consultas planteadas y enviar al usuario la información solicitada a través del correo electrónico o teléfono indicados en el formulario. Solo se realizan cesiones si existe una obligación legal. Reservados sus derechos a acceder, rectificar y suprimir, así como otros derechos, como se indica en la Política de Privacidad.