История языка программирования JavaScript

Каталог статей / История программирования / История языка программирования JavaScript
Оглавление:
  1. Незаменимый JavaScript
  2. Начало интернета и первый браузер
  3. Предпосылки для языка сценариев
  4. Netscape приглашает Брендана Эйха
  5. Mocha – кодовое имя для языка JavaScript
  6. Успех Брендана Эйха
  7. Официальное появление JavaScript
  8. JavaScript vs Jscript & Visual Basic Script
  9. Новый движок или спецификация JavaScript
  10. Стандартизация JavaScript
  11. Название стандарта ECMAScript
  12. Стандарт ECMAScript и браузерная конкуренция
  13. Развитие стандарта ECMAScript
  14. Заключение

Незаменимый JavaScript

JavaScript logo JavaScript в настоящее время считается наиболее часто используемым языком. Созданный как вспомогательный язык сценариев JavaScript стал самым широко используемым языком в мире. JavaScript имеет долгую и сложную историю появления: в ней есть сотрудничество и конкуренция.

Название JavaScript объединяет язык и человека Брендана Эйха (Brendan Eich) как его создателя и маркетолога. JavaScript создавался простым, чтобы любой, обладающий небольшими знаниями программирования мог написать приложение для браузера. JavaScript сегодня — это клиентские сценарии, серверные (Node.js) и мобильных приложения (React).

История появления JavaScript вызывает почтительное уважение к его создателю Брендану Эйху, который практически в одиночку отстаивал и совершенствовал свое детище в жёсткой конкуренции с огромной командой Microsoft.

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

JavaScript в течение более 20 лет показывает заметную стабильность популярности: на рисунке таблица рейтингов языков программирования TIOBE за более чем 20 лет.

JavaScript индекс TIOBE
Индексы TIOBE для языка JavaScript

Начало интернета и первый браузер

Концепция и основные технологии Всемирной паутины были разработаны в 1989–1991 годах Тимом Бернерсом-Ли (Tim Berners-Lee) в Европейском Центре ядерных исследований, расположенном вблизи Женевы. Веб-технологии Бернерса-Ли несколько лет циркулировали только в сообществе физиков, не привлекая внимания за пределами этого сообщества.

В 1992–1993 гг. студент Марк Андриссен (Marc Andreessen) и программист Эрик Бина (Eric J. Bina), работавшие в Иллинойсском Университете в Национальном центре суперкомпьютерных приложений (National Center for Supercomputing Applications, NCSA) городов Урбана-Шампейн штата Иллинойса США, разработали первый веб-браузер Mosaic.

Благодаря простой установке и графическому интерфейсу NCSA Mosaic вывел технологию будущего Интернета за пределы сообщества физиков. Mosaic был быстро распространен, и к началу 1994 года началось повальное увлечение браузерами.

Первый браузер NCSA Mosaic
Первый браузер NCSA Mosaic

Предпосылки для языка сценариев

Джим Кларк, основатель Silicon Graphics Inc., увидев ошеломляющий успех браузера Mosaic, нанимает Марка Андриссена и Эрика Бина. В апреле 1994 года они становятся соучредителями компании, получившей название Netscape Communications Corporation. Компания с нуля разработала усовершенствованный браузер похожий на Mosaic.

Netscape Navigator позволял ускорить просмотр веб-страниц, особенно для пользователей с ограниченной пропускной способностью. Текст страницы загружался в первую очередь и не прерывая просмотр страницы, в фоновом режиме постепенно загружались изображения. К началу 1995 года браузер Netscape Navigator быстро вытеснил Mosaic.

Netscape Navigator 1.0
Netscape Navigator 1.0

Веб-технология Тима Бернерса-Ли была построена на использовании декларативного языка HTML разметки документов и представления их в виде статических веб-страниц. В противоположность этому интернет-отрасль проявляла значительный интерес к созданию языков сценариев, позволяющих конечным пользователям управлять работой приложений в браузере. По мере того, как Netscape Navigator расширял аудиторию WWW, важным вопросом стало, должны ли и каким образом сценарии интегрироваться в веб-страницы.

Netscape приглашает Брендана Эйха

Brendan Eich
Брендан Эйх
В начале 1995 года Брендан Эйх (Brendan Eich), талантливый американский программист, занимавшийся разработкой и внедрением специализированных языков программирования в компаниях Silicon Graphics и MicroUnity, был приглашен в компанию Netscape для внедрения скриптового языка в браузер Netscape Navigator.

