Компилятор Vs Interpreter Vs Transpiler

Во время сеанса реагирования, который я посещал, ведущий использовал термин transpiler для некоторого преобразования/переноса кода. Я всегда использовал и слышал термины компилятор и интерпретатор, когда речь заходила о преобразовании кода языка в исполняемую форму на компьютерную систему/машину. Транспилер для меня совершенно незначителен. Может ли кто-нибудь помочь мне понять, как Transpiler отличается от компилятора или интерпретатора и почему он действительно нужен?

Ответ 1

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

Конвертер VB6 в VB.NET можно рассматривать как Transpiler. Я мог бы подумать о том, что COBOL для инструмента С#/С++/Java является транспилером.

Ответ 2

Компилятор - компилирует код в код нижнего уровня.

Пример:

  • "Developer code""Machine code"
  • PHPC
  • Javabytecode

Transpiler - компилирует код на тот же уровень кода/абстракции.

Пример:

  • "Developer code""Another developer code or version"
  • JavaScript ES2015+JavaScript ES5

Интерпретатор - интерпретирует код, но не в том же классе/лиге/контексте с двумя выше.

Пример: php.exe

  • "Ваш PHP-код/​​скрипты внутри index.php" → "Результаты до html или просто как чистый index.html"

Ответ 3

Это часто называется "транспилирование", когда вы переводите код с JS-препроцессорами, такими как CoffeeScript, TypeScript (вы называете это), в обычный JavaScript. Но это действительно не эксклюзивная вещь JS. Это относится ко всем видам языков программирования. В основном это просто называется компиляцией.

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

Согласно https://www.stevefenton.co.uk/2012/11/compiling-vs-transpiling/

Итак, в вашем случае:

  • 'compile' JSX => JavaScript (и HTML), который, я думаю, соответствует определению выше.
  • Поэтому это можно назвать "транспарантом". Хотя называть это "компиляцией" тоже было бы хорошо.

Другой пример:

  • CoffeeScript/TypeScript/... whatEverScript.. => JavaScript и наоборот.

Ответ 4

Я строил такие инструменты с 1980-х годов.

Мы назвали их " Системы преобразования исходных программ ".

Этот срок отслужил, AFAICT, около 45 лет. Идея восходит задолго до этого; см. работу компилятора-компилятора Val Schorre Meta II для версии этой идеи 1963 года.

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

Ответ 5

Компилятор source-to-source переводится между языками программирования, которые работают примерно на одном уровне абстракции, тогда как традиционный компилятор переводится с языка программирования более высокого уровня на язык программирования более низкого уровня.

Источник: Wikipedia

  • Компилятор - переводит исходный код с языка более высокого уровня на язык более низкого уровня. Пример: C-компиляторы (C-машинный код), javac-инструмент JDK (код java-byte)
  • Transpiler - тип компилятора, который переводит между исходными кодами на том же уровне абстракции.
    Пример: Babel (ES6 + - ES5) - который вы можете использовать для написания кода ES6 поддерживая старые браузеры, такие как IE 11 и ниже.

Ответ 6

По определению транспортер - это особая форма переводчика.

Компилятор преобразует исходный код высокого уровня в код более низкого уровня абстракции. Как правило, но не обязательно, целью компиляции является машинный код. То есть код, который может быть выполнен непосредственно процессором. Компилятор также может генерировать байт-код, который является имитацией машинного кода, но позднее интерпретируется так называемой виртуальной машиной (то есть байт-кодом Java и Java VM). Тем не менее, термин " компилятор" может применяться к a, который преобразует код в другой язык программирования, который не является машинно-исполняемым кодом. Заметная разница в том, что компилятор понижает уровень абстракции.

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

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

Ответ 7

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

Типы Компилятора

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