Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions content/ru/webassembly.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
title: Шаблон для определений
status: Feedback Appreciated
category: concept
---

WebAssembly (сокращенно Wasm) — это портируемый формат двоичных инструкций, в который можно скомпилировать высокоуровневые языки: С, С++, Rust и другие.
Это позволяет разворачивать в браузере клиентские и серверные приложения.
Формат представляет собой низкоуровневый байт-код, который можно выполнять в виртуальной машине, которая, как правило, интегрирована в браузер.
Хотя изначально WebAssembly разрабатывалась для веб-приложений, сейчас она является универсальной средой исполнения и может выполнять и другие приложения, например, программы для IoT и периферийных устройств.

## Какую проблему решает

Долгие годы веб-приложения разрабатывались на основе стека LAMP (Linux Apache MySQL PHP).
Позже царем фронтэнд-разработки стал Javascript, и общепринятыми стали приложения, написанные на NodeJS.
С развитием веб-технологий много внимания получили интерпретируемые языки; обычно они менее производительны, чем компилируемые, даже если технологически являются более продвинутыми.
Хотя JavaScript развился с годами, он все еще ограничен по производительности на задачах, требующих интенсивных вычислений.
Интерпретируемые языки часто испытывают проблемы с производительностью и функциональностью, когда код исполняется в разных средах, поскольку он компилируется под эти среды во время выполнения.
Корректно скомпилированные бинарные файлы, напротив, работают во всех средах одинаково.
В то же время считается, что скомпилированные бинарные файлы меньше подходят для веб-среды.

## Как именно решает проблему

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