Первоначально Эйх не думал, что ему придется писать новый язык с нуля. Кандидатами на язык сценариев веб-страниц были различные языки программирования: Scheme, Perl, Python, Tcl и проприетарный язык Microsoft Visual Basic. Брендан Эйх планировал реализовать в браузере функциональный язык Scheme. Но когда Эйх присоединился к Netscape он обнаружил сложную ситуацию с маркетингом продукта и языком программирования.

В начале 1995 года Sun Microsystems начала партизанскую маркетинговую кампанию в отношении еще не выпущенного языка Java. Sun и Netscape быстро договорились друг с другом, чтобы заключить сделку , согласно которой Java будет интегрирована в Netscape 2. Брендан Эйх вспоминает: «когда Sun Microsystems публично объявила о Java, Netscape объявила о своем намерении лицензировать технологию Sun Java для использования в браузере».

Mocha – кодовое имя для языка JavaScript

В начале 1990-х годов Netscape столкнулась с проблемой выбора языка сценариев для своих продуктов. Scheme, Perl, Python, Tcl и Visual Basic не подходили по различным причинам. Тогда руководство компании решило разработать новый «little language», дополняющий Java.

Большинство сотрудников компаний Netscape и Sun Microsystems возражали против создания нового языка. Но Java был слишком сложен для использования веб-дизайнерами и другими людьми, не являющимися программистами. К тому же Microsoft уже предоставляла конкурентный Visual Basic для любителей на основе компонентов профессионального Visual C++.

Марк Андриссен предложил временное имя Mocha для нового языка сценариев, в надежде, что со временем этот язык будет переименован в «JavaScript». По словам Брендана Эйха связь с Java дала бы неизвестному JavaScript мощный маркетинговый толчок.

Mocha должен быть настолько прост в использовании, чтобы любой мог написать несколько строк прямо в HTML-документе. Брендан Эйх исследовал различные "педагогические" языки программирования, и все согласились, что Mocha должен быть объектно-ориентированным, но без классов как Java.

Высшее руководство Sun и Netscape акцентировало требование, чтобы Mocha «выглядел как Java», явно исключая что-либо похожее на BASIC. В итоге внешнее сходство с Java повиляло как на дизайн модели object, так и на семантику «примитивных типов», таких как boolean, int, double и string.

Однако оставалось сомнение: есть ли у Netscape опыт для создания эффективного скриптового языка и его готовности к бета-тестированию. Задача Брендана Эйха заключалась в том, чтобы доказать возможность создания нового языка.

Успех Брендана Эйха

В связи с неизбежным анонсом Java Брендан Эйх считал, что время имеет значение, а демонстрация практического результата перевесит любые теоретические доводы («синица в руке стоит многих гипотез в кустах»). И поэтому он создал прототип первой реализации Mocha всего за десять дней напряженной работы в начале мая 1995 года. Эта работа была сделана в спешке, чтобы успеть к сроку демонстрации осуществимости проекта. Впоследствии Эйх вспоминал: «Я мало спал».

Демонстрация состояла из минимально реализованного языка, интегрированного в пре-альфа-браузер Netscape 2. Прототип Брендана Эйха был разработан на рабочей станции Silicon Graphics Indy Unix. В прототипе использовался написанный от руки лексер (lexer) и рекурсивно-нисходящий парсер (parser). Синтаксический анализатор выдавал инструкции в байт-коде, а не дерево синтаксического анализа. Интерпретатор байт-кода был простым и медленным.

По истечении десяти дней прототип был продемонстрирован на собрании всего инженерного персонала Netscape. Это был успех, который вызвал огромный оптимизм по поводу выпуска более полной и полностью интегрированной версии Mocha для Netscape Navigator 2, первая бета-версия которого была запланирована на сентябрь.

Летом 1995 года Брендан Эйх сосредоточился на более полной интеграции Mocha в браузер. Для этого потребовалось разработать и реализовать API- интерфейсы, позволяющие программам Mocha взаимодействовать с веб-страницами.

Демонстрация работы Mocha
Демонстрация работы Mocha

Официальное появление JavaScript

Впервые JavaScript под названием «LiveScript» был представлен публике в сентябре 1995 года как часть первой бета-версии Netscape Navigator 2.0. Набор функций JavaScript 1.0 был переработкой того, что работало или почти работало в реализации Mocha в августе. Набор функций был неполным по сравнению с предполагаемым дизайном языка и демонстрировал некоторые проблемные ошибки, которые Брендан Эйх исправлял на протяжении всего процесса выпуска Navigator 2.0.

4 декабря 1995 г. компании Netscape Communications Corporation и Sun Microsystems официально объявили о выпуске JavaScript, открытом кроссплатформенном объектном языке сценариев для разработки приложений в корпоративных сетях и Интернете. 28 ведущих в отрасли организаций одобрили JavaScript как открытый стандартный объектный язык сценариев.

