WebAssembly, qué es y para quién está siendo útil

Publicado el

webassembly

Ya en 2015 os hablamos de WebAssembly, una maravilla que nos permite ejecutar código de programación directamente en nuestro navegador, sin necesidad de instalaciones adicionales o servidores externos, una característica que simplifica enormemente la vida de estudiantes, científicos y desarrolladores.
En este artículo os hablaré sobre esta tecnología y sobre cómo está siendo útil para mucha gente.

Imagina que eres un estudiante o un investigador tratando de acceder a una herramienta científica o educativa crucial para tu trabajo o estudio. Tradicionalmente, te enfrentarías al obstáculo de tener que instalar software específico en tu computadora, lo cual no siempre es posible debido a restricciones de acceso, falta de conocimiento técnico o limitaciones del dispositivo. Este era un problema común hasta que WebAssembly empezó a cambiar las reglas del juego. Lo leí hace tres días en nature.com, y realmente me impresionó.

La solución de WebAssembly

WebAssembly es como un puente que conecta el mundo de la programación científica con la accesibilidad del navegador web. Permite que el código escrito en varios lenguajes de programación, como C, C++ y Rust, se ejecute dentro de un navegador. Esto significa que puedes acceder a herramientas y aplicaciones complejas directamente desde tu navegador, sin preocuparte por las restricciones del dispositivo o del sistema operativo.

Una de las historias más inspiradoras en este contexto es la de George Stagg, quien, según el artículo que os he comentado antes, enfrentó el desafío de administrar exámenes de programación a una diversa población estudiantil. La solución que encontró a través de WebAssembly  resolvió un problema práctico en poco tiempo.

¿Para quién es útil WebAssembly?

WebAssembly tiene un tutorial excelente en Youtube, y es particularmente útil para estudiantes, educadores, científicos e ingenieros que necesitan acceder a herramientas de programación y análisis de datos sin las complicaciones de la instalación de software. Desde facilitar exámenes en línea hasta permitir investigaciones complejas en dispositivos limitados, las aplicaciones son vastas.

La solución puede nivelar el campo de juego para todos, independientemente del dispositivo o sistema operativo. Esto es especialmente crucial en entornos académicos y científicos, donde la uniformidad y la accesibilidad de las herramientas pueden significar la diferencia entre el éxito y el fracaso de un proyecto o examen.

Por ejemplo, la transición de herramientas complejas de bioinformática y análisis de datos a plataformas basadas en navegador a través de WebAssembly ha permitido que investigaciones que antes requerían equipos especializados ahora puedan realizarse en cualquier dispositivo, desde un teléfono inteligente hasta una computadora portátil de baja potencia.

En situaciones donde la rapidez y la eficiencia son cruciales, como durante la pandemia de COVID-19, WebAssembly demostró ser un recurso invaluable. Permitió la continuidad de la educación y la investigación sin interrupciones significativas, demostrando que la tecnología puede ser una solución robusta en tiempos de crisis.

Pero no todo son rosas con WebAssembly

WebAssembly es una solución técnica impresionante, sin duda, pero hay varios inconvenientes difíciles de solucionar:

  • Complejidad en la portabilidad: Convertir aplicaciones existentes a WebAssembly puede ser un proceso complicado, lleno de ensayo y error. Esto se debe a las diferencias en las capacidades y restricciones del entorno de ejecución de WebAssembly en comparación con los sistemas operativos tradicionales.
  • Limitaciones de memoria y rendimiento: WebAssembly está actualmente limitado a direcciones de memoria de 32 bits, lo que restringe el acceso a un máximo de 4 GB de memoria. Aunque suficiente para muchas aplicaciones, esta limitación puede ser un obstáculo para programas que requieren grandes volúmenes de memoria.
  • Acceso restringido al sistema de archivos: Por razones de seguridad, WebAssembly no puede acceder directamente al sistema de archivos del dispositivo del usuario ni a las conexiones de red abiertas. Esto puede limitar su utilidad en aplicaciones que necesitan interactuar intensamente con el sistema o la red.
  • Ausencia de multihilo: WebAssembly no soporta la ejecución multihilo de forma nativa, lo que puede limitar el rendimiento de aplicaciones que se benefician significativamente de la paralelización.
  • Dependencia de librerías externas: Muchas aplicaciones científicas dependen de una cadena de librerías y herramientas externas, todas las cuales deben ser compatibles con WebAssembly para que la aplicación funcione correctamente. Esto puede complicar el proceso de portabilidad y limitar la viabilidad de algunas aplicaciones.
  • Dependencia del navegador: Aunque la compatibilidad entre navegadores es una de las fortalezas de WebAssembly, las diferencias en la implementación y el rendimiento entre navegadores pueden afectar la experiencia del usuario y la consistencia de la aplicación.

Aún así, vale la pena abrir las puertas a WebAssembly, puede romper muchas barreras.