O que é o WASM (Web Assembly)?

AvançadoDec 25, 2023
WebAssembly é uma estrutura de desenvolvimento web de código aberto. Saiba mais sobre o que é, a sua história, como funciona e os seus benefícios.
O que é o WASM (Web Assembly)?

A indústria Blockchain é aquela que está sempre à procura de crescimento e melhoria. A indústria teve um boom e evoluiu recentemente após o início do Ethereum, que era alimentado pela Ethereum Virtual Machine (EVM). Embora o EVM seja eficaz até certo ponto, um novo jogador chegou à cidade na forma de WebAssembly (WASM). Neste artigo vamos ver o que é o WebAssembly, como funciona e os seus laços com a indústria das Criptomoedas.

O que é o Web Assembly (WASM)?

O Web Assembly, popularmente referido como WASM, é uma estrutura de código aberto que permite aos programadores usar o seu código-fonte ou modificá-lo como o programador desejar. O WASM vai um passo adiante com um formato de instrução binária para uma máquina virtual (VM) baseada em pilha. É usado como um destino de compilação portátil para linguagens de programação de alto nível. É uma opção binária pequena e rápida que promete um desempenho quase nativo para aplicações web.

O WebAssembly foi concebido para servir como um destino de compilação para qualquer linguagem, incluindo JavaScript. Isto significa que os programadores podem compilar várias linguagens de programação como C/C++, Go, Rust e muito mais num único padrão que pode ser executado quase nativamente em navegadores como uma alternativa próxima ao JavaScript.

Os desenvolvedores podem usar o Web Assembly para casos de uso de alto desempenho, como jogos, streaming de música, edição de vídeo e aplicações de design auxiliado por computador (CAD). Vários serviços web já adotaram o WASM, por exemplo, o Google Earth e o Figma.

História da WebAssembly

O WebAssembly foi desenvolvido para resolver a necessidade de um melhor desempenho web e o desejo de introduzir uma gama mais ampla de linguagens na plataforma web. Em 2015, o WebAssembly Community Group, composto pela Mozilla, Google, Microsoft e Apple, criou um novo formato binário. Em 2017, o WebAssembly MVP (Minimum Viable Product) foi lançado para fornecer uma base estável para o formato binário, modelo de execução e integração na plataforma web.

O próximo lançamento foi o suporte ao navegador, com os principais navegadores como o Chrome, Firefox, Safari e Edge incorporando WebAssembly. Os programadores descobriram a utilidade da tecnologia fora dos navegadores web e começaram a explorar o uso do WASM na área de ambientes do lado do servidor para computação de alto desempenho.

Como funciona o Web Assembly?

Para ter uma noção de como funciona o WebAssembly, precisa de perceber como funciona o motor JavaScript. Para compilar o código JS, o motor faz algumas coisas, como passar o código através do Parser, que é uma ferramenta que passa pelo código linha por linha, verificando a sintaxe válida bem como os tipos de código. Uma vez concluído, o analisador cria uma estrutura de dados em árvore chamada Árvore de Sintaxe Abstrata (AST).

Uma vez criado o AST, o interpretador do motor pega o AST e converte-o em Bytecode, que é uma representação intermédia do código. O compilador do motor pega o Bytecode e transforma-o em código que as máquinas podem executar no seu processador.

O WebAssembly funciona de forma diferente do JavaScript e diz-se que é mais rápido porque o código WASM vai diretamente para o compilador, pulando efetivamente as etapas um e dois no processo JavaScript. A razão para isso é que, ao contrário do JavaScript, que é uma linguagem digitada dinamicamente, o WASM é tipado estaticamente, o que significa que enquanto a linguagem está a ser digitada, os tipos são declarados antecipadamente; portanto, são conhecidos e verificados em tempo de compilação.

Então, ao escrever um código WASM, escreve o código com os seus tipos, normalmente numa linguagem estaticamente digitada. Em seguida, gera um módulo WASM pré-compilado e, finalmente, executa o código diretamente pelo compilador do motor, pulando o estágio de análise e transformação para o estágio de Representação Intermediária.

Características do WebAssembly

O WebAssembly foi desenvolvido para compilar várias linguagens e diz-se que é mais rápido que o JavaScript. Para poder realizar este feito, foi equipado com certas funcionalidades que não só garantem a segurança e proteção do quadro mas também provam que é de confiança.

Padrão W3C

Tendo estabelecido a confiança na sua eficácia e credibilidade, o WebAssembly foi adicionado às línguas oficiais da web. Existem atualmente quatro idiomas, HTML. CSS, JavaScript e agora WebAssembly. Então, o WebAssembly é agora considerado o padrão WC3.