Netscape и Sun пытались наладить тесную связь брендов между языками Java и JavaScript, даже несмотря на то, что их технические разработки были похожи лишь внешне. Сходство названий и его значение, что языки тесно связаны, было постоянным источником путаницы.

В интервью, незадолго до выпуска версии JavaScript 1.0, Брендан Эйх повторил официальное позиционирование JavaScript как дополнение к Java: «Я надеюсь, что он [JavaScript] будет реализован другими поставщиками на основе спецификации, над которой мы с Биллом Джоем работаем. Я бы хотел, чтобы он оставался небольшим, но стал повсеместным в Интернете как излюбленный способ склеивания элементов HTML и действий над ними вместе с апплетами Java и другими компонентами».

JavaScript 1.0 был простым динамически типизируемым языком, поддерживающим числовые, строковые, логические значения и тип данных объект. Синтаксически JavaScript принадлежал к семейству C. Программный код встраивался непосредственно в HTML-файлы. JavaScript 1.0 был очень простым языком и в нем не имелось некоторых функций, отсутствие которых, удивит современных JavaScript-программистов, например:
операторов: do-while, switch, ===, try-catch-finally, typeof, void, delete, in, instanceof;
HTML тег <script> не имел атрибута src;
отсутствовали регулярные выражения;
отсутствовали литералы массива.

JavaScript vs Jscript & Visual Basic Script

Сразу же после публичного объявления о JavaScript, Microsoft заявила, что намерена сделать Visual Basic Script стандартом для создания веб-приложений Всемирной паутины. Вместе с этим Microsoft все же официально объявила и о поддержке JavaScript: … «Благодаря встроенной поддержке сценариев Visual Basic и JavaScript Microsoft Internet Explorer 3.0 предоставляет наиболее полные и независимые от языка сценариев возможности»…

Работа над тем, что впоследствии стало JScript, началась в октябре 1995 года в команде Microsoft Internet Explorer (IE). Сотрудники Microsoft Велланд и МакКелви упаковали систему сценариев, включая поддержку как JScript, так и Visual Basic Script, в виде встраиваемого компонента, который стал известен как Active Scripting. Этот компонент был выпущен в 1996 году как часть IE3 и веб-сервера Microsoft IIS, где он предоставлял технологию сценариев на стороне сервера для Active Server Pages (ASP).

Команда IE была очень сосредоточена на конкуренции с Netscape. Они надеялись, что отладчик сценариев, который был частью Active Scripting, привлечет веб-разработчиков JavaScript к IE, поскольку у Netscape не было отладчика JavaScript. Но они также понимали, что совместимость веб-сайтов с Netscape Navigator будет иметь важное значение для принятия Internet Explorer обществом. Команда IE тестировали разрабатываемую версию IE 3 на тысячах веб-сайтов, использующих JavaScript, и сравнивали результаты с Netscape Navigator.

На протяжении всего процесса разработки JScript постоянной проблемой было отсутствие надлежащей спецификации языка. Велланд вспоминал, что во время его разработок Томас Рирдон, который руководил общей разработкой IE3, использовал любую возможность, чтобы критиковать своих коллег в Netscape за отсутствие спецификации языка JavaScript.

Новый движок или спецификация JavaScript

Весь 1995 и большую часть 1996 года Брендан Эйх был единственным разработчиком Netscape, работавшим полный рабочий день над движком JavaScript. Релиз JavaScript 1.1 от августа 1996г. в версии Netscape 3.0 по-прежнему состоял в основном из кода прототипа 10-дневного Mocha 1995 года. После этого релиза Эйх почувствовал, что пришло время погасить технический долг движка и поработать над тем, чтобы сделать JavaScript «более чистым языком».

Но руководство Netscape хотело, чтобы он работал над спецификацией языка. Они были чувствительны к критике со стороны Microsoft по поводу отсутствия спецификации и ожидали, что неминуемое начало деятельности по стандартизации потребует спецификацию в качестве исходных данных.

Брендан Эйх сопротивлялся: он хотел начать с повторной реализации Mocha. Поскольку чтобы написать спецификацию, ему пришлось бы тщательно изучить реализацию Mocha. Он подумал, что было бы наиболее эффективно переписать Mocha. Это также позволило бы ему исправить первоначальные ошибки проектирования чтобы они не закрепились в спецификации.

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

