Чтобы найти информацию в интернете, вы открываете поисковик, вводите запрос в специальное поле и нажимаете кнопку «Поиск». Возможно, поисковая строка даже попыталась угадать, что вы хотите найти. Любые интерактивные действия, которые вы делаете в интернете, в основном возможны благодаря JavaScript. В этой статье простыми словами объясним, что такое JavaScript, для чего нужен и что на нём пишут.
29 декабря 2022
· Обновлено 29 декабря 2022
Что за JavaScript?
JavaScript (сокращённо JS) — это язык программирования, созданный для интернета.
Дело в том, что любой сайт, который вы открываете в своём браузере, — это обыкновенный текстовый документ.
В середине 90-х компании захотели не только рекламировать товары и услуги, но и продавать их через интернет, в том числе и обеспечивать электронные банковские транзакции, а для всего этого нужно было сделать текстовые документы интерактивными. То есть люди хотели взаимодействовать с веб-сайтами, а не только находить в них информацию.
Создание ПК программы на JavaScript за 20 минут! Библиотека Electron JS
Так появился JavaScript.
Именно он позволил расширить границы возможного и в десятки раз упростил обмен информацией — за счёт этого появились, в частности, форумы и социальные сети.
Сейчас JavaScript — это царь электронной коммерции, онлайн-банкинга, браузерных игр, видеостриминга, 2D- и 3D-анимации в интернете, онлайн-карт, социальных сетей и прочих сервисов, которые прочно вошли в нашу жизнь.
JavaScript — это «третий кит» технологий, которые сделали современный интернет таким, каким мы его знаем, наряду с HTML и CSS.
Не путайте JavaScript с Java. Это разные языки программирования. Просто 20 лет назад Java был у всех на слуху и маркетологи решили, что JavaScript будет звучать лучше, чем Mocha или LiveScript.
Получай лайфхаки, статьи, видео и чек-листы по обучению на почту
А он пользуется спросом?
По данным исследований сервисов для программистов Stackoverflow и GitHub, JavaScript — это самая популярная технология в мире уже много лет подряд!
Дело в том, что у JS относительно низкий порог входа, и он выполняется прямо в браузере. А ещё его популярность обеспечена наиболее легкодоступной нишей использования — он максимально «близок к народу».
Это значит, что вы сможете найти работу, если знаете язык программирования JavaScript, где бы вы ни были.
Кроме того, большая популярность дарит нам внушительное комьюнити — общество единомышленников, у которых можно попросить помощи или подсмотреть какие-то решения.
Но такая мощь накладывает и большую ответственность — конкуренция на рынке труда тоже неслабая.
Для чего нужен JavaScript?
Изначально JavaScript создавался для браузеров. Он был призван сделать веб-страницы более отзывчивыми для пользователя, более функциональными для коммерческих компаний, и более важными для человечества в целом. JavaScript выполнялся только на стороне клиента (браузеров) и был узкоспециализированным, пока в 2009 году не вышел Node.js — серверная платформа для работы с JavaScript. Благодаря ему JavaScript можно запустить теперь хоть в кофеварке. ☕
Как выучить JavaScript? Самый аху#### способ!
Иными словами, JavaScript не просто стал всесильным в теории, но и на практике ворвался в список серверных языков программирования, таких как PHP, Python, Ruby, Go, C#, Java, и по сей день только наращивает позиции. Его используют известные компании: NASA, Netflix, PayPal, Twitter, LinkedIn, Uber, eBay и многие другие.
Кроме веб-разработки, с помощью Node.js развивают сферу IoT (англ. Internet of Things — интернет вещей), создают умные дома и программируют микроконтроллеры.
А если взять фреймворк Electron, то можно создать десктопное приложение под Windows, macOS или Linux с помощью веб-технологий. Этот фреймворк довольно молодой, но с помощью него создали, например, Skype для Linux и мессенджер Slack.
А что насчёт мобильной разработки? И тут JavaScript на коне рынке — с помощью React Native обыкновенный фронтендер может создать полноценное Android-приложение.
Как видно, сфера применения JavaScript стала весьма широкой. Человечество активно стремится к концепции одного языка программирования для всего, и JavaScript в списке первых претендентов на эту роль.
Плюсы и минусы языка
JavaScript — язык с особенностями. У него много достоинств, но хватает и недостатков. Тем не менее все они субъективны. В мире разработки важно понимать, что язык программирования — это лишь инструмент. Все языки программирования создавались под конкретные классы задач, и вполне нормально, что они хороши именно в них и плохи в других.
Никто же не будет ругать дрель за то, что ею неудобно забивать гвозди?
Так что в этом разделе речь пойдёт скорее об особенностях JavaScript. Перечисленные здесь достоинства могут быть для кого-то недостатками — и наоборот.
Обычно к достоинствам JavaScript причисляют следующее:
- Это мультипарадигменный язык программирования, то есть на нём удобно писать как в объектно-ориентированном, так и в функциональном стиле.
- Легко встраивается в веб-страницу.
- Относительно простой синтаксис.
- Запускается во всех браузерах.
- Динамически типизируемый — вам почти не нужно думать о типах данных, JavaScript делает это сам.
- Динамически компилируемый, а значит, работает быстрее любого интерпретируемого языка программирования, например Python.
- Имеет автоматический сборщик мусора — думать о неэффективном использовании памяти нужно гораздо меньше, чем, например, в С++.
Те, кто критикует JavaScript, часто приводят такие доводы:
- Нет встроенной возможности работать с файловой системой компьютера.
- Динамическая слабая типизация — в больших, долгосрочных проектах это мешает и увеличивает затраты на поддержку приложения.
- Сам язык до сих пор не доработан до конца, у него есть некоторые нелогичные особенности поведения, которых нет в других языках программирования, но и исправить многие из них уже нет возможности.
Важно понимать, что как достоинства, так и недостатки являются лишь аргументами при выборе технологии для решения задачи. Некоторые из недостатков, например слабую типизацию, решили с помощью вспомогательных инструментов. Например, для того чтобы использовать JavaScript со строгой типизацией, компания Microsoft в 2012 году выпустила TypeScript — язык, который транспилируется (переводится) в JavaScript. Вы пишете на языке программирования со строгой типизацией, а на этапе сборки проекта он превращается в JavaScript. А невозможность работы с файловой системой нивелируется платформой Node.js.
Сравнение с другими ЯП
Как работает JavaScript
Ранее JavaScript предназначался для использования в веб-браузерах, однако ситуация изменилась с развитием Node. Мы знаем, как, где и когда его использовать. Но известно ли, что происходит за этими сценариями?
Даже если вы знаете это, то все равно сможете извлечь полезную информацию из данной статьи.
JavaScript — это высокоуровневый ЯП, а компьютер понимает только единицы и нули. Каким образом компьютер понимает написанный код? В этой статье мы рассмотрим ответ на один единственный вопрос: как работает JavaScript?
Движок JavaScript
Это главный герой, который отвечает за понимание компьютером JS-кода. Движок JavaScript принимает код и преобразует его в машиночитаемый язык. Он выполняет работу переводчика, преобразующего JS-код на понятный компьютеру язык. Как и JS, каждый ЯП также обладает движком, делающий написанный код понятным для компьютера.
У JavaScript есть множество различных движков, доступных для использования. На этой странице Википедии можно найти их список. Они также называются движками ECMAScript (подробнее об этом ниже).
Попробуем заглянуть внутрь движка, чтобы узнать, как преобразуются файлы JavaScript.
Что скрывает движок JavaScript
Движок — это язык, который разбивает код и переводит его. А V8 — это один из самых популярных движков JavaScript, который используется в Chrome и NodeJS и написан на низкоуровневом языке C++. Написать движок может кто угодно, что может привести к путанице.
Для поддержания контроля за этими механизмами был создан стандарт ECMA, который предоставляет характеристики написания движка и всех функций JavaScript. По этой причине в ECMAScript 6, 7, 8 и т. д. реализованы новые функции JavaScript, а движки обновлены для поддержки этих новых функций. Следовательно, необходимо проверять доступность расширенной функции JS в браузерах во время разработки.
Для примера возьмем движок V8, однако основные концепции остаются неизменными во всех движках.
Теперь рассмотрим с более технической точки зрения.
Так выглядит движок JS изнутри. Вводимый код проходит через следующие стадии:
- Парсер
- AST
- Интерпретатор выдает байт-код
- Профайлер
- Компилятор выдает оптимизированный код
Не волнуйтесь, подробности рассмотрим в течение нескольких минут.
Однако для начала разберем важное различие.
Интерпретатор и Компилятор
Есть два способа преобразования кода в машиночитаемый язык. Концепция, о которой мы поговорим, применима не только к JavaScript, но и к большинству ЯП, таких как Python, Java и т. д.
- Интерпретатор читает код построчно и сразу выполняет его.
- Компилятор читает весь код, выполняет оптимизации, а затем производит оптимизированный код.
Рассмотрим на примере.
function add(a, b) < return a+b >for(let i = 0; i
В приведенном выше примере функция add , которая добавляет два числа и возвращает сумму, вызывается 1000 раз.
- При передаче этого файла интерпретатору, он читает его построчно и сразу выполняет функцию, пока цикл не закончится. Таким образом, он просто переводит код в то, что компьютер понимает на ходу.
- При передаче этого файла компилятору, он читает всю программу, выполняет анализ действий и производит оптимизированный код на языке, который понимает машина. Это как взять X (JS-файл) и создать Y (оптимизированный код, понятный машине). Если использовать интерпретатор для Y (оптимизированный код), результат будет таким же, как при интерпретации X (JS-код).
На изображении выше показано, что байт-код — это просто промежуточный код, который необходимо интерпретировать для обработки компьютером. Как интерпретатор, так и компилятор, преобразуют исходный код в машинный код, единственное отличие состоит в том, как выполняется это преобразование.
- Интерпретатор построчно преобразует исходный код в эквивалентный машинный код.
- Компилятор сразу преобразует весь исходный код в машинный код.
Плюсы и минусы интерпретатора и компилятора
- Преимущество интерпретатора заключается в немедленном выполнении кода без необходимости компиляции, что может быть полезно для запуска JS-файлов в браузере. Однако процесс замедляется при необходимости преобразования большего количества JS-кода. Вспомните маленький фрагмент кода, в котором функция вызывалась 1000 раз. В этом случае вывод остается прежним, даже если функция add была вызвана 1000 раз. Такие ситуации замедляют работу интерпретатора.
- В таких случаях компилятор может выполнить некоторые оптимизации, заменив цикл одним числом 2 (1 + 1 добавлялось каждый раз), поскольку он остается неизменным для всех 1000 итераций. Окончательный код, который выдает компилятор, оптимизирован и выполняется намного быстрее.
Таким образом, интерпретатор сразу начинает выполнение кода, но не выполняет оптимизацию. Компилятору требуется время для компиляции кода, однако он выдает более оптимизированный код.
Теперь вернемся к основной схеме движка JS.
Итак, зная плюсы и минусы компилятора и интерпретатора, можно использовать преимущества каждого. Здесь и появляется компилятор JIT (Just In Time). Он представляет собой комбинацию интерпретатора и компилятора, и большинство браузеров теперь реализуют эту функцию для повышения эффективности. Движок V8 также использует эту функцию.
В этом процессе:
- Парсер идентифицирует, анализирует и классифицирует различные части программы. Например, устанавливает, является ли элемент функцией, переменной и т.д. с помощью ключевых слов JavaScript.
- Затем AST (абстрактные синтаксические деревья) создают древовидную структуру на основе классификации парсера. В AST Explorer можно узнать о том, как строится дерево.
- Затем дерево передается интерпретатору, который создает байт-код. Как мы узнали ранее, байт-код не является кодом самого низкого уровня, однако его можно интерпретировать. На этой стадии браузер работает с доступным байт-кодом с помощью движка V8, чтобы пользователю не приходилось ждать.
- В то же время профайлер ищет оптимизации кода, а затем передает входные данные компилятору. Компилятор выдает оптимизированный код, в то время как байт-код временно используется для рендеринга в браузере. Как только компилятор создает оптимизированный код, временный байт-код полностью заменяется новым оптимизированным кодом.
- Таким образом используются лучшие качества интерпретатора и компилятора. Интерпретатор выполняет код, в то время как профайлер ищет оптимизацию, а компилятор создает оптимизированный код. Затем байт-код заменяется оптимизированным кодом, который является кодом более низкого уровня, таким как машинный код.
Это означает, что производительность будет постепенно улучшаться, не блокируя время выполнения.
Примечание по байт-коду
Как и в случае с машинным кодом, не все компьютеры понимают байт-код. Чтобы интерпретировать его на машиночитаемый язык, необходимо промежуточное ПО, такое как виртуальная машина, или движок (например, Javascript V8). По этой причине браузеры могут выполнять этот байт-код из интерпретатора во время вышеупомянутых 5-ти стадий с помощью движков JavaScript.
В результате возникает следующий вопрос:
Является ли JavaScript интерпретируемым языком?
Да, но не совсем. На ранних этапах JavaScript Брендан Айк создал движок JavaScript ‘SpiderMonkey’. У движка был интерпретатор, который говорил браузеру, что нужно делать. Сейчас есть не только интерпретаторы, но и компиляторы, а код не только интерпретируется, но и компилируется для оптимизации. Технически все зависит от реализации.
- Прототипирование для Vue(Opens in a new browser tab)
- Как не лажать с JavaScript. Часть 1
- JavaScript async/await: что хорошего, в чём опасность и как применять?
Источник: nuancesprog.ru
Введение в JavaScript
Сегодняшний мир веб-сайтов трудно представить без языка JavaScript. JavaScript — это то, что делает живыми веб-страницы, которые мы каждый день просматриваем в своем веб-браузере.
JavaScript был создан в 1995 году в компании Netscape разработчиком Брендоном Айком (Brendon Eich) в качестве языка сценариев в браузере Netscape Navigator 2. Первоначально язык назывался LiveScript, но на волне популярности в тот момент другого языка Java LiveScript был переименован в JavaScript. Однако данный момент до сих пор иногда приводит к некоторой путанице: некоторые начинающие разработчики считают, что Java и JavaScript чуть ли не один и тот же язык. Нет, это абсолютно два разных языка, и они связаны только по названию.
Первоначально JavaScript обладал довольно небольшими возможностями. Его цель состояла лишь в том, чтобы добавить немного поведения на веб-страницу. Например, обработать нажатие кнопок на веб-странице, произвести какие-нибудь другие действия, связанные прежде всего с элементами управления.
Однако развитие веб-среды, появление HTML5 и технологии Node.js открыло перед JavaScript гораздо большие горизонты. Сейчас JavaScript продолжает использоваться для создания веб-сайтов, только теперь он предоставляет гораздо больше возможностей.
Также он применяется как язык серверной стороны. То есть если раньше JavaScript применялся только на веб-странице, а на стороне сервера нам надо было использовать такие технологии, как PHP, ASP.NET, Ruby, Java, то сейчас благодаря Node.js мы можем обрабатывать все запросы к серверу также с помощью JavaScript.
В последнее время переживает бум сфера мобильной разработки. И JavaScript опять же не остается в стороне: увеличение мощности устройств и повсеместное распространение стандарта HTML5 привело к тому, что для создания приложений для смартфонов, планшетов и настольных компьютеров мы также можем использовать JavaScript. То есть JavaScript уже перешагнул границы веб-браузера, которые ему были очерчены при его создании.
И что вообще раньше казалось фантастикой, но сегодня стало реальностью — javascript может использоваться для набирающего популярность направления разработки для IoT(Internet of Things или Интернет вещей). То есть JavaScript можно использовать для программирования самых различных «умных» устройств, которые взаимодействуют с интернетом.
Таким образом, вы можете встретить применение JavaScript практически повсюду. Сегодня это действительно один из самых популярных языков программирования, и его популярность еще будет расти.
С самого начала существовало несколько веб-браузеров (Netscape, Internet Explorer), которые предоставляли различные реализации языка. И чтобы свести различные реализации к общему стержню и стандартизировать язык под руководством организации ECMA был разработан стандарт ECMAScript. В принципе сами термины JavaScript и ECMAScript являются во многом взаимозаменяемыми и относятся к одному и тому же языку.
К настоящему времени ECMA было разработано несколько стандартов языка, которые отражают его развитие. В последнее время почти каждый год выходит новый стандарт. На данный момент последним принятым стандартом является ECMAScript 2021, который был одобрен 22 июня 2021 года. Однако реализация стандартов в браузерах занимает довольно продолжительное время.
Одни браузеры быстрее реализуют новые стандарты, другие медленнее. Кроме того, есть большой пласт старых версий браузеров, которыми простые пользователи продолжают пользоваться и которые естественно могут не поддерживать нововведения последних стандартов. И это надо учитывать при разработке программ на JavaScript. В данном же руководстве будут рассматриваться в основном те возможности JavaScript, которые поддерживаются всеми наиболее распространенными современными браузерами.
JavaScript является интерпретируемым языком. Это значит, что код на языке JavaScript выполняется с помощью интерпретатора. Интерпретатор получает инструкции языка JavaScript, которые определены на веб-странице, выполняет их (или интерпретирует).
Средства разработки
Для разработки на JavaScript нам потребуется текстовый редактор для написания кода и веб-браузер для его тестирования. В качестве текстового редактора я советую использовать такую программу как Visual Studio Code. Он бесплатен, имеет много возможностей и может быть установлен как на Windows, так и на Linux и MacOS. Хотя этот может быть любой другой текстовый редактор.
Также существуют различные среды разработки, которые поддерживают JavaScript и облегчают разработку на этом языке, например, Visual Studio, WebStorm, Netbeans и так далее. При желании можно использовать также эти среды разработки.
Итак, приступим к созданию первой программы.
Источник: metanit.com