WebAssembly, или заговор четырёх

  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

AnGel

Администратор
Команда форума

AnGel

Администратор
Команда форума
27 Авг 2015
3,411
2,025
Пролог
Вестерновый салун где-то на восточно-европейских просторах. Несколько олдфагов и миддлфагов играют в техасский холдем опкодами x86-процессора. Пара ньюфагов пытаются скомпилировать OneHalf под iOS. Неожиданно дверь распахивается, входит самурай с 64-х битной катаной на поясе и кладёт на стол постер «Разыскивается».

«WASM Wanted!» — гласит большая надпись.

— Мы снова в деле, котаны, — говорит самурай.

Великолепная четвёрка
Долгое, очень долгое время практически единственным языком программирования для страниц, загружающихся в браузере, был Javascript. Здесь можно вспомнить о Java-апплетах и Flash-виджетах, используя которые бесстрашные программисты пытались превзойти всевозможные ограничения, но все эти технологии имели ограниченное и не всегда удобное применение. Основным способом оживить свою страницу — заставить идти снег или бегать котика из одного угла в другой — оставался и остаётся Javascript. Для него было написано множество библиотек и фреймворков, но всё же в различных кругах росло недовольство.

— Желаем программировать на нормальном языке! — роптали одни.
— Почему всё такое медленное? — негодовали другие.
— Хотим компилировать! — восклицали третьи.

Наконец, их мольбы были услышаны. Google, Microsoft, Mozilla и группа инженеров, стоящая за Webkit (Apple, как обычно, делает загадочный вид), объединились, чтобы создать стандарт, который откроет новую эпоху в области web-программирования.

Они решили назвать его WebAssembly, а сокращённо — попросту wasm.

Что это такое
Проблемы, которые были озвучены — сложность программирования на других языках и низкая скорость выполнения, производители браузеров пытались решить по отдельности. Mozilla разрабатывала asm.js — подмножество JavaScript, которое, с одной стороны, исполняется обычным браузером, а с другой, браузер, поддерживающий этот стандарт (Firefox), способен выполнить его гораздо быстрее, чем обычный JavaScript. Также asm.js задумывался как решение проблемы с программированием на других языках — чтобы он мог служить целью компиляции других языков. Google предложил своё решение — Native Client, в котором бы исполнялся запесоченный для безопасности скомпилированный код C и C++. Однако ни то, ни другое решение не смогло завладеть умами людей и разработчиков.

WebAssembly — это новая попытка разработать новый стандарт, который решит старые проблемы и будет принят всеми основными участниками. Объединились производители основных браузеров, поэтому есть надежда, что в этот раз она окажется успешной.

Что из себя представляет WebAssembly, главный репозиторий которого
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
? Это не совсем привычный нам байткод. WebAssembly имеет формат
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
— абстрактного синтасического дерева, которое может быть представлено как в бинарном виде — основном для распространения, так и в текстовом, соответствующим двоичному.

Вот пример WebAssembly в человекочитаемой форме.
Код:
(module
  (func $return_i32 (result i32)
    (unreachable))
  (func $return_f64 (result f64)
    (unreachable))

  (func $if (param i32) (result f32)
   (if_else (get_local 0) (unreachable) (f32.const 0)))

  (func $block
   (block (i32.const 1) (unreachable) (i32.const 2)))

  (func $return_i64 (result i64)
   (return (i64.const 1))
   (unreachable))

  (func $call (result f64)
   (call $return_i32)
   (unreachable))

  (export "return_i32" $return_i32)
  (export "return_f64" $return_f64)
  (export "if" $if)
  (export "block" $block)
  (export "return_i64" $return_i64)
  (export "call" $call)
)
Лисперам должно понравиться. Конечно, компилироваться wasm будет в бинарную форму.

План захвата мира
В первую очередь, WebAssembly рассчитан на web-платформу. Вот как определяется эта цель:

Проектируется, чтобы запускаться внутри и хорошо интегрироваться с существующей веб-платформой:

  • сохранять безверсионную, протестированную и обратносовместимую историю Веб;
  • запускаться в той же семантической вселенной, что и JavaScript;
  • позволять синхронизированные вызовы из и в JavaScript;
  • соблюдать такие же политики безопасности;
  • иметь доступ к функциональности браузера через такие же Web API, которые доступны в JavaScript;
  • определить человекоредактируемый форма, конвертируемый в и из двоичного для поддержки функциональности просмотра исходников.

Однако в долгосрочной перспективе под властью wasm должны оказаться и другие платформы: сервера в датацентрах, IoT-устройства, мобильные и десктопные приложения и т. д., и т. п.

Для программистов самое интересное – это то, для генерации приложений в WebAssembly можно будет использовать не JavaScript, а другие языки. Первым, для кого делается поддержка, является C++. Ветераны указатели и шаблонов снова впереди!

Эпилог
Будущее покажет, перерастёт ли это попытка в лавину. Если да – веб-разработка (прямая и обратная) стоит на пороге больших перемен и становится ближе к традиционной.
 
  • Лайк
Reactions: tima1488

MrSmitix

Юзер

MrSmitix

Юзер
14 Сен 2015
301
89
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Прочитал заголовок, думал будем проги на html писать...
 

О нас

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

    Dark-Time 2015 - 2022

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя