Як я можу сказати, що мова програмування збирається на інші мови?


22

Як я можу сказати англійською мовою, що мову програмування можна скласти до інших мов програмування?

Прикладом може бути Хакс . На веб-сайті мова визначається як "Мультиплатформна":

Мультиплатформа: Haxe можна компілювати на всі популярні платформи програмування за допомогою свого швидкого компілятора - JavaScript, Flash, NekoVM, PHP, C ++, C # і Java (незабаром)

але мультиплатформа може бути неправильно зрозуміла як апаратні або програмні платформи (win, mac, linux).

Отже, яке найбільш підходяще слово, що описує цю здатність?


3
Я б видалив "компіляції" і просто сказав, що ця мова програмування може бути перетворена на іншу за допомогою деякого інтерпретатора.
Ніл

6
Ви можете використовувати те саме слово, що і для звичайних мов: перекладач, перекладач. Це зрозуміло, і я чув, як слово вживається в цьому сенсі.
superM

4
@teresko Як це? Єдиний спосіб, як я міг вас бачити, стверджуєте, що ви використовуєте надмірно обмежувальне та марне визначення компіляції (яке обмежує вихід на машинний код).

18
@Neil: перетворення програми, написаної однією мовою, на іншу мову - це не інтерпретація. Насправді, це визначення з компіляції .
Йорг W Міттаг

2
@Neil, компіляція, за визначенням, - це перетворення з однієї мови на іншу. І "трансформація" звучить настільки ж незрозуміло і таємниче, як "складання", доки ваш читач не добре розбирається в переписуванні термінів тощо. Тому я б запропонував використовувати слово "націлювання", наприклад, "Haxe націлений на JavaScript, Flash, що завгодно тощо".
SK-логіка

Відповіді:


41

Звичайний термін - "транскоміляція" - не звичайний термін, але технічно правильний. Це не лише для модних нових мов сценаріїв (CoffeeScript -> JavaScript); перші компілятори C ++ насправді були транскопіляторами до C.


2
Також "transpiles", як у "Transpiler перетворює CoffeeScript в Javascript"

4
Я ніколи раніше не чув цього терміна, перебуваючи в полі десятиліттями. Розум вказує на його витоки (посилання на перший документ, де він з’явився б найкращим)?
SK-логіка

З Вікіпедії : "Компілятор від джерела до джерела [aka." Transcompiler "," transpiler "] перекладається між мовами програмування, які працюють приблизно на одному рівні абстракції, тоді як традиційний компілятор перекладає з мови програмування вищого рівня на нижчий мова програмування рівня. "
l0b0

4
@ L0b0, вікіпедія не коментує про походження цього терміна, і він безумовно не повинен ніколи бути оригінальним джерелом.
SK-логіка

3
... пошук "транскомпіляції" в Google не дає жодного пов'язаного результату ...
Bakuriu

27

Вибачте, пани, але слово для цього просто "складено" . Це означає перетворення одного типу коду в інший тип коду. Немає реальної різниці, якщо цей код є англійською, C ++, машинним кодом x86, машинним кодом ARM, Java, байт- кодом або назад до англійської. Ми зазвичай використовуємо це для позначення подорожі від мови програмування до машинного коду, але це аспект, який слово набуло з часом. І ей, якщо достатньо людей починає неправильно вживати слово, воно дійсно набуває нового значення. Але якщо ви хочете, щоб слово перетворило Haxe на C ++, це слово "компілює" .

Мультиплатформа: Haxe можна компілювати на всі популярні мови програмування за допомогою свого швидкого компілятора - JavaScript, Flash, NekoVM, PHP, C ++, C # та Java (незабаром)

(Також я ігнорую Мерріам-Вебстер, тому що вони дурні, бо не згодні зі мною ... хмммм)


10

Можливо, це питання для https://english.stackexchange.com/, але я б сказав, що процес компіляції включає компіляцію на іншій мові високого рівня і не обмежується лише компіляторами, які компілюють до нативного машинного коду.

Оскільки слово "Компілювати" взагалі не властиве комп’ютерним компіляторам і є досить загальним. "Складання таблиці" або "складання списку імен" мені спадає на думку, тому вона досить широка для багатьох цілей (текстові процесори, такі як Latex, компілюються і т.д.). Щоб бути більш конкретним щодо мети компіляції, я б використовував to-source-компілятор

Тепер для конкретного прикладу, я вважаю, що платформа - це відповідне слово. Оскільки людські мови за своєю сутністю є амбіційними, вам доведеться використовувати надмірність (приклади, перефразовуючи іншими словами, пояснюючи), щоб зрозуміти, якщо є сумніви.

Я також прочитав би заяву "Haxe" таким чином, що включає стандартні бібліотеки та подібні речі. Тобто, у такому випадку платформа буде сукупністю "мови", і ви можете відокремити її від "платформи розвитку програмного забезпечення" тощо.


4
Я думаю, ти маєш на увазі english.stackexchange.com?
Суман

3

Можна сказати, що компілятор має мови X, Y і Z як цілі перекладу , або спроектувати мову з урахуванням цих цілей.


2

Я б сказав, що компілятор за визначенням перекладається на різні мови програмування (принаймні, це визначення, яке я знаю - програма, яка перетворює одну мову в іншу). Наприклад, більшість компіляторів С виробляють збірку як вихід. Компілятори збірки приймають цей висновок і перетворюють його у двійковий код, який також є мовою (впевнений, що, мабуть, ніхто не пише в ньому протягом останніх 40 років і більше, але технічно це мова) - який можна взяти і перекомпілювати, щоб сказати мікро- ops процесорами (або є певні операції, які виконуються лінкером над об’єктними файлами). Точно так самоjavapкомпілює в байт-код. Зазвичай в кінці такого ланцюга є інтерпретатор, який виконує остаточний код (будь то процесор, GPU або виконана програма). Не існує "такого поняття", як машинний код, оскільки сучасний x86 перекомпілює програми у внутрішні операції (micro-ops), і я цілком здатний трактувати машинний код ARM як інтерпретовану мову на x86 або навпаки (в деяких випадках навіть перекомпілювати від однієї форми до іншої).

Haxe - це компілятор від джерела до джерела, оскільки він не перетворює мову вищого рівня на нижчий рівень як попередні приклади. Здається, це не стосується безпосередньо вашої багатозначної платформи, але, на жаль, я не думаю, що існує практичний спосіб розмежування цих двох речей - API - це такі мови, які можна загалом інтерпретувати, перекомпілювати тощо.


1

Перше, що спочатку: я не знаю, чи вже є відповідне слово для цієї функції.

Але, може, це можна назвати багатомовним? Або мовноагностичний? Оскільки мова йде більше про мову програмування, то згадка "мови" у назві може зробити її більш очевидною, ніж багатоплатформна.

Звичайно, мова також неоднозначна, оскільки можна зрозуміти, що вихідний код може бути записаний будь-якою мовою реального світу (наприклад, тому, що змінні можуть бути записані унікоді).

З іншого боку, кожен досвідчений програміст, ймовірно, визнає таку конструкцію відмінною від локалізації чи інтернаціоналізації, тож вони можуть “отримати” її легше.

Всього мої 2 копійки.


я не думаю, що це точно; і якщо ви бачите факт, сайт любить лише фактично правильні відповіді. але ласкаво просимо до спільноти та сподіваємось, що ви відповісте ще десь, де ви впевнені у відповіді :)
tgkprog
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.