В день Рождества 1990 года сэр Тим Бернерс-Ли представил миру первый веб-браузер, созданный им в Швейцарии на компьютерной системе NeXT, и примерно в то же время он создал первый веб-сервер.
В этой статье мы вернемся в прошлое и посмотрим, как JavaScript превратился из простого языка сценариев, созданного за десять дней, в технологию, которая касается почти каждого человека на земном шаре.
История начинается в декабре 1991 года, когда Эл Гор изобрел Интернет. На самом деле он представил законопроект Гора, который обеспечил финансирование первого основного браузера mosaic, разработанного Марком Андреессеном и Эриком Биной в Иллинойском университете.
В январе 1993 года он был опубликован для систем UNIX, а позднее в том же году появились версии для Macintosh и Windows.
Mosaic стал первым веб-браузером, представившим Интернет широким массам, но в нем еще не было JavaScript, только DOM или объектная модель документа, которая даже не была близка к стандартизации.
После окончания университета в 1993 году Андреессен переехал в Калифорнию, чтобы стать соучредителем компании Netscape, и в течение нескольких лет Netscape Navigator занимал более 80% доли рынка браузеров.
Примерно в это время Андреессен заметил, что браузеры должны стать более динамичными, а веб-дизайнерам необходим какой-то язык для создания интерактивных веб-страниц.
Первым делом они обратились бы к супермодному языку программирования Java от Sun Microsystems, но быстро решили, что эта идея не годится, поэтому в качестве плана Б был нанят парень по имени Брендан Эйх, задачей которого было внедрить язык программирования схем в браузер, сохранив при этом синтаксис, который все еще напоминал Java.
Всего через десять дней родилась первая версия JavaScript, но она еще не называлась JavaScript; она называлась mocha.
Синтаксически это был язык с фигурными скобками, как Java или C, но под капотом он уже содержал многие функции, которые мы знаем и любим в современном JavaScript, такие как функции первого класса, динамическая типизация и прототипное наследование, которое было вдохновлено языком программирования self компании Sun Microsystems.
Написать идеальный язык программирования за десять дней практически невозможно, и Брендан Эйх прекрасно это понимал. Вместо того чтобы написать узкоспециализированный язык, предназначенный только для браузеров 1990-х годов, он написал гибкий мультипарадигмальный язык, который разработчики могли использовать для применения своих собственных языковых паттернов, но все равно оставалась очень большая вероятность того, что язык потерпит неудачу, и он никак не мог предсказать, с какими крайностями столкнутся разработчики.
К сентябрю 1995 года Mocha был переименован в live script, и он был включен в первые бета-версии Netscape Navigator 2.0. Однако всего несколько месяцев спустя, в декабре, они решили изменить название на JavaScript, потому что оно звучало более модно, чем самый популярный язык программирования того времени.
Когда Javascript только появился, он оказал негативное влияние на пользовательский опыт, в основном за счет использования навязчивых всплывающих окон. В это время одна быстро развивающаяся фирма представила свой собственный браузер под названием Internet Explorer.
В 1996 году у нас появились два почти одинаковых языка, javascript и jscript, в результате того, что компания Microsoft переработала JavaScript и назвала его jscript.
Люди поняли, что JavaScript необходимо стандартизировать из-за быстрого развития Интернета, поэтому Netscape обратилась в Европейскую ассоциацию производителей компьютеров (ECMA), которая с 1961 года является нейтральной стороной для установления стандартов в ИТ-индустрии.
К июню 1997 года мы получили первую версию скрипта ECMA, которая предоставила производителям браузеров и серверных приложений согласованную спецификацию или набор рекомендаций по внедрению JavaScript.
В то самое время, когда все готовились к концу света, 1999 год был одним из самых интересных в истории технологий.
Мы получили ECMAScript версии 3 как раз перед «y2k» и возможным кризисом фондового рынка.
Однако в скором времени все стало еще хуже, и мы не увидим публикации еще одной версии ECMAScript в течение 10 лет. Он включал такие функции, как улучшенная обработка ошибок и оператор равенства строк, чтобы сделать сравнение равенств менее странным. Тем не менее, Интернет был здесь, чтобы остаться, и на данный момент у нас есть твердый стандарт для JavaScript, но компания Netscape, стоявшая за этим толчком, была приобретена AOL за год до этого. Всего три месяца спустя, в марте 2000 года, технологический пузырь начал лопаться. Только за этот месяц Nasdaq потерял в цене более триллиона долларов, а известные компании начали закрываться, но Интернет оставался.
Microsoft Internet Explorer пожирал долю рынка браузеров, и Microsoft не заботилась о соблюдении спецификации правил. В начале 2000-х годов Explorer занимал не менее 80% рынка браузеров.
Microsoft, по сути, ушла и занялась своими собственными делами, внедряя свои собственные расширения JavaScript. Это привело к фрагментации, с которой нам и сегодня приходится иметь дело при поддержке устаревших версий Internet Explorer, но это также привело к появлению некоторых очень революционных возможностей, таких как Ajax, который позволил реализовать JavaScript асинхронно, что стало предшественником современных одностраничных приложений.
В начале 2000-х годов началась работа над ECMA script версии 4, которая двигалась в направлении, гораздо более похожем на современный typescript с такими возможностями, как необязательные аннотации типов, классы, интерфейсы и множество других возможностей, предназначенных для использования JavaScript в масштабах предприятия, но одним из членов комитета был Дуглас Крокфорд из Yahoo, который создал JSON в 2003 году и был очень обеспокоен тем, что ES для предложения становится очень большим.
Это привело к тому, что два предложения шли параллельно, одно для версии 3.1, а другое для версии 3.1 было гораздо более простой версией без значительных изменений языка. Эта сага продолжалась до 2008 года, когда от ES 4 окончательно отказались, но на самом деле он вышел на рынок в виде языка ActionScript **, созданного компанией **Adobe.
В середине 2000-х годов разработчики были крайне разочарованы, пытаясь создать веб-приложения, которые работали бы во всех браузерах, но в 2006 году мы увидели огромный скачок вперед с выходом jQuery. Эта библиотека заслуживает гораздо больше похвалы, чем получает, потому что это одна из первых JS-библиотек с очень хорошо составленной документацией, и она дала разработчикам возможность создавать кроссбраузерные веб-приложения.
Выпуск Google Chrome и движка v8 2 сентября 2008 года стал еще одной важной вехой. Движок v8 фундаментально изменил способ генерации и интерпретации javascript, сделав его привлекательной альтернативой для высокопроизводительных приложений как на клиентской, так и на серверной стороне стека приложений.
Менее чем через год, в мае 2009 года, Райан Дал представил nodejs, серверную среду выполнения для JavaScript, построенную на базе v8, которая включала цикл событий, новую для того времени идею, позволявшую писать событийно-управляемый и неблокирующий код. Благодаря этим возможностям nodejs стал известен как отличное решение для создания масштабируемых веб-приложений в реальном времени, а также позволил разработчикам создавать все веб-приложения с нуля.
ES 3.1 был выбран в качестве основы для ES 5, который в итоге был выпущен в декабре 2009 года, ровно через 10 лет после выхода последней официальной спецификации с технической точки зрения. Это решение было принято примерно в то же время, когда власти JavaScript наконец-то собрались с силами для следующей версии сценария ECMA.
ES 5 имеет несколько важнейших характеристик. Например, JSON поддерживает функциональные методы объектов и массивов, аксессоры strictmode и многие другие возможности.
Двигаясь вперед к 2010 году, мы начинаем видеть JavaScript-фреймворки, разработанные специально для одностраничных приложений, самыми популярными из которых были Backbone и Angularjs, оба из которых были выпущены в октябре 2010 года. Оба этих фреймворка пытались решить схожую проблему, но делали это совершенно по-разному.
Backbone был легким и использовал императивный подход к программированию для управления изменениями Dom, в то время как Angularjs был более всеобъемлющим и использовал декларативный язык программирования.
Разработчик Backbone Джереми Эш — легенда JavaScript, который также создал CoffeeScript и Underscore.js. Говоря о CoffeeScript, следует отметить, что это очень важная часть истории JavaScript, потому что это первый язык, который действительно сделал транспилинг мейнстримом, восходящим к первоначальному замыслу Брендона Айка в 1995 году о создании языка программирования, который был бы податливым, и транспиляторы стали бы очень важными.
В следующей версии JavaScript ES6 появилось множество новых возможностей, таких как обещания let и функции Const arrow spread syntax D structuring и т.д. Эти новые возможности стали огромным скачком вперед для разработчиков JavaScript, но разработчикам действительно трудно использовать их, потому что они не поддерживаются во многих старых браузерах, поэтому сегодня мы видим широкое использование таких вещей, как babel и typescript, потому что они могут быть нацелены на любой вкус Javascript, начиная с ES 3, а разработчики могут писать свой код с современными возможностями.
Еще одним значительным событием 2015 года стало появление ответной реакции React js. Он взял некоторые из концепций angularjs с декларативным пользовательским интерфейсом, но улучшил их однонаправленным потоком данных, неизменяемостью и использованием виртуального DOM, и это действительно фреймворк, который укрепил современные шаблоны декларативного пользовательского интерфейса, но есть много других фреймворков, конкурирующих за долю ума разработчиков, таких как angular view.
Это приводит нас в настоящее время к 2022 году; комитет сценариев ECMA регулярно обновляет JavaScript, и в настоящее время у нас есть ES 2022, который добавил несколько отличных новых функций в язык.
Если я чему-то и научился за эти годы, так это всегда делать ставку на JavaScript. Это язык, который неуклонно развивался с момента своего первоначального прототипа и имеет большое и разнообразное сообщество, не похожее ни на один другой язык программирования.
Спасибо, что прочитали эту статью; следите за мной, чтобы узнать больше.