Когда Эйх вернулся в офис, новый движок заменил Mocha. Новый движок назвали SpiderMonkey (в настоящее время движок веб-браузера Mozilla Firefox). Брендан Эйх продолжил улучшать язык как JavaScript 1.2 для выпуска в составе Netscape 4.0 в 1997 году. Язык JavaScript 1.2 и встроенная библиотека, реализованные на SpiderMonkey, были значительно улучшены плюс были добавлены регулярные выражения.

Большинство дополнений библиотеки были вдохновлены функциями, доступными на других популярных языках. Методы concat и slice для Array были вдохновлены операциями последовательности в Python . Array push, pop, shift, unshift и splice были напрямую смоделированы на одноименных функциях массива Perl. Python также вдохновил методы String concat, slice и search, в то время как String match, replace и substr пришли из Perl. Java вдохновил charCodeAt. Синтаксис и семантика сопоставления строк регулярных выражений были заимствованы из Perl. Дополнения на уровне операторов предоставляют ранее отсутствующие операторы, которых ожидают программисты, знакомые с языками семейства C.

Стандартизация JavaScript

Уже было ясно, что требуются стандарты для обеспечения совместимости веб-страниц в различных веб-браузерах. Сначала Netscape и Sun планировали предложить JavaScript консорциуму W3 (W3C) и Инженерной группе Интернета (IETF) в качестве открытого стандарта языка сценариев Интернета. Однако ни W3C, ни IETF не были подходящей площадкой для создания независимой от поставщика спецификации JavaScript.

Поскольку Microsoft серьезно относилась к конкуренции браузеров, Netscape и Sun опасались, что Microsoft может попытаться доминировать в разработке стандартов веб-скриптов и переориентировать ее на основу языка Visual Basic. Весной 1996 года компании Netscape и Sun начали поиск признанной организации по разработке стандартов, под эгидой которой можно было бы разработать стандарт JavaScript с участием, но без доминирования Microsoft.

Sun считала, что Ecma International доказала свою независимость, опубликовав стандарт Windows API вопреки возражениям Microsoft. Netscape официально подала заявку в Ecma в качестве Ассоциированного члена. Ecma использует числовые обозначения для своих технических комитетов, и следующим доступным номером было число 39.

В декабре 1996 года Генеральная ассамблея Ecma на своем полугодовом собрании одобрила создание TC39 и техническое задание проекта на JavaScript. В то же время Microsoft присоединилась к Ecma в качестве обычного члена. Решение о том, что TC39 будет разрабатывать только стандарты, независимые от платформы/хост-среды, стало и остается одним из основных его принципов.

Netscape представила Ecma предварительный проект Спецификации языка JavaScript в качестве одного из базовых документов по стандартизации. Компания Borland презентовала серверную реализацию JavaScript и JavaScript IDE. Microsoft представила спецификацию языка JScript 0.1 только на второй день с целью более тщательной ее доработки. Спецификация Microsoft была выбрана комитетом в качестве базового документа для стандартизации JavaScript.

После трех заседаний комитета TC39, в июне 1997 года Генеральная ассамблея Ecma International согласилась опубликовать проект стандарта Ecma Standard ECMA-262, 1-е издание после некоторых незначительных редакционных изменений. И 17 сентября 1997 года ECMA-262, 1-е издание было выпущено для публикации.

Название стандарта ECMAScript

С самого начала процесса стандартизации было понятно, что название для стандартного языка веб-браузеров будет проблематичным делом. Первоначальное название Netscape, «LiveScript», было заменено на «JavaScript» в рамках стратегического партнерства с Sun. Sun зарегистрировала торговую марку «JavaScript» и предоставила лицензию компании Netscape. Компания Sun агрессивно защищала свои товарные знаки, связанные с Java. Казалось маловероятным, что Sun передаст контроль над торговой маркой «JavaScript» организации по стандартизации.

На первом заседании TC39 участники согласились использовать «ECMAScript» вместо «JavaScript» в качестве имени стандарта до тех пор, пока не будет найдено более подходящее имя. Было предложено множество имен кандидатов на стандарт: LiveScript, ScriptJ, EZScript, Xpresso/Expresso/Espresso. Генеральная ассамблея Ecma одобрила стандарт с именем-заполнителем «ECMAScript» и в сентябре 1997 года комитет TC39 опубликовал стандарт, используя «ECMAScript» в качестве имени языка.

Брендан Эйх позже выразил свое мнение по поводу названия: «ECMAScript всегда был нежелательным торговым названием, которое звучит как кожное заболевание». И в мире в целом по-прежнему используется название «JavaScript» для обозначения языка, реализуемого браузерами, и это имя закреплено в спецификации HTML- элемента <script>.

