Глядя на текущее состояние javascript в современном мире, мы можем сказать, что большая часть его производительности и коэффициента оптимизации зависит от движка, которым он поддерживается.

Сегодня мы знаем о многих движках JavaScript, начиная с Spider Monkey, первого движка JavaScript для работы в веб-браузере, созданного Бренданом Эйхом из Netscape Communications к самому популярному движку Google Chrome V8. Все эти замечательные javascript обычно основаны на интерпретаторах (зажиганиях), как это выражается в большинстве стандартных компаний, которые их разработали, и служат своей цели на разных платформах.

Наш вопрос здесь в том, является ли javascript интерпретируемым языком? Тогда почему мы говорим о его двигателях?

Механизмы Javascript или любые другие языковые механизмы, которые переводят наш код для понимания компьютерами, основаны либо на интерпретаторе (зажигание), либо на компиляторах (TurboFans). Итак, я пытаюсь уточнить, все ли движки, когда-либо написанные для javascript, основаны на интерпретаторах? Чтобы понять эту очень важную концепцию этого замечательного языка, давайте очень кратко освежим наши знания об интерпретаторах и компиляторах, не теряя вашего времени.

Переводчики

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

Рассмотрим код ниже:

Функция someCalculation (x, y) {return x + y}

Для (int i = 0; i ‹10000; I ++) {someCalculation (5, 4)}

Интерпретатор прочитает приведенный выше код построчно и создаст байт-код, который затем будет отправлен на сервер, а затем на клиентскую сторону в веб-браузере. таким образом, эта строка кода, такая как someCalculation (5,9), будет выполняться тысячу раз, поскольку интерпретатор будет выполнять весь код при каждом сделанном запросе.

Компиляторы

Компилятор - это программа, которая считывает весь код один раз и создает машинный код, понятный компьютеру.

Рассмотрим код ниже:

Функция someCalculation (x, y) {return x + y}

Для (int i = 0; i ‹10000; I ++) {someCalculation (5, 4)}

Глядя на приведенный выше код, компилятор прочитает весь код один раз и создаст машинный код. Теперь в случае компилятора в код будут внесены оптимизации, такие как someCalculation (5,4), будут преобразованы в 9, поэтому, не входя внутрь функции 1000 раз в цикле, компилятор будет немедленно возвращать 9 с целью оптимизации кода.

Движок Google Chrome V8 для javascript

Понимание механизма V8 для javascript имеет решающее значение для понимания нашего вопроса, является ли javascript интерпретируемым языком или нет. Движок V8 использует возможности как интерпретатора, так и компилятора для перевода кода javascript в веб-браузере. Механизм V8 использует JIT-компилятор, также известный как Компилятор Just in time. Поток этого механизма заключается в том, что он интерпретирует код javascript и одновременно использует компилятор для оптимизации интерпретируемого кода, чтобы глубже понять этот поток. Рассмотрим изображение ниже:

  1. Интерпретатор or (ignition) считывает код и выдает байт-код.

2. Превратите его в абстрактное синтаксическое дерево.

3. А затем код сначала поступает в интерпретатор и выдаёт байт-код.

4. Затем профилировщик проверяет код, выполняемый интерпретатором, например, сколько раз он запускается, какие типы используются и как мы можем это оптимизировать.

5. Профиль передает биты кода, которые можно оптимизировать, а компилятор (TurboFan) оптимизирует его и преобразует эту часть в машинный код, который затем используется вместо битового кода для этого фрагмента кода.

Возникает вопрос, является ли javascript интерпретируемым языком?

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

Поэтому в следующий раз, когда кто-то спросит вас, что javascript - это интерпретируемый язык, вы можете показаться супер-умным и сказать, что не технически, а технически это зависит от реализации.

📝 Прочтите этот рассказ позже в Журнале.

👩‍💻 Просыпайтесь каждое воскресное утро и слышите самые интересные истории недели в области технологий, ожидающие в вашем почтовом ящике. Прочтите информационный бюллетень« Примечательные в технологиях ».