В 2014-м он предсказал, что JavaScript станет невидимым к 2035-му. Мы прошли полпути
В докладе Гэри Бернхардт представил будущее, где asm.js становится универсальной основой — в конце концов на нём работает даже ядро, и вы перестаёте писать JavaScript напрямую. Одиннадцать лет спустя тред выставляет оценки каждому прогнозу по реальной истории WebAssembly.
Доклад Бернхардта 2014 года был не про смерть JavaScript. Его тезис: быстрое подмножество вроде байткода (asm.js) становится универсальной целью компиляции, граница между ОС и браузером растворяется, а JS выживает как невидимая основа, в которую компилируют, но к которой не прикасаются.
Оценки расходятся. По направлению WebAssembly доказал его правоту. Но один инженер указывает на загвоздку: Wasm до сих пор не может трогать DOM, поэтому JavaScript-склейка никуда не денется — сроки прогноза сдвигаются.
Доклад, предсказавший, что JavaScript растворится в инфраструктуре
*The Birth and Death of JavaScript* Гэри Бернхардта, прочитанный в 2014 году, — это юмористический скетч с настоящим аргументом внутри. Завязка: asm.js — строгое, статически компилируемое подмножество JavaScript — становится настолько быстрым, что в него начинает компилироваться всё подряд. C, игры, а затем и целые приложения. Как только цель компиляции — всё, операционная система и браузер перестают быть разными вещами; защита памяти между процессами становится не нужна, ведь каждая программа уже представляет собой проверенный asm.js-бинарник в песочнице. Кульминация — в его шуточной ретроспективе из 2035-го: само ядро работает на «Metal», байткоде asm.js, и руками JavaScript больше никто не пишет. «Смерть» JavaScript — это его настолько полная победа, что он исчезает в основе системы.
Тред, одиннадцать лет спустя, относится к этому как к прогнозу, которому надо выставить оценку, — и оценка необычно щедра к направлению и сурова к деталям.
Сколько из этого действительно сбылось
Общая форма попала в цель. asm.js был промежуточной ступенью, а настоящим решением стал WebAssembly.
«JS стал целью компиляции (и правда стал), и тогда в видео это был asm.js… но потом появился WebAssembly… Видя, как это действительно реализовано и работает нативно, понимаешь, что его прогноз был точным. „Смерть“, о которой здесь речь, означает, что JavaScript становится основой — состояние, когда им не пользуются напрямую» — фрилансер-программист, работающий в основном с TypeScript и Electron
Один из тех, кто сидел в том самом зале, добавил деталь, из-за которой доклад выглядит пророческим, а не абсурдным: идея родилась не на пустом месте.
«Помню, как смотрел этот доклад Гэри Бернхардта вживую на CUSEC в 2014-м. PNaCl вышел годом ранее, и Google использовал его, чтобы кросс-компилировать, запускать и изолировать клиенты OpenSSH и RDP внутри Chrome и ChromeOS, а ребята из Mozilla/Firefox в ответ предложили asm.js… Теперь меня удивляет, как много из этих идей в итоге прижилось» — cbhl, инженер-программист, сидевший в зале
Загвоздка, которую вскрыла реальность WebAssembly
Несогласие — про темп и охват, а не про направление. Основа существует, но так и не отрастила конечности, которые позволили бы JavaScript уйти на покой.
«Wasm улучшается далеко не так быстро, как предсказывалось. У нас нет манипуляций с DOM, поэтому JS всё равно понадобится как склейка — либо вовсе откажись от HTML и CSS и рисуй всё на canvas, как делают Flutter и некоторые GUI на Rust, но тогда жаль терять весь набор возможностей веба» — satvikpendem
Другой голос утверждал, что самая мрачная часть видения — JS/Wasm как универсальный бинарный интерфейс приложений — это как раз то, чего мы избежали, и хорошо, что избежали.
«Я рад, что он тут ошибся. Если бы js/wasm стал стандартным ABI, это было бы ужасно… в 2014-м он никак не мог предсказать, что Valve вбухает чудовищное количество ресурсов в улучшение Wine/Proton — вплоть до запуска x64-бинарников на других архитектурах» — инженер, следящий за развитием Linux на десктопах и портативках
А вот и постоянная шутка треда — про то полупредсказание, в которое Бернхардт всё же попал: он напророчил глобальную катастрофу между 2020 и 2025 годами. «Он просто ошибся с типом», — заметил один читатель, — «что очень в духе JavaScript».
Вердикт: прав насчёт формы, ошибся насчёт выхода
Сложившийся консенсус — не «он был прав» и не «он был неправ»: он угадал архитектуру, но промахнулся со скоростью выхода на орбиту. JavaScript действительно стал целью компиляции; TypeScript, Electron и Wasm подтверждают тезис об основе. Но финальный шаг — JS становится невидимым, ОС растворяется в браузере — застрял на скучном, конкретном препятствии: Wasm до сих пор не умеет говорить с DOM, поэтому склейка, которая должна была исчезнуть, по-прежнему держит на себе всё. До дедлайна 2035 года остаётся одиннадцать лет и самые трудные 20% пути. Контрарианский взгляд из треда сформулировал это прямо: «Почти всё произошло по сценарию», мы просто ждём ОС на WASM.
Получайте такие разборы каждый день
Главные истории Hacker News — на email, в Telegram или RSS.
Linux прыгает на 7.1 — и удаляет код, чтобы не ловить AI-баг-репорты
Большой номер версии — самое скучное в новости: 7.x появился лишь потому, что 6.x разросся. Интереснее, зачем выпилили ISDN и другие древние драйверы — чтобы остановить поток AI-сгенерированных баг-репортов на код, который никто не запускает.