Чем отличается транслятор от компилятора
Перейти к содержимому

Чем отличается транслятор от компилятора

  • автор:

Разница между: транспайлер, транслятор, компилятор?

В чем разница между транспайлером, транслятором и компилятором?
В гугле не нашел четких рамок определения этих терминов.

  • Вопрос задан более трёх лет назад
  • 14801 просмотр

Комментировать
Решения вопроса 1

RiseOfDeath

Antony @RiseOfDeath
Диванный эксперт.

Ну если в двух словах, то компиляция — процесс получения программы (исполняемые машиной команды) из исходного кода на неком языке программирования.

Трансляция — преобразование исходного кода программы из одного ЯП в другой. Обычно компиляторы (например для C/C++) транслируют исходник в программу на асемблере, и уже потом ее компилируют.

Что касатеся транспайлера (Transpiler) — это тот же транслятор с той лишь разницей, что у результата примерно тот же уровень абстракции, что и у исходного текста (ну например транслятор из Java в C++).

Разница между компилятором и интерпретатором

Какая разница между компилятором и интерпретатором? Может ли язык программирования иметь и компилятор и интерпретатор?

Отслеживать
11.5k 8 8 золотых знаков 43 43 серебряных знака 70 70 бронзовых знаков
задан 23 дек 2016 в 8:09
Salut Amigo Salut Amigo
530 1 1 золотой знак 3 3 серебряных знака 18 18 бронзовых знаков
23 дек 2016 в 8:14
Бейсик имел традиционно много разных компиляторов и интерпретаторов.
23 дек 2016 в 8:24
– user181100
23 дек 2016 в 8:40

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Чтобы опеределить разницу, давайте узнаем, что это такое:

Компиля́тор — программа или техническое средство, выполняющее компиляцию.

Компиля́ция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера). Входной информацией для компилятора (исходный код) является описание алгоритма или программа на предметно-ориентированном языке, а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код). Википедия

Интерпрета́тор — программа (разновидность транслятора), выполняющая интерпретацию.

Интерпрета́ция — пооператорный (покомандный, построчный) анализ, обработка и тут же выполнение исходной программы или запроса (в отличие от компиляции, при которой программа транслируется без её выполнения). Википедия

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

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

Компилятор, это отдельная программа javac , интерпретатор же встроен в jvm . Помимо обычного компилятора, в jvm присутствует just-in-time компиляция. т.к. интерпретация довольно медленна, то горячие места в программе компилируются в машинный код jit компилятором, тем самым ускоряя выполнение.

�� Компилятор и интерпретатор: понимание основ

Что такое компиляция, линковка, run time?

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

Что такое синтаксис в программировании

Что такое митапы и зачем они айтишнику

Что такое сигнатура в программировании: терминология и примеры

Если вы когда-нибудь задавались вопросом, как компьютер может понимать и выполнять программы на языке, понятном только человеку, значит пора узнать, что такое компилятор и интерпретатор. Добро пожаловать в увлекательный мир программирования! В этой статье мы рассмотрим один из ключевых инструментов программиста — что такое компилятор, как он работает, какие виды бывают и где применяются. А самое главное, какая разница между компилятором и интерпретатором. Готовы окунуться в мир компьютерных языков вместе с нами? Тогда начнем!

Определение

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

Кроме того, всех их можно условно разделить на две группы:

  1. те, которые работают с конкретными языками программирования;
  2. те, которые служат системами сборки программ. Примерами таких компиляторов являются GCC, gnat, clang, xcode, gfortran, Makefile и CMake.

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

Существуют два типа:

  1. простой тип выполняет команды моментально, но может обнаружить ошибки только в момент выполнения.
  2. второй тип — компилирующий, использует компилятор для перевода исходного кода в промежуточный, а затем интерпретирует его. Этот тип работает быстрее, но требует больше ресурсов и правильного исходного кода.

Некоторые такие трансляторы могут работать в режиме диалога или цикла чтения-вычисления-печати (REPL). В таком режиме интерпретатор считывает законченную конструкцию языка, выполняет её и выводит результаты.

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

  • Преимущества:
  • Значительно облегчает работу с исходным кодом программы.
  • Использует минимальный объем памяти компьютера при переводе по одной инструкции.
  • Может связать сообщения об ошибках с выполнением инструкций.
  • Недостатки:
  • Затрачивается время на интерпретацию программы в каждый раз, когда она выполняется.
  • Возможность выполнения только на компьютерах, где установлен соответствующий транслятор.

Сравнение компилятора и интерпретатора

Компилятор Интерпретатор
Что это Программа, которая преобразует исходный код на языке высокого уровня в машинный язык Программа, которая выполняет исходный код на языке высокого уровня
Работа Читает весь код программы и создает исполняемый файл Читает и выполняет каждую строку кода по очереди
Ошибка Сообщения об ошибках выводятся после прохождения компиляции Сообщения об ошибках выводятся по мере выполнения кода
Исполнение Исполняемые файлы работают быстрее Интерпретируемый код работает медленнее, чем скомпилированный
Использование Рекомендуется для крупных проектов и для языков, где требуется высокая производительность Рекомендуется для быстрой разработки и отладки, а также для языков, которые используются в интерактивной среде
Примеры языков C++, Java, Swift, Rust, Go Python, Ruby, JavaScript, PHP, Perl

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

Похожие материалы

Что такое компиляция, линковка, run time?

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

Что такое синтаксис в программировании

Что такое митапы и зачем они айтишнику

Что такое сигнатура в программировании: терминология и примеры

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

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