16 декабря 1999 года Генеральная ассамблея Ecma одобрила спецификацию как ECMA-262, 3-е издание. Основные браузеры поставляли версии, совместимые с ES3, в течение 2000 г.: Microsoft JScript 5.5 поставлялась как часть IE 5.5 в июле 2000 г., а Netscape поставляла JavaScript 1.5 как часть Netscape 6 в ноябре 2000 г. ECMA-262 3-е издание не было заменено более новым выпуском вплоть до декабря 2009 года.

Стандарт ECMAScript и браузерная конкуренция

После публикации третьего издания стандарта ECMAScript JavaScript получил широкое распространение во Всемирной паутине, где он стал языком программирования, поддерживаемым практически всеми веб-браузерами. Во время браузерных войн Netscape и Microsoft пытались превзойти друг друга в инновациях, вводя новые возможности веб-сайтов.

Процесс разработки стандартов продолжался несколько лет: ECMAScript 2 в июне 1998 г. и ECMAScript 3 в декабре 1999 г. Тем временем Microsoft завоевывала все более доминирующее положение на рынке браузеров. К началу 2000-х годов доля рынка Internet Explorer достигла 95%. Это означало, что JScript стал стандартом де-факто для сценариев на стороне клиента в Интернете.

Работа над ECMAScript 4 началась в 2000 г. Первоначально Microsoft участвовала в процессе разработки стандартов и реализовала некоторые предложения на своем языке JScript, но в конце концов прекратила сотрудничество с Ecma.

Постепенный отказ от активной разработки браузеров Netscape (после ее приобретения другой компанией) и потеря конкурентного стимула развития Microsoft IE (после того, как он достиг доминирующего положения на рынке) создало возможность для появления новых браузеров.

Альтернативные браузеры с продвинутым интерфейсом, Mozilla Firefox (2004 г.), Opera (2005 г.), Apple Safari (2003г.) и Google Chrome (2008 г.), начали постепенно завоевывать значительную долю рынка. В отличие от IE молодые браузеры оказались более дружелюбными и внимательными к пользователям и разработчикам сценариев на JavaScript.

Развитие стандарта ECMAScript

С течением времени стабильность Интернет-сети улучшилась. Вскоре крупные поставщики программного обеспечения обратили внимание на Интернет как на серьезную платформу для разработки приложений.

Но стремление разработчиков использовать Интернет привело к совершенно новой проблеме для комитета ECMAScript: со всех сторон посыпались новые идеи и амбициозные предложения увязли в проекте стандарта ECMAScript 4. Попытка определить 4-е издание длилась почти десять лет.

По мере того, как сложность проекта росла, производители браузеров начали беспокоиться, что внедрение всего стандарта ECMAScript 4 становится неосуществимым, а стандарт, который невозможно реализовать, практически бесполезен.

В августе 2008 года, после нескольких месяцев споров, комитет ECMAScript официально свернул разработку стандарта ECMAScript 4. Его место занял гораздо менее амбициозный проект, получивший название ECMAScript 3.1, который в впоследствии превратился в стандарт ECMAScript 5.

Как отметил Дуглас Крокфорд (один из ведущих специалистов по разработке ECMAScript) ECMAScript 4 был неудачей, но необходимой. Это позволило избежать дорогостоящих ошибок и привело к продуктивному компромиссу. ECMAScript 5 добавил к языку важные новые спецификации, такие как формальное определение «строгого» языка ECMAScript. Строгий ECMAScript 5 вынуждает программистов отказываться от устаревших методов и использовать более современные подходы.

EcmaScript поддерживается в браузерах начиная с версии ES5.1. Современные браузеры поддерживают последние версии стандарта EcmaScript, такие как ES6 (или ES2015), ES7 (или ES2016) и ES8 (или ES2017).

Заключение

JavaScript — это мощный язык программирования, который используется для создания веб-приложений, игр, настольных приложений для мобильных устройств и многого другого. Он является одним из самых популярных языков программирования в мире благодаря своей гибкости, масштабируемости и высокой производительности.

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

Список использованной литературы

  • Книга «JavaScript: The First 20 Years»,
    авторы: Аллен Вирфс-Брок (Allen Wirfs-Brock), Брендан Эйх (Brendan Eich)
  • https://brendaneich.com
  • https://262.ecma-international.org
  • https://en.m.wikipedia.org/wiki
  • https://www.infoworld.com
  • https://thenewstack.io
  • https://developer.mozilla.org
  • https://spidermonkey.dev
  • https://webdevelopmenthistory.com
  • https://www.w3schools.com

Тема: «История языка программирования JavaScript»

👀 2533 04 апреля 2023 г.