¿Qué es WASM (Asamblea Web)?

AvanzadoDec 25, 2023
WebAssembly es un marco de desarrollo web de código abierto. Descubre más sobre qué es, su historia, cómo funciona y sus beneficios.
¿Qué es WASM (Asamblea Web)?

La industria Blockchain siempre está buscando crecimiento y mejora. La industria experimentó un auge y evolucionó recientemente después de la creación de Ethereum, que funcionaba con la máquina virtual Ethereum (EVM). Aunque EVM es efectivo hasta cierto punto, ha llegado un nuevo actor en forma de WebAssembly (WASM). En este artículo veremos qué es WebAssembly, cómo funciona y sus vínculos con la industria de las criptomonedas.

¿Qué es el ensamblaje web (WASM)?

Web Assembly, conocido popularmente como WASM, es un marco de código abierto que permite a los programadores utilizar su código fuente o modificarlo como desee el desarrollador. WASM va un paso más allá con un formato de instrucción binaria para una máquina virtual (VM) basada en pila. Se utiliza como objetivo de compilación portátil para lenguajes de programación de alto nivel. Es una opción binaria pequeña y rápida que promete un rendimiento casi nativo para aplicaciones web.

WebAssembly fue diseñado para servir como destino de compilación para cualquier lenguaje, incluido JavaScript. Esto significa que los desarrolladores pueden compilar varios lenguajes de programación como C/C++, Go, Rust y muchos más en un único estándar que se puede ejecutar de forma casi nativa en los navegadores como una alternativa cercana a JavaScript.

Los desarrolladores pueden utilizar Web Assembly para casos de uso de alto rendimiento, como juegos, transmisión de música, edición de vídeo y aplicaciones de diseño asistido por computadora (CAD). Varios servicios web ya han adoptado WASM, por ejemplo, Google Earth y Figma.

Historia de WebAssembly

WebAssembly fue desarrollado para resolver la necesidad de mejorar el rendimiento web y el deseo de introducir una gama más amplia de lenguajes en la plataforma web. En 2015, el WebAssembly Community Group, formado por Mozilla, Google, Microsoft y Apple, creó un nuevo formato binario. En 2017, se lanzó WebAssembly MVP (producto mínimo viable) para proporcionar una base estable para el formato binario, el modelo de ejecución y la integración en la plataforma web.

La siguiente versión fue la compatibilidad con navegadores, y los principales navegadores como Chrome, Firefox, Safari y Edge incorporaron WebAssembly. Los desarrolladores descubrieron la utilidad de la tecnología fuera de los navegadores web y comenzaron a explorar el uso de WASM en el área de entornos del lado del servidor para informática de alto rendimiento.

¿Cómo funciona el ensamblaje web?

Para comprender cómo funciona WebAssembly, es necesario comprender cómo funciona el motor JavaScript. Para compilar código JS, el motor hace algunas cosas, como pasar el código a través del analizador, que es una herramienta que revisa el código línea por línea, verificando la sintaxis válida y los tipos de código. Una vez que se completa, el analizador crea una estructura de datos de árbol llamada árbol de sintaxis abstracta (AST).

Una vez creado el AST, el intérprete del motor toma el AST y lo convierte en Bytecode, que es una representación intermedia del código. Luego, el compilador del motor toma el código de bytes y lo convierte en código que las máquinas pueden ejecutar en su procesador.

WebAssembly funciona de manera diferente a JavaScript y se dice que es más rápido porque el código WASM va directamente al compilador, omitiendo efectivamente los pasos uno y dos en el proceso de JavaScript. La razón de esto es que, a diferencia de JavaScript, que es un lenguaje de tipo dinámico, WASM es de tipo estático, lo que significa que mientras se escribe el lenguaje, los tipos se declaran de antemano; por lo tanto, se conocen y se verifican en el momento de la compilación.

Entonces, al escribir un código WASM, se escribe el código con sus tipos, generalmente en un lenguaje escrito estáticamente. Luego genera un módulo WASM precompilado y, finalmente, ejecuta el código directamente mediante el compilador del motor, omitiendo la etapa de análisis y transformación a la etapa de Representación Intermedia.

Características de WebAssembly

WebAssembly fue desarrollado para compilar varios lenguajes y se dice que es más rápido que JavaScript. Para poder lograr esta hazaña, se ha equipado con ciertas características que no solo garantizan la seguridad del marco sino que también demuestran que es digno de confianza.

Estándar W3C

Habiendo establecido confianza en su eficacia y credibilidad, WebAssembly se ha agregado a los idiomas oficiales de la web. Actualmente existen cuatro idiomas, HTML. CSS, JavaScript y ahora WebAssembly. Por lo tanto, WebAssembly ahora se considera el estándar WC3.

Velocidad y eficiencia

