Введение в JavaScript разработку
JavaScript, вероятно, является одним из самых важных языков программирования на сегодняшний день. Благодаря развитию веба JavaScript достиг высот, которых ему не сулили. Этот раздел представляет собой обзор языка JavaScript его истории, синтаксиса и клиентского окружения.
2. История JavaScript
2.1 Все началось в 90-е
События, в результате которых появился JavaScript, разворачивались в течение шести месяцев, с мая по декабрь 1995 года. Компания Netscape Communications уверенно прокладывала себе путь в области веб-технологий. Её браузер Netscape Communicator успешно отвоевывал позиции у NCSA Mosaic, первого популярного веб-браузера. Netscape была создана людьми, принимавшими участие в разработке Mosaic в ранние 90-е. Теперь, с деньгами и независимостью, у них было всё необходимое для поиска способов дальнейшего развития веб-технологий. Именно это послужило толчком для рождения JavaScript.
И тут в нашей истории появляется Брендан Айк, отец JavaScript. Айк должен был разработать для Netscape «Scheme для браузера». Scheme — это динамичный, мощный и функциональный диалект языка программирования Lisp с максимально упрощённым синтаксисом. Вебу требовалось что-то подобное: простое в освоении, динамичное, немногословное и мощное. Айк не стал упускать шанса поработать над тем, что ему нравилось, и присоединился к команде.
Первая версия JavaScript заложила все те фундаментальные особенности, которыми этот язык знаменит и поныне. В частности, его объектная модель и функциональные особенности уже присутствовали в первой версии.
Первой большой переменой для JavaScript после его выпуска стала стандартизация ECMA. ECMA — ассоциация, созданная в 1961 году с целью стандартизации информационных и коммуникационных систем.
Работа над стандартизацией JavaScript началась в ноябре 1996 года. Стандарту, над которым работала группа TC-39, был присвоен идентификационный номер ECMA-262. К тому моменту JavaScript активно использовался на многих веб-страницах.
Стандартизация стала для молодого языка не только важным шагом, но и серьезным вызовом. Она открыла JavaScript для большей аудитории и дала возможность сторонним разработчикам принимать участие в развитии языка. Она также помогла держать других разработчиков в рамках. В те времена бытовало опасение, что Microsoft или кто-либо ещё могут слишком сильно отклониться от оригинальной реализации языка, что могло привести к фрагментации.
Из-за проблем с торговой маркой ECMA не могла использовать JavaScript в качестве названия. После непродолжительных дебатов было решено, что описанный стандартом язык программирования будет назван ECMAScript. На сегодняшний день JavaScript это всего лишь коммерческое название ECMAScript.
Вторая версия, ECMAScript 2, была выпущена в июне 1998 года, чтобы исправить несостыковки между ECMA и стандартом ISO для JavaScript (ISO/IEC 16262) и не включала в себя никаких изменений самого языка.
Интересной особенностью этой версии JavaScript было то, что интерпретатор должен был самостоятельно решать, что делать с неотловленными ошибками (и в большинстве случаев оставленными как неклассифицированные). Причиной этому стало то, что исключения ещё не были частью языка на тот момент.
2.2 ECMAScript 3: первые большие изменения
ECMAScript 3 был выпущен в декабре 1999 года.
Эта версия ECMAScript получила очень широкое распространение. Все крупные браузеры того времени поддерживали её и продолжали поддерживать в течение многих лет. Даже сегодня многие транспайлеры в качестве выходного языка могут указывать этот стандарт. Это сделало ECMAScript 3 фундаментом для многих библиотек, даже когда были выпущены более поздние версии стандарта.
Хоть JavaScript использовался практически повсеместно, он всё ещё оставался клиентским языком программирования. Многие из его нововведений позволили ему приблизиться к тому, чтобы вырваться из этой клетки.
2.3 AJAX
AJAX (asynchronous JavaScript and XML) — технология, появившаяся на свет в годы ECMAScript 3. Хоть она и не являлась частью стандарта, Microsoft встроила некоторые расширения для JavaScript в Internet Explorer 5. Одним из таких расширений была функция XMLHttpRequest в виде управляющего элемента ActiveX XMLHTTP. Эта функция позволяла браузеру выполнять асинхронные HTTP-запросы серверу, тем самым позволяя страницам обновляться на лету. Хотя само название AJAX было придумано значительно позже, сама техника активно использовалась в то время.
Впервые термин AJAX был публично использован 18 февраля 2005 года в статье Джесси Джеймса Гарретта
2.4 ECMAScript 5: перерождение JavaScript
В 2008 году, после долгих боев, развернувшихся вокруг ECMAScript 4, сообщество сфокусировалось на работе над ECMAScript 3.1, отправив ECMAScript 4 на свалку. В 2009 году ECMAScript 3.1 был полностью завершён и одобрен всеми участниками комитета. Так как ECMAScript 4 считался своеобразным вариантом ECMAScript несмотря на отсутствие хоть какого-либо релиза, было решено переименовать ECMAScript 3.1 в ECMAScript 5, чтобы избежать недоразумений
ECMAScript 5 стал одной из самых поддерживаемых версий JavaScript, став также целью компиляции многих транспайлеров. ECMAScript 5 получил полную поддержку в браузерах Firefox 4 (2011), Chrome 19 (2012), Safari 6 (2012), Opera 12.10 (2012) и Internet Explorer 10 (2012).
ECMAScript 5 получил обновление в 2011 году под названием ECMAScript 5.1. Этот релиз вносил ясность в некоторые неоднозначные пункты стандарта, но никаких новых возможностей в нем не было. Все новые возможности были запланированы для следующего большого релиза ECMAScript.
ECMAScript 6 (2015) и 7 (2016): универсальный язык программирования
ECMAScript 6, позже переименованный в ECMAScript 2015, должен был принести большие перемены. Почти все обновления, так или иначе влиявшие на синтаксис, были отложены именно для этой версии. К 2015 году комитет, наконец, смог побороть все внутренние разногласия, и ECMAScript 6 увидел свет. Большинство производителей браузеров уже работали над поддержкой этой версии, однако до сих пор не все браузеры имеют полную совместимость с ECMAScript 2015.
Краткий список новых возможностей включает в себя:
— Let (лексическая) и const (неизменяемая) привязки
— Стрелочные функции (короткие анонимные функции) и лексическое this
— Классы (синтаксический сахар поверх прототипов)
— Улучшения объектных литералов (вычисляемые ключи, укороченные определения методов и т.д.)
— Шаблонные строки
— Промисы
— Генераторы, итерируемые объекты, итераторы и for..of
— Параметры функций по умолчанию и оператор rest
— Spread-синтакис
— Деструктуризация
— Модульный синтаксис
— Новые коллекции (Set, Map, WeakSet, WeakMap)
— Прокси и Reflect
— Тип данных Symbols
— Типизированные массивы
— Наследование классов
— Оптимизация хвостовой рекурсии
— Упрощённая поддержка Unicode
— Двоичные и восьмеричные литералы
Все эти возможности открыли JavaScript для ещё большего количества программистов и внесли существенный вклад в большое программирование.
В 2016 году увидело свет небольшое обновление ECMAScript. Эта версия стала результатом нового процесса подготовки, принятого в TC-39. Все новые предложения должны пройти через четыре стадии. Предложение, достигшее четвёртой стадии, имеет все шансы быть включенным в следующую версию ECMAScript (однако комитет имеет право отложить его для более поздней версии). Таким образом, каждое предложение разрабатывается индивидуально (разумеется, с учётом его взаимодействия с другими предложениями), не тормозя разработку ECMAScript.
2.5 Итоги
JavaScript — это язык, который используется в неисчислимом множестве работающих веб-проектов, и он, при этом, постоянно обновляется. Процесс этот отлично организованный и сбалансированный.
3. Классификация
1. Cценарный
2. Высокоуровневый язык
3. Динамическая типизация
Статическая / динамическая типизация. Статическая определяется тем, что конечные типы переменных и функций устанавливаются на этапе компиляции. Т.е. уже компилятор на 100% уверен, какой тип где находится. В динамической типизации все типы выясняются уже во время выполнения программы.
4. Слабая типизация
Сильная / слабая типизация (также иногда говорят строгая / нестрогая). Сильная типизация выделяется тем, что язык не позволяет смешивать в выражениях различные типы и не выполняет автоматические неявные преобразования, например нельзя вычесть из строки множество. Языки со слабой типизацией выполняют множество неявных преобразований автоматически, даже если может произойти потеря точности или преобразование неоднозначно.
5. Неявная типизация
Явная / неявная типизация. Явно-типизированные языки отличаются тем, что тип новых переменных / функций / их аргументов нужно задавать явно. Соответственно языки с неявной типизацией перекладывают эту задачу на компилятор / интерпретатор.
6. Не имеющий средств ввода-вывода
7. Автоматическое управление памятью
8. Функции как объекты первого класса
9. Мультипарадигмальный:
— Императивная
— Процедурная
— Структурная
— Аспектно-ориентированное программирование
— Объектно-ориентированная(Прототипно-ориентированная)
— Декларативная
— Чистота функции(но не чистота языка)
— Функциональная
— Событийно-ориентированное
Частичная поддержка
— Модульность
— Рефлексивность
— Полиморфизм
— Реактивное
4. Окружение
Коллекция переменных и их значений, которая существует в определённый момент, называется окружением. Когда программа запускается, окружение не пустое. Там всегда есть переменные, являющиеся частью программного стандарта, и большую часть времени там есть переменные, помогающие взаимодействовать с окружающей системой. К примеру, в браузере есть переменные и функции для изучения состояния загруженной веб-страницы и влияния на неё, для чтения ввода с мыши и клавиатуры.
4.1 Window
Сам по себе язык JavaScript не предусматривает работы с браузером.
На рисунке ниже схематически отображена структура, которая получается если посмотреть на совокупность браузерных объектов с «высоты птичьего полёта».
Как видно из рисунка, на вершине стоит window.
4.2 JS/BOM/DOM
5. Лексическая структура
5.1 Набор символов
При написании программ на JavaScript используется набор символов Юникода. Юникод является надмножеством кодировок ASCII и Latin-1 и поддерживает практически все письменные языки, имеющиеся на планете. Стандарт ECMAScript 3 требует, чтобы реализации JavaScript обеспечивали поддержку стандарта Юникода версии 2.1 или выше, а стандарт ECMAScript 5 требует, чтобы реализации обеспечивали поддержку стандарта Юникода версии 3 или выше.
5.2 Чувствительность к регистру
JavaScript – это язык, чувствительный к регистру символов. Это значит, что ключевые слова, имена переменных и функций и любые другие идентификаторы языка должны всегда содержать одинаковые наборы прописных и строчных букв. Например, ключевое слово while должно набираться как «while», а не «While» или «WHILE». Аналогично online, Online, OnLine и ONLINE – это имена четырех разных переменных.
5.3 Пробелы, переводы строк и символы управления форматом
JavaScript игнорирует пробелы, которые могут присутствовать между лексемами в программе. Кроме того, JavaScript также по большей части игнорирует символы перевода строки (за одним исключением). Поэтому пробелы и символы перевода строки могут без ограничений использоваться в исходных текстах программ для форматирования и придания им удобочитаемого внешнего вида.
5.4 Экранированные последовательности Unicode
5.5 Cинтаксис комментариев
Комментарии являются важной частью любой программы. Они помогают разобраться в действиях программы как разработчику, так и любому другому человеку, читающему код. Интерпретатор игнорирует все, что помечено в программе как комментарий, поэтому комментарии не включаются в содержимое исполняемого файла и никак не влияют на ход исполнения программы.
JavaScript поддерживает два способа оформления комментариев. Любой текст между символами // и концом строки рассматривается как комментарий и игнорируется JavaScript. Любой текст между символами /* и */ также рассматривается как комментарий. Эти комментарии могут состоять из нескольких строк, но немогут быть вложенными.
Комментарии полезны почти всегда, хотя многие программисты не используют их в полном объеме. Если вы решили не прибегать к помощи комментариев, то стоит помнить о том, что не каждый человек может разобраться в вашем коде так же легко, как это удается вам; возможно, что ваши действия требуют дополнительного разъяснения. Кроме того, по прошествии некоторого времени вы сами можете забыть некоторые детали алгоритма своей программы. Используйте комментарии так, чтобы человек, читающий листинг вашей программы, понимал, что делает эта программа. Детали алгоритма можно понять из самих операторов, поэтому задача комментариев — дать общие пояснения функционирования отдельных блоков программы.
5.6 Зарезервированные слова
JavaScript резервирует ряд идентификаторов, которые играют роль ключевых слов самого языка. Эти ключевые слова не могут служить идентификаторами в программах:
- break
- delete
- function
- return
- typeof
- case
- do
- if
- switch
- var
- catch
- else
- in
- this
- void
- continue
- false
- instanceof
- throw
- while
- debugger
- finally
- new
- true
- with
- default
- for
- null
JavaScript также резервирует некоторые ключевые слова, которые в настоящее время не являются частью языка, но которые могут войти в его состав в будущих версиях. Стандарт ECMAScript 5 резервирует следующие слова:
- class
- const
- enum
- export
- extends
- import
- super
Ниже приводится дополнительный список слов, которые допустимы в обычном программном коде JavaScript и являются зарезервированными в строгом режиме:
- implements
- let
- private
- public
- yield
- interface
- package
- protected
- static
В строгом режиме также вводится ограничение на использование следующих идентификаторов. Они не являются зарезервированными словами в полном понимании, но они не могут использоваться в качестве имен переменных, функций или параметров:
- abstract
- double
- goto
- native
- static
- boolean
- enum
- implements
- package
- super
- byte
- export
- import
- private
- synchronized
- char
- extends
- int
- protected
- throws
- class
- final
- interface
- public
- transient
- const
- float
- long
- short
- volatile
В языке JavaScript имеется множество предопределенных глобальных переменных и функций, имена которых не следует использовать для создания своих собственных переменных и функций:
- arguments
- encodeURI
- Infinity
- Number
- RegExp
- Array
- encodeURIComponent
- isFinite
- Object
- String
- Boolean
- Error
- isNaN
- parseFloat
- SyntaxError
- Date
- eval
- JSON
- parseInt
- TypeError
- decodeURI
- EvalError
- Math
- RangeError
- undefined
- decodeURIComponent
- Function
- NaN
- ReferenceError
- URIError
6. Strict Mode
Строгий режим принёс ряд изменений в обычную семантику JavaScript. Во-первых, строгий режим заменяет исключениями некоторые ошибки, которые интерпретатор JavaScript ранее молча пропускал. Во-вторых, строгий режим исправляет ошибки, которые мешали движкам JavaScript выполнять оптимизацию — в некоторых случаях код в строгом режиме может быть оптимизирован для более быстрого выполнения, чем код в обычном режиме. В-третьих, строгий режим запрещает использовать некоторые элементы синтаксиса, которые, вероятно, в следующих версиях ECMAScript получат особый смысл.
Брендан Эйх о создании JavaScript за 10 дней и о том, что сегодня он сделал бы по-другому
Миллионы современных разработчиков активно используют язык программирования, который родился буквально за 10 дней в период экспоненциального развития интернета. Создатель JavaScript Брендан Эйх не так давно заново обратился к истокам созданного им языка и рассказал о том, как семена, посеянные им в 1995 году, теперь наконец-то взошли.
Брендан Эйх на dotJS conference
Итак, далекий 1995 год, совершенно другая эпоха. Да что уж там говорить — практически другой мир! Тогда Netscape даже рассматривала совокупность браузера и сервера как новый вид распределенной операционной системы, вспоминает журнал Computer. Браузеры обладали потенциалом, позволявшим разработчикам охватить пользователей на любой платформе — Windows, Mac или Linux, — но им не хватало еще одного важного ингредиента, «своего» языка программирования. Netscape очень хотелось, чтобы, помимо Java, появился еще один язык, который смог бы увлечь многих начинающих разработчиков — так же как в свое время Visual Basic от Microsoft.
Статья из журнала Computer
Статья из журнала Computer
Вся технологическая индустрия тогда была охвачена желанием поспеть за поразительной популярностью интернета. «В те времена темпы развития веб-инноваций были бешеными, а Microsoft и вовсе сделала Интернет главным приоритетом своей новой операционной системы Windows 95 — в ответ на появление браузера и серверных продуктов Netscape.» Тогда 34-летний Брендан Эйх и разработал первую версию языка, который впоследствии превратился в JavaScript, всего за 10 дней. (Свой доклад на конференции dotJS Эйх начал словами: «22 года назад, в мае месяце, я 10 дней упорно работал», добавив: «И мало спал»).
Эйх как нельзя лучше справился с этой работой, ведь в студенческие годы он уже писал языки программирования, «просто чтобы поэкспериментировать с синтаксисом». Эйх вспоминает, что когда он дошел до лексического анализа и языковых парсеров, то «сразу же влюбился в эти штуки, потому что с теоретической точки зрения все выглядело очень красиво и чисто. ». Еще до прихода в Netscape в компании Silicon Graphics он занимался языками для встроенных расширений инструментов сетевого мониторинга. (Кроме того, Эйх рассказывал своему интервьюеру: «Я делал это ради забавы, просто чтобы создавать свои собственные языки»).
По сути, именно основатель Silicon Graphics Джим Кларк впоследствии и создал Netscape, так что интерес к способностям Эйха в написании языков у него уже был. «Когда все только началось, меня тут же позвали поработать, но я вынужден был отказаться, поскольку участвовал тогда в другом стартапе — и занимался им еще целый год», — недавно рассказал Эйх в интервью InfoWorld.
Ровно через год Netscape таки удалось переманить Эйха к себе на работу многообещающей перспективой поработать над языком под названием Scheme. Идея у них была следующая: «Переходи к нам и реализуй Scheme для Netscape. Внедри этот язык программирования в браузер». Позже Эйх назовет Scheme «тем прекрасным исследовательским проектом, с которого все началось». Однако к тому времени, когда он полностью перешёл в Netscape, компания уже заключила сделку с Sun Microsystems, которая вовсю продвигала свой новоиспечённый язык Java. «И внезапно возникла такая картина: «Ну, мы не знаем, нужен ли нам Scheme. Мы вообще не уверены, что нам так уж нужен крохотный язык, который мы хотели у тебя заказать. Может быть, обойдемся только Java?».
Этот переломный момент Эйх запомнил на всю оставшуюся жизнь. Еще в 2012 году в интервью журналу Computer он говорил, что его начали теснить сразу по двум направлениям. «Мы предчувствовали, что Microsoft рано или поздно доберётся до Netscape, она ведь уже пыталась купить компанию в конце 94-го. А ещё у нас была какая-то странная история с Java, потому что даже в Netscape многие люди думали: «Ну, раз уж у нас есть Java, действительно ли нам позарез нужен ещё один язык?». Люди не видели пользы от языка-компаньона Visual Basic который, между тем, ориентировался на целую когорту программистов-любителей, дизайнеров и новичков в компьютерном мире.»
Brendan Eich | Gen Kanai | Flickr
«Но Марк Андреессен из Netscape, Билл Джой из Sun, я и некоторые другие убедились, что существует потребность в доступном языке, который можно внедрить непосредственно в веб-страницу», — рассказывал он InfoWorld. Или, как он пояснил для журнала Computer, «я писал что-то, что могли бы использовать люди, не представляющие, что такое компилятор. Скрипты на моем языке можно было просто запустить — и всё тут.
«Это было похоже на Basic. Именно на такой эффект мы и рассчитывали».
«Я получил приказ от отдела маркетинга сделать язык похожим на Java, но при этом не переборщить. Должен был получиться этакий непутевый младший брат Java. Его попутчик и компаньон».
Что было дальше
Как Эйх отреагировал на успех своего детища? «Когда проект начал набирать обороты, несмотря на многочисленные баги и поспешные решения, я был немного удивлён. Но шока у меня не было, потому что, если хорошенько подумать, все произошло по задуманному нами сценарию: раньше программисты могли написать веб-страницу, а теперь они могут ее запрограммировать!»
«JavaScript оказался настолько мощным, несмотря на все свои изъяны и спешку при разработке, потому что он мог напрямую управлять всеми функциями браузера, до которых так хотелось добраться веб-разработчикам». А с журналом Эйх поделился суровой правдой: «Как только продукт попадает в релиз, его баги или недоработки вскоре становятся его ключевыми особенностями, которые практически невозможно изменить безболезненно.»
«Да, из-за спешки я наделал целую кучу ошибок. Но важно другое: я предвидел, что написать язык без багов будет весьма сложно, поэтому я сделал его очень гибким и податливым. Вы всегда можете исправить проблему, если она появилась по вине JavaScript».
Как он сказал публике на dotJS: «JavaScript очень сложно найти замену. Он чем-то походит на доминантный ген. Как только он проявился, от него уже никак не избавиться».
В качестве примера он приводит «открытие» asm.js и говорит, что это ещё одна вещь, которой он чрезвычайно гордится. В нём используются битовые операторы, входившие в оригинальный JavaScript, которые теперь являются основой языка для программ высокой производительности. «Если бы этих операторов не было там с 1995 года, их было бы сложно добавить в будущем. А тот факт, что он был там с самого начала, означает, что теперь можно писать невероятно быстрые программы на JavaScript».
В интервью InfoWorld он сказал, что это и есть его «семя, заложенное в оригинальный JavaScript в те самые 10 майских дней 1995 года». 32-битные математические операторы JavaScript (известные как побитовые операторы) ведут свою родословную от языка программирования C — и от Java. В конечном итоге это привело к WebAssembly — способу преобразования инструкций в быстро исполняемый двоичный формат для виртуальных машин — и осознанию того, что в движке JavaScript «может быть два языка — старый язык, который я сделал с фигурными скобками, функциями и операторами сдвига, и этот новый язык, двоичный, не предназначенный для чтения или написания людьми. Но он может быть сгенерирован компилятором, а затем успешно выполнен».
Что бы он сделал по-другому
Спустя 23 года рефлексии, нашлось ли что-нибудь, что он сделал бы по-другому? Кто-то говорит, что он должен был отказаться работать в таком напряженном графике — или что он должен был внедрить в Netscape другой язык, например Perl, Python или Scheme — но всё это Эйху изменить не хочется. Он лишь жалеет, что не был более избирателен в отношении отзывов, полученных от первых штатных тестировщиков JavaScript.
«Припоминаю, было вот такое любопытное замечание: «Мне бы хотелось иметь возможность сравнивать число со строкой, которая содержит это число. И при этом я не не хочу менять свой код, чтобы преобразовать строку в число или число в строку. Мне просто нужно, чтобы это работало. Сделай, пожалуйста, так, чтобы оператор equals говорил: «О, это похоже на двойку, а это похоже на строку с числом два. Они в достаточной мере равны».
«И я это натворил. Об этом я сейчас горько сожалею, потому что это нарушает важное математическое свойство, свойство отношения эквивалентности. В результате пришлось добавить второй вид оператора равенства, когда мы стандартизировали JavaScript». Одним из тех, кто помог стандартизации JavaScript, был Гай Стил, один из соавторов Scheme. «Гай сказал мне: “Не парься на этот счет. В Lisp вообще целых пять видов операторов равенства. А мы просто добавим еще один»».
Годы размышлений и наблюдений заставили Эйха взглянуть на те 10 майских дней с другой стороны. «Когда я смотрю на то, что сделал всего за 10 дней, я вижу вовсе не язык, а крохотное семя. Это было мощное, пусть и отчасти компромиссное, но всё же сильное ядро, которое выросло в полноценный язык.»
Эйх также является соучредителем сообщества Mozilla (а также фонда Mozilla Foundation, который разрабатывает проекты с открытым исходным кодом, например, веб-браузер Firefox). В 2015 году он стал генеральным директором компании Brave Software, которая создала блокирующий рекламу веб-браузер под названием Brave (его аудитория по итогам 2021 года составила 50 млн пользователей в месяц). Всё это проистекает из его стремления к конфиденциальности, хотя в конце интервью Эйх шутит, что если проследить всё до самых истоков, то JavaScript является одним из базовых элементов, которые рекламодатели используют для веб-слежки.
«Так что теперь я, как могу, компенсирую это упущение», — говорит он, смеясь.
История языка программирования JavaScript
JavaScript в настоящее время считается наиболее часто используемым языком. Созданный как вспомогательный язык сценариев JavaScript стал самым широко используемым языком в мире. JavaScript имеет долгую и сложную историю появления: в ней есть сотрудничество и конкуренция.
Название JavaScript объединяет язык и человека Брендана Эйха (Brendan Eich) как его создателя и маркетолога. JavaScript создавался простым, чтобы любой, обладающий небольшими знаниями программирования мог написать приложение для браузера. JavaScript сегодня — это клиентские сценарии, серверные (Node.js) и мобильных приложения (React).
История появления JavaScript вызывает почтительное уважение к его создателю Брендану Эйху, который практически в одиночку отстаивал и совершенствовал свое детище в жёсткой конкуренции с огромной командой Microsoft.
В настоящее время JavaScript практически единственный мост, связывающий приложение в браузере и сервер. И даже после появления альтернатив, JavaScript в истории Интернета будет занимать почетное место первого браузерного языка программирования.
JavaScript в течение более 20 лет показывает заметную стабильность популярности: на рисунке таблица рейтингов языков программирования TIOBE за более чем 20 лет. Индексы 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
Предпосылки для языка сценариев
Джим Кларк, основатель Silicon Graphics Inc., увидев ошеломляющий успех браузера Mosaic, нанимает Марка Андриссена и Эрика Бина. В апреле 1994 года они становятся соучредителями компании, получившей название Netscape Communications Corporation. Компания с нуля разработала усовершенствованный браузер похожий на Mosaic.
Netscape Navigator позволял ускорить просмотр веб-страниц, особенно для пользователей с ограниченной пропускной способностью. Текст страницы загружался в первую очередь и не прерывая просмотр страницы, в фоновом режиме постепенно загружались изображения. К началу 1995 года браузер Netscape Navigator быстро вытеснил Mosaic. Netscape Navigator 1.0
Веб-технология Тима Бернерса-Ли была построена на использовании декларативного языка HTML разметки документов и представления их в виде статических веб-страниц. В противоположность этому интернет-отрасль проявляла значительный интерес к созданию языков сценариев, позволяющих конечным пользователям управлять работой приложений в браузере. По мере того, как Netscape Navigator расширял аудиторию WWW , важным вопросом стало, должны ли и каким образом сценарии интегрироваться в веб-страницы.
Netscape приглашает Брендана Эйха
Брендан Эйх В начале 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
Официальное появление 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: история, особенности, перспективы
Язык программирования JavaScript пользуется довольно высокой популярностью сегодня. Связано это с тем, что его можно использовать как для создания динамичности статических веб страниц, так и для написания полноценных приложений SPA и даже компьютерных игр. Правда, последнее сегодня реже встречается ввиду того, что игры пишутся на других языках.
Немного истории
Первые предпосылки для появления этого языка появились еще в 1992 году, когда была начата разработка скриптового встраиваемого языка Cmm (Си минус минус). Позже он был переименован в ScriptEase, так как название Си минус минус имело негативный оттенок. В целом. Перед тем, как язык обрел свое современное имя, его название менялось еще несколько раз.
В 1995 году Брендан Эйх получил задачу внедрить язык программирования в браузер Netscape. Изначально язык назывался Mocha, затем LiveScript. Наконец, он получил свое современное имя – JavaScript. Здесь разработчики пошли на хитрость. В то время, когда они занимались улучшением LiveScript, довольно большой популярностью пользовался язык Java. Для того, чтобы привлечь больше разработчиков для работы с новым языком, было решено использовать в его названии Java. В итоге получился JavaScript.
Последняя на сегодняшний день версия языка ES6 вышла в 2015 году. С ее появлением язык обрел вторую жизнь. Появились новые стандарты, а также возможность работы с константами. Претерпел изменения и сам код. Язык придерживается принципа сокращения кода при большей функциональности.
Особенности языка JS
К основным особенностям этого языка программирования относятся:
- Динамическая типизация. То есть тип данных будет определяться только тогда, когда переменной или const будет присваиваться ее значение.
- Гибкая работа с функциями. В JS функции можно не только выполнять, но еще и возвращать функции из функций, передавать функции в качестве параметров другим функциями и присваивать функции в качестве значения переменных.
- JavaScript поддерживается всеми современным браузерами.
- Объектно-ориентированное программирование. То есть это такая методология программирования, в которой вся программа представляется в виде совокупности объектов.
Помимо этого, важной особенностью JavaScript является его развитая инфраструктура. На сегодняшний день разработчики могут работать с большим количеством библиотек и фреймворков (наиболее популярными из них являются React, Angular и Vue), несколькими сборщиками, вспомогательными библиотеками (например, Lodash) и генераторами статических сайтов.
Что касается сфер применения, в первую очередь, язык JavaScript широко используется в веб-разработке. Причем работает он в сочетании с HTML и CSS. С помощью JS можно создавать любые браузерные приложения. Например, калькулятор расчета кредита, который можно видеть на сайтах большинства банков, также создан с помощью JavaScript.
Причем вся визуальная часть этого калькулятора – это сочетание HTML+CSS. То есть кнопки, диаграммы, ползунки – это статические элементы. С помощью JS все то анимируется, а также проводятся все основные расчеты.
Еще один пример – форма подписки или регистрации. Она создана на HTML+CSS. Однако взаимодействие с сервером обеспечивается именно благодаря JS. Помимо этого, на языке JavaScript можно создавать следующие программы и приложения:
- Разработка программного обеспечения для мобильных устройств (с помощью React Native).
- Разработка серверных решений с помощью Node.js.
- Создание десктопных приложений. JS используется, например, в приложениях, созданных компанией Adobe.
- Программирование бытовой техники и платежных терминалов.
Пример кода на JavaScript
Для того, чтобы оценить все прелести этого языка программирования, приведем простой пример кода на JS:
console.log (Привет, мир!)
Что делает эта строка? С ее помощью вы сможете в консоли браузера или среды разработки вывести надпись «Привет, мир!». Как видно, это очень простое решение, требующее всего одной строки кода. Такая простота отличает JS от многих других языков программирования, в которых для вывода этой надписи потребуется больше кода.
Преимущества и недостатки JS
Популярность JavaScript обусловлена множеством факторов, в том числе большим количеством преимуществ, к которым относятся:
- Незаменимость при разработке веб сайтов и приложений. Как уже отмечалось выше, JS поддерживается всеми современными браузерами. Причем язык легко интегрируется с версткой и сервером.
- Высокая скорость работы и производительность. Этот язык позволяет частично обрабатывать веб страницы на стороне пользователя. Это позволяет тратить меньше времени на открытие, а также снижает нагрузку на серверы.
- Большое количество инструментов и богатая инфраструктура. Если в первое время многие работали исключительно с самим языком, сегодня благодаря наличию множества библиотек, появились удобные и доступные для всех инструменты.
- Относительная простота. Написание программ занимает обычно меньше времени. При этом, объем кода также обычно меньше, в сравнении со многими другими языками.
- Широкие возможности для веб-страниц. С помощью JS вы можете оживить любую страницу в сети Интернет. Помимо этого, JS значительно повышает уровень юзабилити приложений и сайтов.
- Относительная легкость изучения. Начать учиться JS можно даже тем, кто вообще до этого не сталкивался с программированием. Причем визуализация многих действий прибавляет обучающимся энтузиазма.
Что касается недостатков, к ним можно отнести следующие моменты:
- Отсутствует возможность загрузки и чтения файлов.
- Нестрогая типизация. Все недостатки кода выявляются на этапе работы программы, что может быть неудобно в ряде случаев. К тому же, нестыковки, которые могут быть в коде JS игнорируются самим языком.
- Уровень безопасности. В такой язык программирования как JS достаточно просто внедрить вредоносный код.
Перспективы
Насколько вообще JS интересен будущим программистам с точки зрения перспектив? Стоит ли начинать его изучение ребенку? На самом деле, этот язык постоянно развивается и внедряются новые решения. Большое количество библиотек говорит о том, что JS сегодня очень популярен. И это вполне объяснимо.
Сегодня каждая компания хочет быть представлена в сети Интернет. Причем готовые шаблоны сайтов мало кого интересуют. Поэтому верстку и программирование доверяют программистам. И это далеко не все.
С помощью JS можно написать любые веб приложения. А это значительно повышает спрос на программистов, владеющих этим языком. И если посмотреть отечественные сайты с вакансиями, предложений по работе именно для JavaScript разработчиков на данный момент больше, чем для тех, кто программирует на Java или 1С.
В ближайшем будущем JS скорее всего останется основным языком разработки веб-приложений и сайтов. И еще один важный момент. В последнее время растет популярность так называемых прогрессивных приложений, которые совмещают в себе сайт и, собственно, само приложение. И все это также разрабатывается с помощью JS.
Наконец, даже если со временем популярность JavaScript снизится, всегда можно переучиться на другой язык программирования. Те, кто занимаются разработкой, все равно постоянно находятся в учебном процессе. Например, появление новой библиотеки для JavaScript требует определенного времени на ее изучение. Для программиста не составит труда выучить другой язык, зная основные принципы программирования.