Есть много способов отличить языки программирования. Для начала они попадают в разные парадигмы: функциональную, объектно-ориентированную и тому подобное.

Вы также можете классифицировать язык программирования по его методу перевода, что оказывает большое влияние на производительность языка. Компилируемые языки программирования обычно быстрее интерпретируемых. Таким образом, в таких ситуациях, как разработка игр, требующих скорости, разработчики обычно используют компилируемые языки.

Что такое перевод?

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

Без переводчиков вам пришлось бы кодировать на машинном языке. Каждый известный вам язык программирования высокого уровня использует один из трех методов трансляции: компилятор, интерпретатор или их гибрид.

Что такое компилятор?

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

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

  • Сканер: на этом этапе поток символов группируется в токены, представляющие собой идентификаторы, строковые литералы и т. д.
  • Парсер: на этом этапе токены группируются на основе грамматики исходного языка программирования. Он создает абстрактное синтаксическое дерево, представляющее собой набор выражений, составляющих программу.
  • Семантика: на этом этапе проводится семантический анализ абстрактного синтаксического дерева (AST). Он использует правила исходного языка для добавления смысла, назначая типы выражениям AST и проверяя их допустимость. Затем AST становится промежуточным представлением.
  • Промежуточное представление (IR): на этом этапе исходный код исходной программы преобразуется в машинный код. Он создает упрощенную версию ассемблерного кода. IR использует один или несколько оптимизаторов для улучшения кода IR и сбора информации о машине, на которой он работает. Оптимизатор может сделать программу более эффективной, быстрой или даже меньше.
  • Генератор кода: на этом этапе оптимизированный ИК-код преобразуется в машинный код.

Какие языки программирования используют компиляторы?

Некоторые популярные компилируемые языки программирования включают:

  • С
  • С++
  • Идти
  • Ада
  • Фортран
  • КОБОЛ
  • Лисп
  • Цель-C
  • Быстрый

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

Компилируемые языки также выполняются очень быстро после компиляции.

Что такое переводчик?

Интерпретатор — это программа, которая переводит и выполняет одну строку кода за раз. Этот процесс повторяется до тех пор, пока интерпретатор не достигнет последней строки кода в данной программе или сценарии.

Как видно из диаграммы выше, интерпретатор получает два входа. Во-первых, он занимает весь исходный код (программу). Затем он читает первую строку программы (в качестве входных данных), переводит и выполняет ее. Если эта строка выполняется правильно, она переходит к следующей строке в программе или сценарии.

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

Какие языки программирования используют интерпретаторы?

Некоторые популярные интерпретируемые языки программирования включают:

  • питон
  • JavaScript
  • Перл
  • МАТЛАБ
  • БАЗОВЫЙ

Хотя интерпретатор начинает выполнять код быстрее, он все равно потерпит неудачу, если обнаружит ошибку. Как программист, вам нужно будет исправить такую ​​ошибку и перезапустить программу. Это событие происходит каждый раз, когда интерпретатор обнаруживает новую ошибку. Некоторые ошибки могут оставаться скрытыми, если они связаны с редким стечением обстоятельств. В таких случаях, тестирование важнее, чем когда-либо.

Интерпретаторы обычно легче разрабатывать, чем компиляторы, а их программы по своей конструкции более переносимы.

Что такое гибридный перевод?

Гибридный перевод использует компилятор и интерпретатор. Гибридный перевод компилирует исходный код высокого уровня в форму более низкого уровня, такую ​​как байт-код. Затем он использует интерпретатор для запуска этого байт-кода.

Гибридный перевод может отличаться от одного языка программирования к другому, но будет использовать эту общую структуру. Одним из наиболее популярных языков программирования, использующих гибридный перевод, является Java. Компилятор Java транслирует исходный код в Байт-код виртуальной машины Java (JVM). Затем интерпретатор переводит байт-код JVM в машинный код.

Какие языки программирования используют гибридный перевод?

Некоторые популярные гибридные языки программирования включают:

  • Ява
  • С#
  • Visual Basic
  • Эрланг
  • фа#

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

Ценность знания различных методов перевода

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

Каждый подход к переводу имеет свои достоинства. Все ведущие языки программирования, такие как C++, Python и Java, используют разные методы перевода. Наряду с парадигмой языка его метод перевода является одной из самых важных черт, о которых вам следует знать.

Существует несколько парадигм, которые может использовать язык программирования. Большинство ведущих языков программирования являются языками с несколькими парадигмами; они поддерживают использование двух или более различных парадигм. Три самые популярные парадигмы — это императивное, объектно-ориентированное и функциональное программирование.