6 Трансляторы, компиляторы и интерпретаторы Язык программирования – это совокупность команд и операторов (ключевых слов) и вспомогательных символов, позволяющих описывать алгоритмы решения задач. Программа – это алгоритм решения задачи, записанный на языке программирования. Алгоритм – последовательность действий (операций) при решении задачи.
Язык программирования С++ разработан в 1983 году на основе языка С. Программирование на С напоминает программирование в машинных кодах, т.е. программа на языке С оперирует числами и переменными. Язык С++ является языком высокого уровня, т.е. оперирует командами и специальными символами, которые приближены к естественному языку (английскому), но сохраняет преимущества машинного языка С по быстродействию получаемых программ.
Само название языка «С++» связано с операцией языка «++», т.е. прибавление единицы к предыдущему значению. Тем самым подразумевается, что язык С++ является следующей версией языка С. Информация в лекции «13 — Изрядное количество колористики» поможет Вам.
Что такое компилятор и интерпретатор ? Их основные отличия.
Текст программы можно набрать в любом редакторе, затем она с высокого уровня переводится на низкий, в машинные коды (двоичные числа), которые только и может выполнять процессор компьютера. Перевод такой программы в машинные команды (двоичный код) осуществляется специальными программами – трансляторами. Трансляторы бывают двух видов – интерпретаторы и компиляторы.
Интерпретатор – это программа, которая переводит исходный текст программы на языке программирования в машинные команды построчно (пооператорно) и передаёт их на выполнение. Если строка программы выполняется успешно, интерпретатор переходит к следующей строке, переводит её в машинный код и передаёт на выполнение и т.д. до конца программы.
Транслятор – интерпретатор работает медленно, однако этот режим удобен при отладке программы. Компилятор переводит весь исходный текст программы целиков и создаёт при этом новый документ – объектный код программы.
При этом компилятор сначала предварительно просматривает исходную программу, выявляет повторяющиеся места (чтобы не переводить их дважды) и синтаксические ошибки – неправильно записанные слова команд и операторов (например, printe вместо print e). Логические ошибки (вроде π = 4,13, а не 3,14) может выявить только сам разработчик программы. Процесс поиска и исправления логических ошибок довольно сложен, он называется отладкой программы и занимает, согласно статистике 60% времени создания работающей программы. Поэтому так высоко ценится мастерство опытного программиста, который может писать качественные и надёжные программы. Язык С++ в настоящее время является самым распространённым в мире языком, большинство программ в России и и за рубежом создаётся именно на нём.
Поделитесь ссылкой:
Рекомендуемые лекции
- Электронная почта (E-Mail)
- 1. Введение
- 5 Анализ пространственных данных
- 6. Язык HTML
- 13 — Изрядное количество колористики
Свежие статьи
Компиляция и интерпретация за 10 минут
Обзор программы Экранная Студия. Как записать видео с экрана
Как и где студенту составить резюме?
Правила оформления презентации для студентов в 2023 году
С Новым 2023 годом!
Как студенту выбрать ноутбук и принтер?
Источник: studizba.com
Определение транслятора, компилятора, интерпретатора и ассемблера
Транслятор – это программа, которая переводит входную программу на исходном (входном) языке в эквивалентную ей выходную программу на результирующем (выходном) языке.
Результатом работы транслятора будет результирующая программа, но только в том случае, если текст исходной программы является правильным — не содержит ошибок с точки зрения синтаксиса и семантики входного языка. Если исходная программа неправильная (содержит хотя бы одну ошибку), то результатом работы транслятора будет сообщение об ошибке (как правило, с дополнительными пояснениями и указанием места ошибки в исходной программе). В этом смысле транслятор сродни переводчику, например, с английского, которому подсунули неверный текст.
Компилятор – это транслятор, который осуществляет перевод исходной программы в эквивалентную ей объектную программу на языке машинных команд или на языке ассемблера.
Таким образом, компилятор отличается от транслятора лишь тем, что его результирующая программа всегда должна быть написана на языке машинных кодов или на языке ассемблера. Результирующая программа транслятора, в общем случае, может быть написана на любом языке — возможен, например, транслятор программ с языка Pascal на язык С. Соответственно, всякий компилятор является транслятором, но не наоборот — не всякий транслятор будет компилятором. Например, упомянутый выше транслятор с языка Pascal на С компилятором являться не будет.
Ассемблер – компилятор, который переводит каждую команду исходной программы в одну машинную команду.
Интерпретатор — это программа, которая воспринимает входную программу на исходном языке и выполняет ее.
В отличие от трансляторов интерпретаторы не порождают результирующую программу (и вообще какого-либо результирующего кода) — и в этом принципиальная разница между ними. Интерпретатор, так же как и транслятор, анализирует текст исходной программы. Однако он не порождает результирующей программы, а сразу же выполняет исходную в соответствии с ее смыслом, заданным семантикой входного языка. Таким образом, результатом работы интерпретатора будет результат, заданный смыслом исходной программы, в том случае, если эта программа правильная, или сообщение об ошибке, если исходная программа неверна.
4.3 Общая схема работы компилятора
Основные функции компилятора:
1) проверка исходной цепочки символов на принадлежность к входному языку;
2) генерация выходной цепочки символов на языке машинных команд или ассемблере.
Процесс компиляции состоит из двух основных этапов: синтеза и анализа. На этапе анализа выполняется распознавание текста исходной программы и заполнение таблиц идентификаторов. Результатом этапа служит некоторое внутреннее представление программы, понятное компилятору.
На этапе синтеза на основании внутреннего представления программы и информации, содержащейся в таблице идентификаторов, порождается текст результирующей программы. Результатом этого этапа является объектный код.
Данные этапы состоят из более мелких стадий, называемых фазами. Состав фаз и их взаимодействие зависит от конкретной реализации компилятора. Но в том или ином виде в каждом компиляторе выделяются следующие фазы:
1) лексический анализ;
2) синтаксический анализ;
3) семантический анализ;
4) подготовка к генерации кода;
5) генерация кода.
Определение Процесс последовательного чтения компилятором данных из внешней памяти, их обработки и помещения результатов во внешнюю память, называется проходом компилятора.
По количеству проходов выделяют одно-, двух-, трех- и многопроходные компиляторы. В данном пособии предлагается схема разработки трехпроходного компилятора, в котором первый проход – лексический анализ, второй — синтаксический, семантический анализ и генерация внутреннего представления программы, третий – интерпретация программы.
Общая схема работы компилятора представлена на рисунке 4.3.
Рисунок 4.1– Общая схема работы компилятора
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Разница между: транспайлер, транслятор, компилятор?
В чем разница между транспайлером, транслятором и компилятором?
В гугле не нашел четких рамок определения этих терминов.
- Вопрос задан более трёх лет назад
- 13938 просмотров
Комментировать
Решения вопроса 1
Диванный эксперт.
Ну если в двух словах, то компиляция — процесс получения программы (исполняемые машиной команды) из исходного кода на неком языке программирования.
Трансляция — преобразование исходного кода программы из одного ЯП в другой. Обычно компиляторы (например для C/C++) транслируют исходник в программу на асемблере, и уже потом ее компилируют.
Что касатеся транспайлера (Transpiler) — это тот же транслятор с той лишь разницей, что у результата примерно тот же уровень абстракции, что и у исходного текста (ну например транслятор из Java в C++).
Источник: qna.habr.com