La máquina de pila de WebAssembly se creó para funcionar en formato de código binario, lo que afecta en gran medida el tiempo y el tamaño de carga. Su velocidad y eficiencia lo han convertido en un elemento básico en el desarrollo de blockchain, y muchos desarrolladores ahora utilizan el lenguaje para ecosistemas sólidos.

Seguridad

La máquina virtual escanea el código WebAssembly, lo valida y lo ejecuta dentro de una zona de pruebas con memoria segura. El entorno integrado restringe el acceso a los recursos locales, incluido el sistema de archivos o los puertos de red. Esto significa que el código WebAssembly obtenido de la web y que se ejecuta en el navegador es muy limitado cuando se trata de recursos de hardware y software.

Fuente abierta

El W3C tiene varias empresas de navegadores trabajando en el proyecto. Esto permite a la comunidad contribuir, permitiendo la creación de aplicaciones sin funciones, compatibles con versiones anteriores y aplicaciones con funciones probadas.

WebAssembly y Ethereum

Actualmente, WebAssembly se considera una alternativa cercana a la máquina virtual Ethereum (EVM). Esto se debe a que, a través de WebAssembly, los desarrolladores ahora están equipados con un conjunto de instrucciones eficiente en el que se pueden compilar diferentes lenguajes y, al mismo tiempo, se garantiza que funcione de manera efectiva en diferentes plataformas. El conjunto de instrucciones de WebAssembly también puede ser fácilmente determinista al borrar las instrucciones de punto flotante, lo que lo convertiría en un reemplazo viable para el EVM.

Ethereum ha mostrado interés en WebAssembly y está encabezando los esfuerzos para desarrollar Ethereum WebAssembly (EWASM), el rediseño propuesto de la máquina virtual Ethereum. Una vez exitoso, se espera que EWASM sea más eficiente y permita a los desarrolladores escribir códigos en varios idiomas debido a sus vínculos con WASM. EWASM funcionará como el EVM como un lenguaje de código de bytes precompilado que se interpretará en los nodos de Ethereum.

Con esto, las dApps serán más eficientes en producción. La integración de WASM hará que el desarrollo de contratos inteligentes sea más accesible para las personas que ya están acostumbradas a lenguajes populares como Rust and Go. Esto eventualmente erradica la necesidad de que los desarrolladores aprendan a escribir con solidez antes de crear aplicaciones útiles en Ethereum.

Proyectos Blockchain que hacen uso de WebAssembly

Aunque WASM no está completamente desarrollado para actividades blockchain, algunos proyectos ya lo están utilizando para mejorar la funcionalidad de sus plataformas. Por ejemplo:

Cosmos

Cosmos es una blockchain desarrollada para facilitar la comunicación entre libros de contabilidad distribuidos sin tener que esperar en un servidor central. Conocida popularmente como Internet de Blockchains, fue una de las primeras blockchains en utilizar WASM como su principal pila de construcción. Implementan CosmWASM, un marco para crear contratos inteligentes en WASM para Cosmos SDK, Tendermint BFT y el protocolo IBC para su desarrollo nativo de blockchain.

Lunares

El uso de WASM por parte de Polkadot se basa en ser un metaprotocolo que permite otros lenguajes que han sido interpretados o compilados en WebAssembly. La utilización de WASM permitió que la infraestructura y los sustratos sin bifurcaciones permitieran a otras aplicaciones realizar ajustes en las cadenas conectadas con poca o ninguna coordinación.

Cerca del protocolo

Near Protocol es una cadena de bloques pública creada para crear aplicaciones descentralizadas utilizando WebAssembly. Near utiliza WebAssembly como una buena forma de aprovechar la tecnología web para mejorar el rendimiento y la portabilidad. Implementaron AssemblyScript para su lenguaje porque descubrieron que es una opción más portátil y también brinda fácil acceso a los desarrolladores web.

Ensamblaje web frente a JavaScript

JavaScript es un lenguaje de programación interpretado de alto nivel que ha respaldado el desarrollo web durante décadas. Fue desarrollado para agregar interactividad a las páginas web y los navegadores web lo muestran en el lado del cliente. A lo largo de los años, la popularidad del idioma ha crecido debido a su facilidad de uso y su adopción generalizada.

Desde los inicios de la World Wide Web, siempre ha existido JavaScript. Recientemente, ha surgido WASM (WebAssembly) y, aunque muchos creen que los dos están estrechamente relacionados, WASM consta de varias cosas más, incluido JavaScript. WASM se desarrolló originalmente para ayudar a que JavaScript se ejecutara de manera más efectiva en los navegadores web.