Velocidade e Eficiência

A máquina de pilha do WebAssembly foi construída para funcionar em formato de código binário, afetando muito o tempo de carregamento e o tamanho. A sua velocidade e eficiência tornaram-no um marco no desenvolvimento de blockchain, e muitos desenvolvedores agora fazem uso da linguagem para ecossistemas robustos.

Segurança

A máquina virtual verifica o código WebAssembly, valida e executa-o dentro de uma sandbox segura para memória. O ambiente incorporado restringe o acesso a recursos locais, incluindo o sistema de ficheiros ou portas de rede. Isto significa que o código WebAssembly obtido da Web e é executado no navegador é altamente limitado quando se lida com recursos de hardware e software.

Open Source

O W3C tem várias empresas de navegadores a trabalhar no projeto. Isto permite que a comunidade contribua, permitindo a criação de aplicações compatíveis com versões anteriores, sem funcionalidades e aplicações testadas por funcionalidades.

WebAssembly e Ethereum

O WebAssembly é atualmente visto como uma alternativa próxima à Ethereum Virtual Machine (EVM). Isto porque, através do WebAssembly, os programadores estão agora equipados com um conjunto de instruções eficiente no qual diferentes linguagens podem ser compiladas, garantindo um desempenho eficaz em diferentes plataformas. O conjunto de instruções WebAssembly também pode ser facilmente determinístico apagando as instruções de ponto flutuante, o que o tornaria um substituto viável para o EVM.

A Ethereum demonstrou interesse no WebAssembly e está a liderar os esforços para desenvolver o Ethereum WebAssembly (EWASM), o redesenho proposto da Máquina Virtual Ethereum. Uma vez bem-sucedido, espera-se que o EWASM seja mais eficiente e permita que os programadores escrevam códigos em várias línguas devido aos seus laços com o WASM. O EWASM funcionará como o EVM como uma linguagem de bytecode pré-compilada que será interpretada nos nós Ethereum.

Com isto, os DApps tornar-se-ão mais eficientes na produção. A integração do WASM tornará o desenvolvimento de contratos inteligentes mais acessível para pessoas que já estão habituadas a linguagens populares como Rust e Go. Isto acaba por erradicar a necessidade de os programadores aprenderem a escrever solidez antes de criar aplicações úteis no Ethereum.

Projetos Blockchain que fazem uso do WebAssembly

Mesmo que o WASM não esteja totalmente desenvolvido para atividades de blockchain, alguns projetos já estão a utilizá-lo para melhorar a funcionalidade das suas plataformas. Por exemplo:

Cosmos

Cosmos é uma cadeia de blocos desenvolvida para facilitar a comunicação entre livros distribuídos sem ter de esperar num servidor central. Popularmente chamados de Internet das Blockchains, foram um dos primeiros blockchains a utilizar o WASM como a sua pilha de construção principal. Implementam o CosmWASM, uma estrutura para a construção de contratos inteligentes no WASM para o Cosmos SDK, Tendermint BFT e protocolo IBC para o seu desenvolvimento de blockchain nativo.

Polkadot

O uso do WASM pelo Polkadot depende de ser um meta-protocolo, permitindo outras linguagens que foram interpretadas ou compiladas no WebAssembly. A utilização do WASM permitiu infra-estruturas e substratos sem garfo para permitir que outras aplicações fizessem ajustes nas cadeias conectadas com pouca ou nenhuma coordenação.

Perto do Protocolo

Near protocol é uma cadeia de blocos pública criada para construir aplicações descentralizadas usando WebAssembly. O Near utiliza o WebAssembly como uma boa maneira de alavancar a tecnologia da Web para melhorar o desempenho e a portabilidade. Implementaram o AssemblyScript para a sua linguagem porque descobriram que é uma opção mais portátil e também fornece acesso fácil a programadores web.

Web Assembly vs JavaScript

JavaScript é uma linguagem de programação interpretada de alto nível que apoia o desenvolvimento web há décadas. Foi desenvolvido para adicionar interatividade às páginas web e é exibido no lado do cliente por navegadores da web. Ao longo dos anos, a popularidade da língua cresceu devido à facilidade de uso e à adoção generalizada.

Desde o início da World Wide Web, sempre houve JavaScript. Recentemente, surgiu o WASM (WebAssembly) e embora muitos acreditem que os dois estão intimamente ligados, o WASM consiste em várias outras coisas, incluindo JavaScript. O WASM foi originalmente desenvolvido para ajudar o JavaScript a funcionar de forma mais eficaz em navegadores web.