Какие преимущества и недостатки компилятора?

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

Какие преимущества и недостатки интерпретатора?

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

В каких ситуациях лучше использовать компилятор?

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

В каких ситуациях лучше использовать интерпретатор?

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

Можно ли использовать и компилятор, и интерпретатор в одном проекте?

Да, некоторые языки программирования, такие как Python и JavaScript, используют так называемые «JIT» (Just-In-Time) компиляторы, которые сочетают преимущества обеих подходов.

Чем отличается транслятор от компилятора

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: 1

Объясните на пальцах, пожалуйста. В чём отличия.

Трансля́тор — программа или техническое средство, выполняющее трансляцию программы.

Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой.

Компиля́тор — программа или техническое средство, выполняющее компиляцию.

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

М
Просьба использовать для цитат теги цитаты, а не кода.
Lapp

Сообщение отредактировано: Lapp — 23.03.2012 1:15

22.03.2012 19:21

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: 627

Отличие транслятора от компилятора

«Отличие фрукта от яблока». В чем разница?

Ни в чем, это несравнимые понятия. Компилятор — это один из вариантов реализации транслятора (другой вариант — интерпретатор).

23.03.2012 1:24

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: 159

Цитата(IUnknown @ 22.03.2012 16:21)
Компилятор — это [b]один из вариантов реализации транслятора

Володь, спасибо, навел порядок в моих мозгах тоже . Я грешным делом думал, что это просто синонимы, не особо вникая (хотя следовало бы)).
+1 (заодно — честь поставить 600-й плюсик!!)

У меня сестра — переводчик (высшего класса). Иногда она переводит тексты (компилирует), иногда синхронно переводит (интерпретирует). Кстати, по-английски синхронный переводчик так и зовется — interpreter. Мог бы и сопоставить.. ))

я — ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
23.03.2012 3:54

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: 627

Я грешным делом думал, что это просто синонимы

Когда-то, «когда еще деревья были большими», я имел «счастье» работать с Бейсиком. Вернее с двумя его реализациями: GW (от MS) и Турбо (от Borland), вот с тех пор я точно знаю: хотя трансляторы они были оба, разница между ними была огромной, т.к. первый был интерпретатором, а второй — компилятором

Эх, вот времена были.

23.03.2012 7:31

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: 159

Цитата(IUnknown @ 23.03.2012 0:54)
Когда-то, «когда еще деревья были большими», я имел «счастье» работать с Бейсиком.

А зря ты «счастье» в кавычки взял, ей-Бо.. ))
Я писал на Фортране, когда нам поставили Электроники 85, копия (DEC Pro-350, CPU 8 bit, RAM 512KB, OS RT-11, 2 floppy 5″, 180 KB). Там был Бейсик )). В общей комнате стояло пять машин, но работали в среднем 2-3.. Я до них дорвался, написал несколько игрушек (Life, Калах, Xonix. ) Да уж, были времена.

А мне вот интересно стало.. Если идти до конца, то как классифицировать (с этой точки зрения) транслятор с Java? Или, скажем, те же P-коды (давно забытые)), в которых работала система Pascal UCSD? То есть трансляцию в промежуточный код, который требует наличия на машине специального софта (как и Basic).

я — ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
23.03.2012 8:42

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: 627

Java — смесь компилятора с интерпретатором. Компилятор — эта та часть, которая компилирует из исходника в байткод (java c намекает), а интерпретатор — то, что эти самые байткоды выполняет. Насколько я понимаю, с UCSD Pascal было то же самое.

А зря ты «счастье» в кавычки взял, ей-Бо.. ))

Мне в то время PL/I больше Бейсика нравился. До сих пор вспоминаю ЕС 1066, машинные залы, для которых летом в Ташкенте (. на улице +40 и выше) брали с собой свитера, иначе простуда обеспечена.

24.03.2012 9:34

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: 159

Цитата(IUnknown @ 23.03.2012 5:42)

Java — смесь компилятора с интерпретатором. Компилятор — эта та часть, которая компилирует из исходника в байткод (java c намекает), а интерпретатор — то, что эти самые байткоды выполняет. Насколько я понимаю, с UCSD Pascal было то же самое.

Это, конечно, все так, но я просто хотел сказать, что тут, imho, нельзя ограничиться таким формальным разделением на компоненты.. Во-первых, байт-код (или P-код) нечитабелен, что уже в достатчоной степени компрометирует изначальную идею интерпретируемого языка. Во-вторых, он все же исполняется граздо быстрее Бейсика. Обязательность же наличия JVM (или машины пи-кодов, как она называлась я не знаю) — это сильный аргумент, но не неубиваемый.. То, что такие вещи не включены в систему — это вопрос об авторских правах, и не более того.

Мне в то время PL/I больше Бейсика нравился. До сих пор вспоминаю ЕС 1066, машинные залы, для которых летом в Ташкенте (. на улице +40 и выше) брали с собой свитера, иначе простуда обеспечена.

Ну, PL/1 с васиком сравнивать как-то странно )). ЕС у тебя же не на столе стояла, да? )) На еэсовских терминалах-гробах разве что текстовые квесты делать )). А я, кстати, помню не только их, а еще и телетайпы (на БЭСМ)). Но все же, компактная машинка полностью в твоем распоряжении, пусть и с Бейсиком только — это меня прикололо тогда немеряно.. Real time интерактивность, графика (мдя, black&white без полутонов)) — это все было внове и в жилу.. Хотя — кондиционированный зал в среднеазиатской жаре — это забавно, да .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *