Что такое веб-сборка?

Хотя я только начал изучать Javascript, я чувствую, что некоторые его части было исключительно сложно освоить, исходя из более объектно-ориентированного фона. Некоторые люди считают это необходимым злом. Тем не менее, это единственный реальный способ написания кода в браузере.

Or is it?

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

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

Это означает, что вы можете запускать в Интернете высокопроизводительные приложения, такие как игры, интенсивное редактирование фото/видео, виртуальную реальность, распознавание изображений и другие приложения с задержкой.

Но что такое WebAssembly и что делает его быстрым? Чтобы изучить этот вопрос, мы должны описать, как работает Javascript. Javascript — это интерпретируемый язык — по сути, другая программа, называемая интерпретатором, должна брать код Javascript, читать его построчно, а затем выводить код на другой язык. Как и при использовании любого другого переводчика, этот процесс требует времени и, таким образом, дает Javascript репутацию «медленного» интерпретируемого языка, такого как Ruby или Python.

Другие языки, такие как C или Java, компилируются — это означает, что перед выполнением язык разбивается на язык ассемблера (или собственный машинный код). Это означает, что компьютер может мгновенно прочитать переведенный код, а не ждать, пока запустится программа-интерпретатор и вернет результат.

Как выглядит веб-сборка?

Если вы боитесь, что вам придется учиться писать Web Assembly с нуля, вам не придется этого делать. Ниже приведен фрагмент кода WebAssembly из Википедии, в котором описывается функция факториала.

20 00
50
04 7E
42 01
05
20 00
20 00
42 01
7D
10 00
7E
0B

Это именно то, что читает браузер после того, как ваша программа на C была скомпилирована в WebAssembly. Это также означает, что размер вашего Javascript-приложения может быть в несколько раз меньше того, что было раньше.

Как это работает?

Web Assembly работает, беря код C или C++ и запуская его через Emscripten для создания модуля wasm. Emscripten — это компилятор, который берет код C/C++ и превращает его в код asm.js. В своем минимальном стандарте спецификации WebAssembly может запускать код asm.js, который сам может быть открыт как веб-страница. В этот момент любой основной браузер может открыть веб-страницу, если она работает на веб-сервере.

Как мы сюда попали?

В сообществе javascript возникло движение за запуск высокопроизводительных приложений под названием asm.js. Короче говоря, asm.js является родителем WebAssembly. Asm.js — это низкоуровневое подмножество Javascript, а это означает, что пока ваш браузер поддерживает последнюю версию Javascript, он также будет поддерживать asm.js. Это подмножество началось как проект в марте 2013 года с практически теми же целями и намерениями, что и WebAssembly — запустить высокопроизводительный код, написанный на C/C++, для запуска клиентской части в браузере.

Текущая поддержка

WebAssembly в настоящее время поддерживается всеми основными браузерами по состоянию на декабрь 2017 года. В настоящее время он может работать в 66 процентах Интернета.

С чего начать?

На странице http://webassembly.org/getting-started/developers-guide/ есть руководство для разработчиков, которое проведет вас через простую программу Hello World.

Источники
Wikipedia, WebAssembly.Org, веб-документы MDN