Embora ainda sirva o mesmo propósito, o WASM estende-se agora para além do navegador web e aventurou-se em aplicações de borda e servidor, sabe-se que faltam duas áreas de JavaScript. Isto é possível porque, a nível da CPU, o WASM é executado num formato binário e também não é uma linguagem de programação como o JavaScript. O WASM fornece uma funcionalidade extra que acomoda várias linguagens diferentes como JavaScript, Python, Rust e muito mais.A vantagem do WASM sobre o JavaScript continua a ser a sua capacidade de integração com a linguagem sem se limitar ao JavaScript. A integração dá ao JavaScript um grande impulso no desempenho ao compilar a linguagem já interpretada e o seu tempo de execução em módulos WASM.

WebAssembly Vs Ferrugem

WebAssembly e Rust são duas tecnologias muito distintas, mas ao mesmo tempo estão frequentemente associadas umas às outras. Rust é uma linguagem de programação popular conhecida pela sua velocidade, segurança e alto desempenho. O WebAssembly, por outro lado, é um compilador que converte códigos em máquinas executáveis. Para além das suas definições, as duas tecnologias são diferentes das seguintes maneiras.

Desenvolvimento Web

O WASM é utilizado principalmente no desenvolvimento web, permitindo a execução de código em navegadores web, incluindo JavaScript. Ao mesmo tempo, o Rust é uma linguagem multiuso que tem várias aplicações, incluindo programação de sistemas, desenvolvimento de jogos e muito mais.

Características de sintaxe e linguagem

O WASM não é uma linguagem de programação mas é um formato de instrução binário e pode ser direcionado por linguagens como C, C++ e Rust. O Rust, por outro lado, é uma linguagem com a sua sintaxe e características como empréstimos, propriedade e muito mais.

Gestão de memória

O WASM utiliza um modelo de memória linear que fornece um espaço de endereço linear que é facilmente acedido pelo programa. A gestão da memória é tratada manualmente pelo programador e é mantida explícita. A ferrugem, por outro lado, coloca a tónica na segurança da memória. Faz uso de um verificador de empréstimos e um sistema de propriedade que impõe uma regra rígida no momento da compilação que elimina vários bugs conhecidos por afetar a segurança da memória.

Concorrência

O Rust está equipado com o seu próprio suporte para programação de concorrência através do seu sistema de propriedade, que permite aos programadores escrever código seguro e de concorrência sem o risco de corridas de dados. Ao contrário do Rust, o WASM não possui tais características; no entanto, pode alavancar as funcionalidades de concorrência do ambiente anfitrião.

Os melhores recursos para começar a usar o WebAssembly

Ao aprender a usar o WASM, certos cursos fornecem o melhor conhecimento para iniciantes que procuram criar projetos WASM com uma variedade de idiomas. Alguns destes cursos incluem:

Udemy

Este curso fornece um guia completo para aprender a API JavaScript WebAssembly e o conjunto de ferramentas Emscripten. Uma vez adquirido, o curso dá aos utilizadores acesso a mais de 2 horas de videoaulas sob pedido e 17 recursos educativos para download.

O curso dá aos iniciantes uma noção do que é o WebAssembly e como isso afeta o desenvolvimento web. Também aprenderia a carregar e executar módulos WebAssembly usando APIs nativas do navegador Java Script.

Visão plural

Este curso cobre os fundamentos do WebAssembly e porque é importante. O curso irá mostrar-lhe como construir aplicações usando WebAssembly e como criar aplicações web usando outras linguagens como C/C++.

Acampamento Freecode

Este curso gratuito sobre WebAssembly dá aos iniciantes uma análise do que é o WASM. Ensina-o a escrever, compilar, incluir e instanciar o código. Fornece um guia passo a passo sobre como compilar código C++ no WASM.

Conclusão

O WebAssembly está atualmente na vanguarda do desenvolvimento web e a sua velocidade, segurança e adaptabilidade são as principais funcionalidades que os programadores acreditam que irão inaugurar um novo mundo para as Aplicações Descentralizadas. À medida que mais produtos procuram fazer uso do WASM, as portas de um futuro onde os contratos inteligentes são facilmente desenvolvidos e protegidos com as linguagens que o programador conhece estão ao seu alcance.

著者: Tamilore
翻訳者: Cedar
レビュアー: Matheus、Wayne、Ashley He
* 本情報はGate.ioが提供または保証する金融アドバイス、その他のいかなる種類の推奨を意図したものではなく、構成するものではありません。
* 本記事はGate.ioを参照することなく複製/送信/複写することを禁じます。違反した場合は著作権法の侵害となり法的措置の対象となります。
今すぐ始める
登録して、
$100
のボーナスを獲得しよう!
アカウント作成