Los navegadores de Internet tienen mucha tecnología en ellos. Pueden ejecutar programas escritos en una variedad de lenguajes. Por ejemplo, la mayoría acepta Javascript directamente y esto quizás fue lo que hizo que este lenguaje fuese tan popular. Vamos, le decían el BASIC de Internet. Pero ahora salió WebAssembly, el cual podría sustituir lo que se hace en Javascript.

Pero ¿cómo definir WebAssembly? Se trata de una especie de lenguaje ensambaldor que puede ser codificado de forma binaria o bien como un documento que puede ser leído por seres humanos. Corre en 3el navegador en el mismo «arenero» (sandbox), que Javascript, pero no puede acceder DOM (Document Object Model – ‘Modelo de Objetos del Documento’ o ‘Modelo en Objetos para la Representación de Documentos’) es esencialmente una interfaz de plataforma que proporciona un conjunto estándar de objetos para representar documentos HTML, XHTML y XML) y por ende, tiene que confiar en Javascript para la interfaz con el usuario. Se espera que en el futuro pueda acceder a DOM. El código se corre usando un Compilador JIT (la compilación en tiempo de ejecución (también conocida por sus siglas inglesas, JIT, just-in-time), también conocida como traducción dinámica, es una técnica para mejorar el rendimiento de sistemas de programación que compilan a bytecode, consistente en traducir el bytecode a código máquina nativo en tiempo de ejecución), pero esto es otra manera de implementar una máquina virtual.

Pharo 7, un lenguaje de programación para el Internet de las Cosas

Uno podría pensar que esto es otra manera de implementar un lenguaje con tipos bytecode, como JVM o .NET, pero curiosamente, ahora la base es el propio navegador de Internet. ¿Por qué? Esta es la razón de WebAssembly System Interface (WASI). Puede pensarse en ella como un conjunto de funciones estándar que conectan WebAssembly con el sistema operativo y con los lenguajes que los programadores usan. Al final del día la idea es poder escribir código en el lenguaje que queramos, compilarlo a WebAssembly y listo, con la ayuda de WASI poderlo ejecutar en cualquier plataforma.

De nuevo estamos ante el sueño dorado de todo programador: «escríbase una vez, córrase en todas partes», pero esto fue también la promesa de Java y la realidad es que no funcionó tan bien como se esperaba. Como sea, esta nueva promesa, ahora de WASI, podría quizás revolucionar la manera en cómo se genera código para ser ejecutado en el navegador. El siguiente video es muy ilustrativo:

Cabe señalar que todo esto ya se había intentado antes. Exactamente cómo todas estas bibliotecas van a ser una realidad no está aún muy claro, pero es evidente que hay mucho trabajo por delante para implementar todas estas funciones que eventualmente podrían ser un nuevo paradigma en la programación web. Todo parece ser que se trata de un nuevo intento de «escríbase una vez, córrase en todas partes», pero ahora usando bytecode en bajo nivel y la máquina virtual.

En resumen, da la impresión que WebAssembly busca reinventar la rueda. La pregunta es si esta rueda será mejor de las que ya tenemos. Habrá que ver cómo se desarrolla toda esta historia.