|
| 1 | +--- |
| 2 | +title: Шаблон для определений |
| 3 | +status: Feedback Appreciated |
| 4 | +category: concept |
| 5 | +--- |
| 6 | + |
| 7 | +WebAssembly (сокращенно Wasm) — это портируемый формат двоичных инструкций, в который можно скомпилировать высокоуровневые языки: С, С++, Rust и другие. |
| 8 | +Это позволяет разворачивать в браузере клиентские и серверные приложения. |
| 9 | +Формат представляет собой низкоуровневый байт-код, который можно выполнять в виртуальной машине, которая, как правило, интегрирована в браузер. |
| 10 | +Хотя изначально WebAssembly разрабатывалась для веб-приложений, сейчас она является универсальной средой исполнения и может выполнять и другие приложения, например, программы для IoT и периферийных устройств. |
| 11 | + |
| 12 | +## Какую проблему решает |
| 13 | + |
| 14 | +Долгие годы веб-приложения разрабатывались на основе стека LAMP (Linux Apache MySQL PHP). |
| 15 | +Позже царем фронтэнд-разработки стал Javascript, и общепринятыми стали приложения, написанные на NodeJS. |
| 16 | +С развитием веб-технологий много внимания получили интерпретируемые языки; обычно они менее производительны, чем компилируемые, даже если технологически являются более продвинутыми. |
| 17 | +Хотя JavaScript развился с годами, он все еще ограничен по производительности на задачах, требующих интенсивных вычислений. |
| 18 | +Интерпретируемые языки часто испытывают проблемы с производительностью и функциональностью, когда код исполняется в разных средах, поскольку он компилируется под эти среды во время выполнения. |
| 19 | +Корректно скомпилированные бинарные файлы, напротив, работают во всех средах одинаково. |
| 20 | +В то же время считается, что скомпилированные бинарные файлы меньше подходят для веб-среды. |
| 21 | + |
| 22 | +## Как именно решает проблему |
| 23 | + |
| 24 | +WebAssembly предоставляет разработчикам низкоуровневый двоичный формат, который исполняется с производительностью, близкой к нативной. |
| 25 | +Благодаря этому веб-приложения могут эффективно справляться со сложными вычислениями. |
| 26 | +WebAssembly позволяет разработчикам создавать веб-приложения, используя знания языков C, C++, Rust и других, которые у них имеются, и благодаря этому переиспользовать существующие кодовые базы и библиотеки. |
| 27 | +Помимо этого, модули WebAssembly запускаются единообразно в разных браузерах, операционных системах и устройствах, а это снижает необходимость специфичном для этих платформ коде. |
| 28 | +Подводя итог, WebAssembly решает проблемы с производительностью и ограничениями языков программирования, переносимостью кода между средами, безопасностью, объемом кода и временем его загрузки и предоставляет более простую и гибкую среду для разработки веб-приложений. |
0 commit comments