Что такое WASM (Web Assembly)?

ПродвинутыйDec 25, 2023
WebAssembly - это фреймворк для веб-разработки с открытым исходным кодом. Узнайте больше о том, что это такое, о его истории, о том, как он работает, и о его преимуществах.
Что такое WASM (Web Assembly)?

Индустрия Blockchain - это индустрия, которая всегда стремится к росту и совершенствованию. Эта отрасль бурно развивалась и развивалась в последнее время после появления Ethereum, который работал на виртуальной машине Ethereum (EVM). Хотя EVM в определенной степени эффективен, в городе появился новый игрок в виде WebAssembly (WASM). В этой статье мы рассмотрим, что такое WebAssembly, как он работает и как он связан с криптовалютной индустрией.

Что такое Web Assembly (WASM)?

Web Assembly, популярно называемая WASM, - это фреймворк с открытым исходным кодом, который позволяет программистам использовать его исходный код или изменять его по своему усмотрению. WASM делает еще один шаг вперед, предлагая формат двоичных инструкций для виртуальной машины (ВМ) на основе стека. Он используется в качестве переносимой цели компиляции для языков программирования высокого уровня. Это небольшой, быстрый бинарный опцион, который обещает почти нативную производительность для веб-приложений.

WebAssembly был разработан для того, чтобы служить целью компиляции для любого языка, включая JavaScript. Это означает, что разработчики могут скомпилировать несколько языков программирования, таких как C/C++, Go, Rust и многие другие, в единый стандарт, который можно запускать в браузерах почти нативно, как близкую альтернативу JavaScript.

Разработчики могут использовать Web Assembly для таких высокопроизводительных задач, как игры, потоковая передача музыки, редактирование видео и приложения автоматизированного проектирования (CAD). Несколько веб-сервисов уже приняли WASM, например, Google Earth и Figma.

История WebAssembly

WebAssembly был разработан для того, чтобы решить проблему повышения производительности веб-сайтов и желания внедрить в веб-платформу более широкий спектр языков. В 2015 году группа WebAssembly Community Group, в которую входят Mozilla, Google, Microsoft и Apple, создала новый двоичный формат. В 2017 году был выпущен WebAssembly MVP (Minimum Viable Product), чтобы обеспечить стабильную основу для бинарного формата, модели выполнения и интеграции в веб-платформу.

Следующим релизом стала поддержка браузеров: основные браузеры, такие как Chrome, Firefox, Safari и Edge, включили WebAssembly. Разработчики обнаружили полезность этой технологии за пределами веб-браузеров и начали изучать возможности использования WASM в области серверных сред для высокопроизводительных вычислений.

Как работает Web Assembly?

Чтобы понять, как функционирует WebAssembly, Вам необходимо понять, как работает механизм JavaScript. Чтобы скомпилировать JS-код, движок делает несколько вещей, например, пропускает код через парсер - инструмент, который просматривает код строка за строкой, проверяя правильный синтаксис и типы кода. После этого парсер создает древовидную структуру данных, называемую Абстрактным синтаксическим деревом (Abstract Syntax Tree, AST).

После создания AST интерпретатор движка берет AST и преобразует его в байткод, который является промежуточным представлением кода. Затем компилятор движка берет байт-код и превращает его в код, который машины могут выполнять на своем процессоре.

WebAssembly функционирует иначе, чем JavaScript, и, как утверждается, быстрее, потому что код WASM поступает непосредственно в компилятор, фактически пропуская первый и второй шаги в процессе JavaScript. Причина этого в том, что, в отличие от JavaScript, который является динамически типизированным языком, WASM статически типизирован, то есть во время типизации языка типы объявляются заранее; следовательно, они известны и проверяются во время компиляции.

Поэтому при написании WASM-кода Вы пишете код с его типами, обычно на статически типизированном языке. Затем Вы генерируете предварительно скомпилированный модуль WASM, и, наконец, запускаете код прямо в компиляторе движка, пропуская этап разбора и преобразования до этапа промежуточного представления.

Особенности WebAssembly

WebAssembly был разработан для компиляции нескольких языков и, как утверждается, быстрее, чем JavaScript. Чтобы добиться этого, он был оснащен определенными функциями, которые не только гарантируют безопасность и надежность системы, но и доказывают, что ей можно доверять.

Стандарт W3C

