Подтвердить что ты не робот

WebAssembly, JavaScript и другие языки

С появлением новой эры в Интернете WebAssembly, которая будет разработана в сотрудничестве с Google, Microsoft, Apple и Mozilla:

Цели высокого уровня WebAssembly

  • Определите бинарный формат для переносимости, размера и времени загрузки, чтобы служить в качестве цели компиляции, которая может быть скомпилирована для выполнения на собственной скорости, используя общие аппаратные возможности, доступные на широком спектре платформ, включая мобильные и IoT

читать дальше...

Я хотел бы спросить тех, кто уже обладает этими знаниями:

Можно ли скомпилировать любой язык программирования в WebAssembly после его создания? Пусть это С#, Java, Python, JavaScript, Ruby. Если это так, может ли веб-разработчик выбрать любой язык для достижения того, чего он достиг с помощью JavaScript сейчас?

4b9b3361

Ответ 1

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

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

Обратите внимание, что MVP не поддерживает потоки. Темы будут добавлены вскоре после.

Python, JavaScript и Ruby могут легко поддерживаться путем компиляции интерпретатора, написанного на C/С++, в WebAssembly. Более поздние версии WebAssembly будут поддерживать JIT-компиляцию, но для таких движков, как V8, необходимо настроить таргетинг на WebAssembly, как если бы это была новая ISA (например, на уровне с x86-64/ARM/...).

С# и Java требуют аналогичных примитивов GC и стека. Это также в дорожной карте, но после MVP, потоков и динамической компоновки.

Обратите внимание, что языки могут работать очень хорошо, но поддержка всех их библиотек также сложна! Мы (инженеры браузеров) можем хорошо работать над поддержкой языков, но нам нужны сообщества, чтобы создавать отличную библиотечную поддержку.

Будет ли WebAssembly заменять JavaScript?

В вашем последнем предложении: yes WebAssembly должен иметь возможность делать многое, что может сделать JavaScript, поскольку он будет иметь доступ к тем же веб-API. Его цель заключается не в замене JavaScript, а в том, что он дополняет JavaScript, избегая добавления функций в JavaScript ради несанкционированного поддержки других языков и предлагая предсказуемую почти собственную производительность для низкоуровневых языков, таких как С++/Rust.

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

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

Должны ли люди перестать писать JavaScript и переключаться на WebAssembly? Нет. Я ожидаю, что тесная интеграция с JavaScript означает, что модули WebAssembly будут использоваться из JavaScript (скажем, быстрый процессор изображений), а существующие кодовые базы С++ будут нацелены на Интернет, но я не вижу JavaScript скоро умирает.

Ответ 2

Я думаю, что в этом случае постепенно, написанный в javascript-коде будет передан на более предпочтительный язык программирования.