Stuffcheck

Блог о практическом применении AI-агентов в кодовой базе, системном дизайне, инструментах разработчика и создании быстрых минималистичных веб-приложений.

· 4 мин чтения · Джефф Делани · Dev.to

Странная история JavaScript

Хроника превращения десятидневного прототипа для Netscape в главный язык современного веба

За три десятилетия JavaScript прошел путь от поспешного прототипа для браузера Netscape до самого распространенного языка программирования в мире. Ниже — ключевые вехи этой эволюции.

Зарождение языка (1990–1999)

25 декабря 1990 года. Тим Бернерс-Ли запускает первый браузер в ЦЕРНе — WorldWideWeb, позже переименованный в Nexus.

Браузер WorldWideWeb

Декабрь 1991 года. В США принимают Закон о высокопроизводительных вычислениях (закон Гора), открывший государственное финансирование сетевой инфраструктуры.

Январь 1993 года. Марк Андрессен и Эрик Бина в Университете Иллинойса создают Mosaic — первый браузер с графическим интерфейсом, ставший по-настоящему массовым.

Браузер Mosaic

Начало 1995 года. Компания Netscape контролирует почти 80% рынка браузеров. Сайтам не хватает динамики, и разработчикам требуется легкий скриптовый язык для взаимодействия с пользователем.

Браузер Netscape

Май 1995 года. Брендан Эйх приходит в Netscape с задачей интегрировать диалект Scheme прямо в браузер. Руководство торопит инженера: Microsoft готовит собственный ответ.

Брендан Эйх

Спустя 10 дней. Эйх разрабатывает прототип языка Mocha: синтаксис напоминает Java, функции первого класса взяты из Scheme, динамическая типизация — из Lisp, а прототипное наследование — из Self.

Осень 1995 года. Язык сначала переименовывают в LiveScript, а в декабре — в JavaScript ради привлечения внимания к растущей популярности Java.

Август 1996 года. Microsoft проводит обратную разработку JavaScript и выпускает собственный движок JScript в составе Internet Explorer 3.

Танец

Ноябрь 1996 года. Начинается война браузеров. Чтобы защитить технологию от монопольного влияния Microsoft, Netscape передает спецификацию языка в комитет ECMA International.

Июнь 1997 года. Комитет TC-39 публикует первую версию стандарта ECMA-262 (ES1). В ней уже заложены основы современного языка: объекты, функции первого класса и прототипы.

Декабрь 1999 года. Выходит стандарт ES3. В язык добавляют регулярные выражения, конструкцию try...catch и строгое равенство. Эта редакция определяет облик веба на целое десятилетие.

Темные века и война стандартов (2000–2008)

После краха доткомов комитет TC-39 начинает работу над амбициозным проектом ECMAScript 4. В язык планируют добавить статическую типизацию, классы и интерфейсы. Дуглас Крокфорд из Yahoo и представители Microsoft выступают против чрезмерного усложнения спецификации. Разногласия приводят к закрытию проекта ES4.

Пожар

Internet Explorer занимает более 90% рынка, а Microsoft развивает браузер по собственным правилам. Появление объекта XMLHttpRequest закладывает основу технологии AJAX и будущей концепции одностраничных приложений (SPA).

Август 2006 года. Джон Резиг публикует библиотеку jQuery. Она скрывает различия между браузерными реализациями DOM и задает стандарт удобного API для манипуляции элементами страницы.

Сентябрь 2008 года. Google запускает браузер Chrome с движком V8. Компиляция JavaScript в машинный код в реальном времени кардинально меняет планку производительности.

Движок V8

Возрождение и выход на сервер (2009–2015)

Май 2009 года. Райан Даль объединяет движок V8 с циклом событий (event loop) на C++ и создает Node.js. С этого момента JavaScript выходит за пределы браузера.

Node.js

Декабрь 2009 года. Комитет выпускает ES5 — первую утвержденную редакцию стандарта за 10 лет. Она приносит строгий режим (use strict), нативную поддержку JSON и методы обхода массивов.

Стандарт ES5

2010–2013 годы. Появляются первые SPA-фреймворки. AngularJS делает упор на декларативные шаблоны и двустороннее связывание данных, а Backbone.js предлагает минималистичную структуру. В 2013 году инженеры Facebook представляют React с концепцией виртуального DOM и однонаправленного потока данных.

Логотип React

Современная эпоха (2015 — настоящее время)

2015 год (ES6 / ECMAScript 2015). Самое масштабное обновление в истории языка: стрелочные функции, блочная область видимости (let и const), классы, промисы, модули (import/export) и деструктуризация. Появление компиляторов Babel и TypeScript позволяет использовать новые возможности без потери совместимости со старыми окружениями.

С этого момента комитет TC-39 переходит на ежегодный релизный цикл:

  • ES2017: синтаксис async/await для комфортной работы с асинхронным кодом.
  • ES2018: операторы Rest и Spread для объектов.
  • ES2020: оператор опциональной цепочки (?.) и оператор нулевого слияния (??).
  • ES2022: приватные поля классов (#field) и метод Array.prototype.at().
  • ES2024: новые методы иммутабельной работы с массивами (toSorted, toReversed) и декораторы.

JavaScript прошел путь от спешно собранного скриптового движка до мощной платформы, объединяющей браузеры, серверы, мобильные и десктопные приложения.