Привет, друзья!
В 2019 году WebAssembly
(далее — WA
или wasm
) стал четвертым "языком" веба. Первые три — это, разумеется, HTML
, CSS
и JavaScript
. Сегодня wasm
поддерживается 94% браузеров. Он, как утверждается, обеспечивает скорость выполнения кода, близкую к нативной (естественной, т.е. максимально возможной для браузера), позволяя портировать в веб десктопные приложения и видеоигры.
Что не так с JS
?
JS
— это интерпретируемый язык программирования с динамической типизацией. Динамическая типизация означает, что тип переменной проверяется (определяется) во время выполнения кода. И что с того? — спросите вы. Вот как определяется переменная в C++
:
int n = 42
Такое определение сообщает компилятору тип переменной n
и ее локацию в памяти. И все это в одной строке. А в случае с определением аналогичной переменной в JS
(const n = 42
), движку сначала приходится определять, что переменная является числом, затем, что число является целым и т.д. при каждом выполнении программы. На определение и (часто) приведение (преобразование) типов каждой инструкции уходит какое-то время.