Убедившись в его эффективности и надежности, WebAssembly был добавлен в число официальных языков веба. В настоящее время существует четыре языка, HTML. CSS, JavaScript, а теперь и WebAssembly. Итак, WebAssembly теперь считается стандартом WC3.

Скорость и эффективность

Стековая машина WebAssembly была создана для работы с двоичным форматом кода, что значительно влияет на время загрузки и размер. Благодаря своей скорости и эффективности он стал основным в разработке блокчейна, и многие разработчики теперь используют этот язык для создания надежных экосистем.

Безопасность

Виртуальная машина просматривает код WebAssembly, проверяет его и выполняет внутри безопасной для памяти "песочницы". Встроенная среда ограничивает доступ к локальным ресурсам, включая файловую систему или сетевые порты. Это означает, что код WebAssembly, полученный из Интернета и запущенный в браузере, сильно ограничен при работе с аппаратными и программными ресурсами.

Открытый исходный код

В W3C над проектом работают несколько фирм, занимающихся разработкой браузеров. Это позволяет сообществу вносить свой вклад, позволяя создавать обратно совместимые приложения без функций и проверенные приложения с функциями.

WebAssembly и Ethereum

В настоящее время WebAssembly рассматривается как близкая альтернатива виртуальной машине Ethereum (EVM). Это потому, что благодаря WebAssembly разработчики получили в свое распоряжение эффективный набор инструкций, в который можно компилировать различные языки, обеспечивая при этом эффективную работу на разных платформах. Набор инструкций WebAssembly также может быть легко детерминирован путем стирания инструкций с плавающей запятой, что сделает его жизнеспособной заменой EVM.

Компания Ethereum проявила интерес к WebAssembly и возглавляет усилия по разработке Ethereum WebAssembly (EWASM), предлагаемой новой версии виртуальной машины Ethereum. Ожидается, что после достижения успеха EWASM станет более эффективным и позволит разработчикам писать коды на нескольких языках благодаря своим связям с WASM. EWASM будет функционировать подобно EVM как предварительно скомпилированный язык байткода, который будет интерпретироваться на узлах Ethereum.

Благодаря этому dApp станут более эффективными в производстве. Интеграция WASM сделает разработку смарт-контрактов более доступной для людей, которые уже привыкли к таким популярным языкам, как Rust и Go. Это в конечном итоге избавит разработчиков от необходимости учиться писать на solidity, прежде чем создавать полезные приложения на Ethereum.

Проекты блокчейн, использующие WebAssembly

Несмотря на то, что WASM еще не полностью разработан для работы с блокчейном, некоторые проекты уже используют его для расширения функциональности своих платформ. Например:

Космос

Cosmos - это блокчейн, разработанный для облегчения коммуникации между распределенными бухгалтерскими книгами без необходимости ждать центрального сервера. Популярно называемый "Интернет блокчейн", он был одним из первых блокчейнов, который использовал WASM в качестве основного строительного стека. Они внедряют CosmWASM, фреймворк для создания смарт-контрактов на WASM для Cosmos SDK, Tendermint BFT и протокол IBC для своей собственной разработки блокчейна.

Polkadot

Использование WASM в Polkadot основано на том, что он является мета-протоколом, позволяющим использовать другие языки, которые были интерпретированы или скомпилированы на WebAssembly. Использование WASM позволило создать инфраструктуру и подложки без вилки, чтобы другие приложения могли вносить изменения в связанные цепочки практически без координации.

Около протокола

Протокол Near - это публичный блокчейн, созданный для построения децентрализованных приложений с помощью WebAssembly. Near использует WebAssembly как хороший способ использовать веб-технологии для повышения производительности и переносимости. Они использовали AssemblyScript в качестве языка, так как обнаружили, что он является более переносимым вариантом, а также обеспечивает легкий доступ для веб-разработчиков.

Веб-ассемблер против JavaScript

JavaScript - это интерпретируемый язык программирования высокого уровня, который поддерживает веб-разработку уже несколько десятилетий. Он был разработан для придания интерактивности веб-страницам и отображается веб-браузерами на стороне клиента. С годами популярность этого языка росла благодаря простоте его использования и широкому распространению.

С момента появления Всемирной паутины всегда существовал JavaScript. Недавно появился WASM (WebAssembly), и хотя многие считают, что эти два понятия тесно связаны, WASM состоит из нескольких других вещей, включая JavaScript. Изначально WASM был разработан для того, чтобы помочь JavaScript более эффективно работать в веб-браузерах.