Aunque todavía tiene el mismo propósito, WASM ahora se extiende más allá del navegador web y se ha aventurado en aplicaciones de borde y de servidor, dos áreas que se sabe que falta en JavaScript. Esto es posible porque, a nivel de CPU, WASM se ejecuta en formato binario y tampoco es un lenguaje de programación como JavaScript. WASM proporciona funcionalidad adicional que se adapta a varios lenguajes diferentes como JavaScript, Python, Rust y muchos más. La ventaja de WASM sobre JavaScript sigue siendo su capacidad para integrarse con el lenguaje sin limitarse a JavaScript. La integración le da a JavaScript un gran impulso en el rendimiento al compilar el lenguaje ya interpretado y su tiempo de ejecución en módulos WASM.

WebAssembly contra óxido

WebAssembly y Rust son dos tecnologías muy distintas, pero al mismo tiempo suelen estar asociadas entre sí. Rust es un lenguaje de programación popular conocido por su velocidad, seguridad y alto rendimiento. WebAssembly, por otro lado, es un compilador que convierte códigos en máquinas ejecutables. Aparte de sus definiciones, las dos tecnologías se diferencian en los siguientes aspectos.

Desarrollo web

WASM se utiliza principalmente en el desarrollo web y permite la ejecución de código en navegadores web, incluido JavaScript. Al mismo tiempo, Rust es un lenguaje multiuso que tiene varias aplicaciones, incluida la programación de sistemas, el desarrollo de juegos y muchas más.

Funciones de sintaxis y lenguaje

WASM no es un lenguaje de programación, sino un formato de instrucción binaria y puede ser utilizado por lenguajes como C, C++ y Rust. Rust, por otro lado, es un lenguaje con su sintaxis y características como préstamo, propiedad y muchas más.

Gestión de la memoria

WASM utiliza un modelo de memoria lineal que proporciona un espacio de direcciones lineal al que el programa puede acceder fácilmente. El desarrollador maneja manualmente la administración de la memoria y se mantiene explícita. Rust, por otro lado, pone énfasis en la seguridad de la memoria. Hace uso de un verificador de préstamos y un sistema de propiedad que impone una regla estricta en el momento de la compilación que elimina varios errores que se sabe que afectan la seguridad de la memoria.

concurrencia

Rust está equipado con su propio soporte para programación concurrente a través de su sistema de propiedad, lo que permite a los desarrolladores escribir código seguro y concurrente sin el riesgo de carreras de datos. A diferencia de Rust, WASM no tiene tales características; sin embargo, puede aprovechar las características de simultaneidad del entorno del host.

Los mejores recursos para comenzar con WebAssembly

Al aprender a utilizar WASM, ciertos cursos brindan el mejor conocimiento para principiantes que buscan crear proyectos WASM con una variedad de lenguajes. Algunos de estos cursos incluyen:

Udemy

Este curso proporciona una guía completa para aprender la API de JavaScript de WebAssembly y el conjunto de herramientas Emscripten. Una vez comprado, el curso brinda a los usuarios acceso a más de 2 horas de videoconferencias a pedido y 17 recursos educativos descargables.

El curso brinda a los principiantes una idea de qué es WebAssembly y cómo afecta el desarrollo web. También aprenderá a cargar y ejecutar módulos WebAssembly utilizando las API nativas del navegador Java Script.

Pluralvista

Este curso cubre los conceptos básicos de WebAssembly y por qué es importante. El curso le mostrará cómo crear aplicaciones usando WebAssembly y cómo crear aplicaciones web usando otros lenguajes como C/C++.

Campamento de código libre

Este curso gratuito sobre WebAssembly ofrece a los principiantes un desglose de qué se trata WASM. Le enseña cómo escribir, compilar, incluir y crear instancias del código. Proporciona una guía paso a paso sobre cómo compilar código C++ en WASM.

Conclusión

WebAssembly se encuentra actualmente a la vanguardia del desarrollo web y su velocidad, seguridad y adaptabilidad son características importantes que los desarrolladores creen que marcarán el comienzo de un nuevo mundo para las aplicaciones descentralizadas. A medida que más productos buscan utilizar WASM, las puertas de un futuro en el que los contratos inteligentes se desarrollen y aseguren fácilmente con los lenguajes que el desarrollador conoce están al alcance de la mano.

Autor: Tamilore
Übersetzer: Cedar
Rezensent(en): Matheus、Wayne、Ashley He
* Die Informationen sind nicht als Finanzberatung gedacht und stellen auch keine Empfehlung irgendeiner Art dar, die von Gate.io angeboten oder unterstützt wird.
* Dieser Artikel darf ohne Bezugnahme auf Gate.io nicht reproduziert, übertragen oder kopiert werden. Zuwiderhandlung ist eine Verletzung des Urheberrechtsgesetzes und kann gerichtlich verfolgt werden.
Jetzt anfangen
Registrieren Sie sich und erhalten Sie einen
100
-Euro-Gutschein!
Benutzerkonto erstellen