Представьте 1995 год. Интернет молод, браузеров почти нет, а те, что есть, показывают статичные страницы — ровно то, что прислал сервер. Если вы заполняли форму и допустили ошибку в email-адресе, страница отправляла данные, сервер их проверял, и только после этого — после поездки туда и обратно по медленному dial-up соединению — браузер сообщал вам, что поле заполнено неверно. Это казалось нормальным, потому что ничего другого не существовало.

Именно эту проблему должен был решить Брендан Айк (Brendan Eich), когда в мае 1995 года его наняли в компанию Netscape — крупнейшего производителя браузеров того времени. Задача звучала просто: создать язык, который будет работать прямо в браузере и позволит страницам реагировать на действия пользователя без обращения к серверу. Срок — десять дней.

Айк уложился. Первый прототип языка был готов ровно за это время — невероятно короткий срок для создания чего-либо, что потом будет работать в миллиардах устройств. Поначалу язык назвали Mocha, затем переименовали в LiveScript. Но когда пришло время выпускать его в мир, маркетологи Netscape нашли более привлекательное название: JavaScript. Логика была прозрачно коммерческой — язык Java от Sun Microsystems был на пике популярности, и всё, что содержало слово «Java» в названии, автоматически привлекало внимание. Это породило путаницу, которая не исчезла до сих пор: Java и JavaScript — совершенно разные языки, созданные разными людьми в разных компаниях, с разной философией. Их объединяет только слово в названии — примерно как «горничную» и «горчицу».

Сам Айк впоследствии признавал: если бы у него было больше времени, многое было бы устроено иначе. Некоторые особенности JavaScript — особенно в работе с типами данных — стали прямым следствием той десятидневной спешки. Но это скорее часть истории, чем трагедия: язык развивался, его странности со временем обрели объяснения, а в некоторых случаях — даже обрели смысл.

Почти сразу началась война браузеров. Microsoft выпустил Internet Explorer со своей версией языка под названием JScript — внешне похожей на JavaScript, но с расхождениями в поведении. Два диалекта одного языка, несовместимые в деталях: разработчики были вынуждены писать один и тот же код дважды или полагаться на хрупкие проверки браузера. Чтобы остановить хаос, в 1996 году Netscape передал язык на стандартизацию в ECMA — организацию по стандартизации информационных технологий, сегодня известную как Ecma International. Отсюда и появилось официальное название стандарта: ECMAScript. То, что большинство называет «JavaScript» в повседневной речи — это реализация стандарта ECMAScript в конкретном браузере или среде. Когда вы слышите «ES5», «ES6» или «ES2020» — речь идёт о конкретных версиях этого стандарта.

Критически важным оказался 2009 год: вышел ES5 с рядом давно ожидаемых исправлений. Ещё важнее был 2015-й — выход ES6, который также называют ES2015. Это было крупнейшее обновление за всю историю языка: появились стрелочные функции, классы, встроенная система работы с асинхронным кодом через промисы. Начиная с 2015 года ECMA перешла на ежегодный цикл обновлений, и язык с тех пор развивается планомерно.

Параллельно происходило кое-что важное на уровне производительности. В 2008 году Google выпустил Chrome с движком V8 — принципиально новым подходом к исполнению JavaScript. Предыдущие движки интерпретировали код: читали строку за строкой и выполняли. V8 компилировал JavaScript прямо в машинный код до исполнения, что дало прирост скорости в разы. Это изменило не только ощущение от браузера, но и представление о том, где JavaScript вообще может работать.

В 2009 году Райан Даль (Ryan Dahl) взял движок V8 и обернул его в отдельную среду исполнения за пределами браузера. Так появился Node.js — название составлено из слова node (узел, элемент сети) и js (сокращение от JavaScript). Node.js позволил запускать JavaScript на сервере, в терминале, во встраиваемых системах — везде, где раньше требовались другие языки. Язык, созданный для того, чтобы проверять формы в браузере, стал полноценной серверной платформой. Сегодня JavaScript занимает в мире программирования позицию, которую сложно назвать случайной. По данным ежегодного опроса Stack Overflow Developer Survey, JavaScript остаётся самым популярным языком программирования двенадцать лет подряд — с 2012 по 2024 год. Это не просто статистика: это отражение того, насколько широко язык используется в реальных проектах.

