Написан за 10 дней, чиним 30 лет: С днем рождения, наш любимый JavaScript

leer en español

Написан за 10 дней, чиним 30 лет: С днем рождения, наш любимый JavaScript

Тридцать лет назад Брендан Айк написал прототип JavaScript за десять дней — сегодня этот «допиленный в спешке» язык управляет браузерами, серверами и приложениями.

image

Тридцать лет назад разработчик Netscape за десять дней наспех собрал прототип языка, который сегодня держит на себе почти весь интерактивный веб. В мае 1995 года инженер Брендан Айк в буквальном смысле «нахакал» первую версию JavaScript, а сейчас его потомки работают примерно на 99% сайтов с клиентским кодом и используются далеко за пределами браузера — от серверов до мобильных и desktop-приложений.

Весной 1995-го Netscape нужна была простая скриптовая технология, которая позволила бы «оживлять» страницы и была бы доступна не только профессиональным программистам, но и веб-дизайнерам. Руководству хотелось, чтобы новый язык выглядел современно и напоминал модный тогда Java, а сам Айк ориентировался на свои любимые технологии. Синтаксис действительно сделали похожим на Java, но под капотом JavaScript унаследовал идеи из функционального Scheme и объектной Self — отсюда, например, прототипное наследование, которое до сих пор выделяет язык среди классических ООП-решений.

Публично JavaScript появился не сразу. В сентябре 1995 года его встроили в браузер Netscape 2.0, а полноценный релиз 1.0 состоялся в марте 1996-го. Тем временем Netscape и Sun Microsystems активно продвигали новый инструмент: 4 декабря 1995 года компании выпустили совместный пресс-релиз и заявили о поддержке JavaScript сразу 28 крупными игроками рынка. Если перечитать этот список сегодня, он выглядит как памятник ушедшей эпохе. Digital Equipment Corporation уже давно поглощена и растворена в других структурах, Silicon Graphics обанкротилась, саму Netscape купил AOL и в итоге разобрал по частям, а Sun в 2010 году досталась Oracle. JavaScript пережил всех создателей и почти всех «спонсоров» своего детства.

Даже с легендарными «десятью днями» история была не такой простой. За это время Айк собрал работоспособный внутренний прототип, но дальше язык ещё долго дорабатывали, меняли и допиливали. Спешка аукнулась — в JavaScript до сих пор хватает странностей и несостыковок, о которых шутят программисты по всему миру. Непрерывные изменения раздражали и конкурентов: Билл Гейтс, вспоминал позже Айк, в 1996 году откровенно ругался на то, что спецификация и поведение JavaScript постоянно плавают. Microsoft в итоге реализовала собственный вариант под названием JScript в Internet Explorer, и вебу на много лет досталась боль под названием «несовместимость браузеров».

С названием тоже сначала не всё было гладко. Внутри компании языку дали кодовое имя Mocha. Для бета-версии Netscape 2.0 его переименовали в LiveScript, а уже в декабре, после заключения соглашения с Sun, появился привычный сегодня бренд JavaScript. Это было чистое маркетинговое решение: в 1995-м Java находилась на пике хайпа, и Netscape с Sun хотели показать, что новый скриптовый язык — «младший партнёр» Java в браузере. В пресс-релизах JavaScript позиционировали как инструмент для мелких задач на стороне клиента, а Java — как основу «серьёзных» корпоративных приложений.

Именно из-за этого имени путаница с Java не исчезает уже три десятилетия. На практике у языков общее только слово «Java» в названии и некоторые синтаксические привычки вроде фигурных скобок. Java — это статически типизированный язык с классами от Sun Microsystems, а JavaScript — динамически типизируемый язык с прототипным ООП. Как когда-то остроумно заметили в одном обсуждении на Stack Overflow, их родство примерно такое же, как у слов «car» и «carpet» — звучат похоже, но означают разное.

К концу 90-х индустрии понадобился единый стандарт. В июне 1997 года ECMA International утвердила спецификацию ECMAScript — официальное имя стандарта языка, которым до сих пор пользуются браузеры и движки. Дальше последовал непростой период: в начале 2000-х Internet Explorer доминировал на рынке, разработка двигалась медленно, а кросс-браузерные баги стали частью повседневной рутины веб-разработчиков. Но в 2005 году подход AJAX показал, что страницы могут динамически обновляться без полной перезагрузки, — и интерес к JavaScript взлетел. В 2009-м появился Node.js, позволивший запускать JavaScript на сервере, и язык окончательно вышел за рамки «штуки для кнопочек в браузере».

С тех пор JavaScript проник буквально во все слои веб-стека. Согласно опросу Stack Overflow за 2024 год, около 62% разработчиков используют JavaScript, и он уже двенадцатый год подряд остаётся самым популярным языком программирования. В отчёте JetBrains State of Developer Ecosystem доля JavaScript — 61%, а TypeScript, надстройка над JavaScript с статической типизацией, за несколько лет выросла с 12% в 2017-м до 35% в 2024-м. На npm, крупнейшем реестре пакетов для JavaScript-экосистемы, насчитываются миллионы модулей — от мелких утилит до гигантских фреймворков.

Сегодня JavaScript — это не только веб-страницы в браузере. На нём пишут мобильные приложения с помощью React Native, desktop-программы через Electron, серверную инфраструктуру на Node.js и даже часть встроенных систем. Для языка, который когда-то считали «несерьёзным скриптом для дизайнеров», это более чем внушительная карьера.

Интересно, что спустя тридцать лет вокруг JavaScript развернулась новая борьба — теперь уже за само имя. Торговая марка JavaScript находится у Oracle, которая унаследовала её вместе с Sun, но при этом сама компания за эти годы так и не выпустила ни одного продукта с этим словом в названии. В 2024 году Брендан Айк, создатель Node.js Райан Даль и десятки тысяч участников сообщества подписали открытое письмо с требованием освободить торговую марку: по их мнению, Oracle фактически забросила этот бренд, а само слово «JavaScript» стало общим термином. Без риска нарваться на претензии правообладателя до сих пор нельзя легально провести «JavaScript-конференцию» или выпустить «JavaScript-спецификацию», поэтому сообщество выкручивается с помощью названий вроде JSConf. Официальное же имя стандарта — ECMAScript — сам Айк когда-то шутливо описал как «бренд, который звучит как кожное заболевание».

Как бы ни назывался стандарт, одно очевидно: язык, придуманный в спешке, пережил и Java-апплеты, и большинство компаний, стоявших у его истоков, и уже давно превратился из «странного аттракциона сбоку» в главный двигатель интерактивного веба. С днём рождения, JavaScript — тем самым легендарным «десятидневным хаком», который случайно стал фундаментом для целой эпохи.