Во время сеанса responseJS, на котором я присутствовал, докладчик использовал термин transpiler для обозначения некоторого преобразования / переноса кода. Я всегда использовал и слышал термины «компилятор» и «интерпретатор», когда дело доходит до преобразования языкового кода в работоспособную форму в компьютерной системе / машине. Транспилер для меня в новинку. Чем транспилятор отличается от компилятора или интерпретатора и зачем он вообще нужен?
Компилятор против интерпретатора против транспилятора
Ответы (7)
Как упоминается в этой статье в Wiki, это тип компилятора, который переводит em > исходный код с одного языка программирования на другой язык программирования. Исходный код может быть на каком-то языке, который больше не используется, или не поддерживает последние достижения аппаратного / программного обеспечения, или в соответствии с удобством / фаворитизмом программиста.
Конвертер VB6 в VB.NET можно рассматривать как транспилятор. Я мог бы думать об инструменте COBOL to C # / C ++ / Java как о транспиляторе.
Xtend
(eclipse.org/xtend) и NetRexx
(netrexx.org) - это 2 языка, которые переведены на Java.
- person Bruce Martin; 01.09.2016
Компилятор - компилирует код в код более низкого уровня.
Пример:
"Developer code"
->"Machine code"
PHP
->C
Java
->bytecode
Transpiler - компилирует код на тот же уровень кода / абстракции.
Пример:
"Developer code"
->"Another developer code or version"
JavaScript ES2015+
->JavaScript ES5
Интерпретатор - интерпретирует код, на самом деле, не в одном классе / лиге / контексте с двумя вышеупомянутыми.
Пример: php.exe
- "Ваш PHP-код / скрипты внутри
index.php
" -> "Результаты доhtml
или просто какindex.html
"
Это часто называют «транспилированием», когда вы переводите код с помощью JS-препроцессоров, таких как CoffeeScript, TypeScript (вы называете это), в простой JavaScript. Но на самом деле это не эксклюзивная вещь для JS. Это применимо ко всем языкам программирования. В основном это просто называется компиляцией.
Транспортировка - это особый термин для преобразования исходного кода, написанного на одном языке, в другой язык, имеющий аналогичный уровень абстракции.
Согласно https://www.stevefenton.co.uk/2012/11/compiling-vs-transpiling/
Итак, в вашем случае:
- 'compile' JSX => JavaScript (и HTML), что, как мне кажется, соответствует приведенному выше определению.
- Поэтому его можно назвать «транспилингом». Хотя называть это «компиляцией» тоже можно.
Другой пример:
- CoffeeScript / TypeScript / ... whatEverScript .. => JavaScript и наоборот.
Я создаю такие инструменты с 1980-х годов.
Мы назвали их «системами преобразования программ».
Этот срок прослужил нормально, AFAICT, около 45 лет. Идея возникла намного раньше; см. работу компилятора-компилятора Meta II Вэла Шорре для версии этой идеи 1963 года.
Теперь у нас есть этот новый термин; Я начал смотреть это несколько лет назад. Ничего не добавляет, но звучит загадочно и круто. Так священники утверждают свое достоинство; они изобретают новый словарь для старых идей.
Компилятор «исходный код» выполняет перевод между языками программирования, которые работают примерно на одном уровне абстракции, в то время как традиционный компилятор выполняет перевод с языка программирования более высокого уровня на язык программирования более низкого уровня.
Источник: Википедия.
- Компилятор - переводит исходный код с языка более высокого уровня на язык более низкого уровня.
Пример: компиляторы C (C в машинный код), javac-инструмент JDK (java в байтовый код) - Transpiler - тип компилятора, который выполняет перевод между исходными кодами на одном уровне абстракции.
Пример: Babel (ES6 + to ES5) - который можно использовать для написания Код ES6, по-прежнему поддерживая старые браузеры, такие как IE 11 и ниже.
Компилятор - он действует как интерфейс между человеком и компьютером для преобразования языка человеческого понимания в язык машинного понимания.
Типы компилятора
- Компилятор собственного кода: компилятор, используемый для компиляции исходного кода только для платформы того же типа. Вывод, сгенерированный этим типом компилятора, может быть запущен только на том же типе компьютерной системы и операционной системы (ОС), на которой работает сам компилятор.
- Кросс-компилятор: компилятор, используемый для компиляции исходного кода для различных платформ. Используется при создании программного обеспечения для встраиваемых систем, которое можно использовать на нескольких платформах.
- Компилятор исходного кода: преобразует HLL (язык высокого уровня) или исходный язык в LLL (язык низкого уровня) или машинный язык.
- Транспилер: преобразует HLL (язык высокого уровня) в другой HLL.
По определению транспилятор - это особая форма переводчика.
Компилятор преобразует исходный код высокого уровня в код более низкого уровня абстракции. Обычно, но не обязательно, целью компиляции является машинный код. То есть код, который может выполняться непосредственно ЦП. Компилятор также может создавать байт-код, который является имитацией машинного кода, но позже интерпретируется так называемой виртуальной машиной (т. Е. Байт-кодом Java для Java VM). Тем не менее, термин компилятор может применяться к инструменту, который преобразует код на другой язык программирования, который не является машинно-исполняемым кодом. Отличительное отличие компилятора в том, что он снижает уровень абстракции.
Переводчик преобразует исходный код с одного языка программирования на другой язык программирования с таким же или другим уровнем абстракции. Обратите внимание, что результатом может быть машинный код, если исходный код также был машинным кодом.
Transpiler очень похож на переводчик, но специально преобразует исходный код между языками программирования с одинаковым уровнем абстракции. Обратите внимание, что языки программирования различаются и во многом абстрагируются; различаются по уровню абстракции, особенно в том, что касается различных концепций, которые они поддерживают как абстракцию. Из-за этого преобразование (транспиляция) часто происходит между подобными, а не одними и теми же уровнями абстракции.