Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Что такое JS? JS: Настройка окружения

Что вообще такое язык программирования?

Языком программирования называют правила, по которым записывается исходный код. В отличие от естественных языков, эти правила достаточно строги. Любая мельчайшая ошибка — и код не запустится, или запустится, но не заработает как ожидается. Например, в JavaScript нельзя написать const name;. Эти правила существуют не только в книгах и головах разработчиков, пишущих программы на этом языке. Они четко описаны в спецификации — документе, который диктует правила по которым должен работать язык.

Синтаксически корректный код это только половина дела. Он не может запускаться напрямую компьютером, так как это всего лишь текст. Компьютер умеет исполнять лишь машинный код (нули и единички). Для превращения исходного кода в машинный код существуют два подхода. Компиляция – процесс создания программы, готовой к прямому запуску. Большинство программ, с которыми мы имеем дело как пользователи, кем-то скомпилированы. Например, в Windows скомпилированные программы имеют расширение exe. Другой подход – интерпретация. При интерпретации превращение исходного кода в машинный происходит не до запуска программы, а прямо в процессе ее обработки. Именно поэтому сам подход называется интерпретацией.

JavaScript относится к интерпретируемым языкам. Для его запуска нужна специальная программа – интерпретатор. Например, когда JavaScript код выполняется на сервере, интерпретатором чаще всего выступает Node.js, когда на фронтенде — сам браузер. В других местах, таких как встраиваемые устройства или автомобили, могут быть свои собственные интерпретаторы.

В реальности все чуть сложнее. Непосредственно интерпретацию выполняет "движок", который встроен и в Node.js, и в браузеры.

// node запускает интерпретатор, который берет исходный код index.js,
// анализирует его (это называется парсинг),
// а затем построчно исполняет
node index.js

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

Исторически JavaScript разрабатывался под самый популярный на тот момент браузер. Новый язык позволял добавлять интерактивность на страницы, хотя изначально все сводилось к снежинкам и разным визуальным эффектам. Со временем разработчики распробовали этот язык и стали активнее строить логику с его участием. Одним из самых известных поворотных моментов стало появление сервиса Gmail, который на полную катушку использовал AJAX (выполнение HTTP-запросов к серверу). JavaScript начинал играть все большую роль в создании сайтов, и уже все браузеры озадачивались его поддержкой. Для этого практически каждый крупный производитель браузера создавал свой собственный интерпретатор.

Дальнейшее развитие технологии вывело JavaScript за пределы браузера. Сначала появилась серверная реализация Node.js, затем он стал использоваться даже во встраиваемых системах. Сейчас даже утюги можно программировать с помощью JavaScript.

ECMAScript

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

ECMAScript не стоит на месте и постоянно развивается. Каждый новый стандарт описывает какие-то дополнительные возможности языка. Одни добавляют новый синтаксис, другие дополняют стандартную библиотеку новыми встроенными функциями. Стандарты по большей части обратно совместимы: то есть код, написанный под стандарт es3, запустится на большинстве интерпретаторов. К сожалению, это не всегда происходит без ошибок. Поведение кода со временем меняется, причем обычно в сторону более строгого поведения.

Важно понимать, что наличие какой-то возможности в стандарте не гарантирует ее наличия во всех интерпретаторах. Это связано с тем, что спецификация и интерпретаторы живут отдельной жизнью. После обновления спецификации подтягиваются интерпретаторы — этот процесс занимает время. Нередко бывает и наоборот. Новая возможность сначала появляется в одном из интерпретаторов, а затем, набрав популярность, попадает в стандарт. Если запустить код, написанный под новый стандарт, на давно не обновлявшемся интерпретаторе, скорее всего он упадет с синтаксической ошибкой.

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


Самостоятельная работа

  1. Создайте на гитхабе репозиторий с именем hexlet-js и README
  2. Склонируйте его в домашнюю директорию на своём компьютере
  3. Добавьте в README.md текст "Мой первый проект на Хекслете"
  4. Добавьте все изменения на гитхаб

Дополнительные материалы

  1. ECMAScript Specification (ecma-262)
  2. V8 (интерпретатор)

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
900
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 130 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
7 июля 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
7 июля 10 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
7 июля 16 месяцев

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»