Причина такой распространённости кроется в уникальной позиции JavaScript в браузерной экосистеме. Браузер понимает только один язык программирования нативно — и это JavaScript. Если вы хотите, чтобы кнопка что-то делала при нажатии, чтобы поле формы проверяло email до отправки, чтобы содержимое страницы менялось без перезагрузки — вам нужен JavaScript. Существуют языки, которые компилируются в JavaScript (TypeScript от Microsoft, Dart от Google), но они в конечном счёте производят всё тот же JavaScript, который браузер и исполняет. Альтернативы в браузере нет.

На сервере история другая: там конкурируют Python, Ruby, Go, Java. Но появление Node.js дало JavaScript и эту территорию. Компания LinkedIn в своё время перевела значительную часть бэкенда с Ruby on Rails на Node.js — и сократила количество серверов в двадцать раз: асинхронная модель Node.js позволяет обрабатывать тысячи параллельных соединений на одном процессе. Истории про Instagram, Netflix и другие крупные платформы, использующие Node.js в продакшене, стали почти общим местом.

Именно здесь важно понять кое-что практически ценное для вас. JavaScript позволяет писать и фронтенд (то, что видит пользователь в браузере), и бэкенд (логику на сервере) на одном языке. Не нужно переключаться между Python на сервере и JavaScript в браузере, не нужно держать в голове два набора правил. Один язык — два контекста. Для тех, кто только начинает, это существенное упрощение.

Мобильная разработка тоже не осталась в стороне. Фреймворк React Native позволяет писать приложения для iOS и Android из одной кодовой базы на JavaScript: один и тот же код с небольшими оговорками работает на обеих платформах. Это не серебряная пуля, и у нативной разработки есть преимущества, которые React Native не перекрывает — но возможность выпустить мобильное приложение, уже зная JavaScript, реальна.

Настольные приложения — ещё один неожиданный угол. Electron, платформа от GitHub, позволяет создавать приложения для macOS, Windows и Linux с использованием тех же технологий, что и для веб-страниц. VS Code, в котором вы, вероятно, будете писать код в этом курсе, — это приложение на Electron, написанное на TypeScript (надмножестве JavaScript). Slack, Discord — тоже.

Отдельно стоит упомянуть npm — менеджер пакетов для Node.js. Аббревиатура расшифровывается как Node Package Manager, хотя сегодня npm используется далеко не только с Node.js. Это крупнейший реестр открытого программного обеспечения в мире: более 2,5 миллиона пакетов. Для сравнения — PyPI, аналогичный реестр для Python, содержит около 500 тысяч. Это означает, что практически для любой задачи уже существует готовое, проверенное решение, которое можно подключить к своему проекту одной командой.

Вы изучаете не нишевый инструмент и не академический язык. JavaScript — это язык, на котором работает значительная часть того, чем пользуются люди каждый день: сайты, мобильные приложения, редакторы, мессенджеры, серверная инфраструктура. Именно поэтому курс начинается здесь.

В этом уроке мы проследили путь JavaScript от десятидневного прототипа 1995 года до языка, без которого сложно представить современную разработку.

Официальный стандарт, по которому развивается язык, называется ECMAScript — по имени организации ECMA, которой Netscape передал спецификацию в 1996 году. Версии этого стандарта — ES5, ES6/ES2015 и далее ежегодные — определяют, какие возможности появляются в языке. Когда говорят «JavaScript», имеют в виду конкретную реализацию ECMAScript: в браузере, в Node.js или ещё где-то.

Node.js — среда исполнения, которая позволяет запускать JavaScript за пределами браузера: на сервере, в терминале, в любой операционной системе. Именно Node.js мы будем использовать в первом курсе, чтобы изучить язык в чистом виде, без сложностей браузерного окружения.

Уникальная позиция JavaScript в том, что это единственный язык, который браузер понимает нативно. Это вынужденный выбор для любого, кто хочет делать интерактивные веб-страницы — и одновременно вход в экосистему, которая охватывает фронтенд, бэкенд, мобильные и настольные приложения.


Обсуждение урока

0
Комментарии видны всем. Чтобы участвовать в обсуждении, войдите или зарегистрируйтесь.
Модерация сообщества

Пожаловаться на комментарий

Расскажите модераторам, что именно требует внимания.