Хотя WASM по-прежнему служит той же цели, теперь он выходит за пределы веб-браузера и переключился на пограничные и серверные приложения - две области, в которых JavaScript, как известно, не хватает. Это возможно потому, что на уровне процессора WASM работает в двоичном формате и не является языком программирования, как JavaScript. WASM предоставляет дополнительную функциональность, которая позволяет использовать множество различных языков, таких как JavaScript, Python, Rust и многие другие. Преимущество WASM перед JavaScript заключается в его способности интегрироваться с языком, не ограничиваясь при этом JavaScript. Интеграция дает JavaScript значительный прирост производительности за счет компиляции уже интерпретируемого языка и его среды выполнения в модули WASM.

WebAssembly против Rust

WebAssembly и Rust - это две совершенно разные технологии, но в то же время их часто ассоциируют друг с другом. Rust - это популярный язык программирования, известный своей скоростью, безопасностью и высокой производительностью. WebAssembly, с другой стороны, - это компилятор, который преобразует коды в исполняемые машины. Помимо определений, эти две технологии отличаются друг от друга следующим образом.

Веб-разработка

WASM в основном используется в веб-разработке, позволяя выполнять код в веб-браузерах, включая JavaScript. В то же время Rust - это универсальный язык, который имеет несколько применений, включая системное программирование, разработку игр и многое другое.

Синтаксис и особенности языка

WASM не является языком программирования, но представляет собой формат двоичных инструкций и может быть использован такими языками, как C, C++ и Rust. С другой стороны, Rust - это язык со своим синтаксисом и такими возможностями, как заимствование, владение и многое другое.

Управление памятью

WASM использует линейную модель памяти, которая обеспечивает линейное адресное пространство, легко доступное программе. Управление памятью осуществляется вручную разработчиком и является явным. Rust, с другой стороны, уделяет особое внимание безопасности памяти. В нем используется система проверки и владения заимствованиями, которая обеспечивает соблюдение строгих правил во время компиляции, что позволяет устранить несколько ошибок, которые, как известно, влияют на безопасность памяти.

Concurrency

Rust оснащен собственной поддержкой параллельного программирования через свою систему владения, которая позволяет разработчикам писать безопасный и параллельный код без риска возникновения гонок данных. В отличие от Rust, WASM не имеет таких возможностей; однако он может использовать функции параллелизма хост-окружения.

Лучшие ресурсы для начала работы с WebAssembly

При обучении работе с WASM некоторые курсы дают лучшие знания для новичков, которые хотят создавать проекты WASM с использованием различных языков. Некоторые из этих курсов включают:

Udemy

Этот курс представляет собой полное руководство по изучению WebAssembly JavaScript API и набора инструментов Emscripten. После приобретения курса пользователи получают доступ к более чем 2 часам видеолекций по требованию и 17 загружаемым образовательным ресурсам.

Курс дает новичкам представление о том, что такое WebAssembly и как он влияет на веб-разработку. Вы также узнаете, как загружать и запускать модули WebAssembly, используя родные API браузера Java Script.

Pluralsight

В этом курсе рассматриваются основы WebAssembly и причины его важности. Курс покажет Вам, как создавать приложения с помощью WebAssembly и как создавать веб-приложения с помощью других языков, таких как C/C++.

Лагерь Freecode

Этот бесплатный курс по WebAssembly дает новичкам представление о том, что такое WASM. Он научит Вас писать, компилировать, включать и инстанцировать код. В нем содержится пошаговое руководство по компиляции кода C++ в WASM.

Заключение

В настоящее время WebAssembly находится на переднем крае веб-разработки, а его скорость, безопасность и адаптивность являются основными характеристиками, которые, по мнению разработчиков, откроют новый мир для децентрализованных приложений. Поскольку все больше продуктов хотят использовать WASM, двери в будущее, где смарт-контракты легко разрабатываются и защищаются с помощью языков, которые знает разработчик, уже совсем близко.

Автор: Tamilore
Перекладач: Cedar
Рецензент(-и): Matheus、Wayne、Ashley He
* Ця інформація не є фінансовою порадою чи будь-якою іншою рекомендацією, запропонованою чи схваленою Gate.io.
* Цю статтю заборонено відтворювати, передавати чи копіювати без посилання на Gate.io. Порушення є порушенням Закону про авторське право і може бути предметом судового розгляду.
Розпочати зараз
Зареєструйтеся та отримайте ваучер на
$100
!
Створити обліковий запис