Come posso dire che il linguaggio di programmazione viene compilato in altre lingue?


22

Come posso dire in inglese che il linguaggio di programmazione può essere compilato in altri linguaggi di programmazione?

L'esempio può essere Haxe . Sul sito web la lingua è descritta come "multipiattaforma":

Multipiattaforma: Haxe può essere compilato su tutte le piattaforme di programmazione più diffuse con il suo compilatore veloce: JavaScript, Flash, NekoVM, PHP, C ++, C # e Java (presto)

ma la multipiattaforma può essere fraintesa come piattaforme hardware o software (win, mac, linux).

Qual è la parola più adatta che descrive questa capacità?


3
Rimuoverei "compilazioni" e direi semplicemente che questo linguaggio di programmazione può essere trasformato in un altro attraverso l'uso di un interprete.
Neil,

6
Puoi usare la stessa parola che utilizzeresti per le lingue normali: tradurre, traduttore. È chiaro e ho sentito la parola usata in questo senso.
superM

4
@teresko In che modo? L'unico modo in cui ho potuto vederti argomentare che stai usando una definizione di compilazione eccessivamente restrittiva e inutile (che limita l'output al codice macchina).

18
@Neil: trasformare un programma scritto in una lingua in un'altra lingua non è interpretazione. In effetti, questa è la definizione di compilazione .
Jörg W Mittag,

2
@Neil, la compilation, per definizione, è una trasformazione da una lingua all'altra. E la "trasformazione" suona allo stesso modo oscura e arcana come la "compilazione", purché il tuo lettore non sia esperto di riscrittura e simili. Quindi suggerirei di usare la parola "targeting", ad es. "Haxe si rivolge a JavaScript, Flash, qualunque cosa e simili".
SK-logic,

Risposte:


41

Il termine abituale è "transcompilazione", non un termine comune, ma tecnicamente corretto. Non è solo per i nuovi linguaggi di scripting alla moda (CoffeeScript -> JavaScript); i primi compilatori C ++ erano infatti transcompilatori in C.


2
Inoltre "traspila" come in "Il transpiler traspila CoffeeScript in Javascript"

4
Non ho mai sentito questo termine prima d'ora, essendo sul campo da decenni. Ti dispiace indicare le sue origini (un link al primo articolo in cui è apparso sarebbe il migliore)?
SK-logic,

Da Wikipedia : "Un compilatore da sorgente a sorgente [aka." Transcompiler "," transpiler "] traduce tra linguaggi di programmazione che operano all'incirca allo stesso livello di astrazione, mentre un compilatore tradizionale traduce da un linguaggio di programmazione di livello superiore a un livello inferiore linguaggio di programmazione di livello ".
10

4
@ l0b0, Wikipedia non commenta le origini del termine e sicuramente non dovrebbe mai essere una fonte originale .
SK-logic,

3
... la ricerca della "transcompilazione" su google non produce alcun risultato correlato ...
Bakuriu,

27

Mi dispiace signori, ma la parola per questo è solo "compilata" . Significa trasformare un tipo di codice in un altro tipo di codice. Non fa alcuna differenza se quel codice è inglese, C ++, codice macchina x86, codice macchina ARM, Java, bytecode o torna in inglese. Generalmente lo usiamo per indicare il viaggio dal linguaggio di programmazione al codice macchina, ma questo è un aspetto che la parola ha acquisito nel tempo. E hey, se un numero sufficiente di persone inizia a usare una parola in modo errato, acquisisce davvero quel nuovo significato. Ma se vuoi una parola per trasformare Haxe in C ++, la parola è "compilazione" .

Multipiattaforma: Haxe può essere compilato in tutti i linguaggi di programmazione più diffusi con il suo compilatore veloce: JavaScript, Flash, NekoVM, PHP, C ++, C # e Java (presto)

(Inoltre, sto ignorando Merriam-Webster, perché sono stupidi perché non sono d'accordo con me ... hmmmm)


10

Forse questa è una domanda per https://english.stackexchange.com/, tuttavia direi che il processo di compilazione include la compilazione in un altro linguaggio di alto livello e non si limita solo ai compilatori che si compilano verso il codice macchina nativo.

Come una parola "Compile" non è affatto specifica per i compilatori di computer ed è abbastanza generale. "Compilare una tabella" o "compilare un elenco di nomi" mi viene in mente, quindi è abbastanza ampio per molti scopi (processori di testo come la compilazione di Latex, ecc.). Per essere più specifico sull'obiettivo della compilazione, userei to-source-compilatore

Ora, per l'esempio specifico, penso che la piattaforma sia una parola appropriata da usare. Poiché i linguaggi umani sono intrinsecamente ambigui, è necessario utilizzare la ridondanza (esempi, parafrasando con altre parole, spiegando) per chiarire il punto in caso di dubbio.

Vorrei anche leggere la frase "Haxe" in un modo che includa librerie standard e cose simili. Vale a dire che in questo caso la piattaforma sarebbe un superset di "linguaggio" e potresti separarlo da quello chiamandolo "piattaforma di sviluppo software" ecc.


4
Penso che intendi english.stackexchange.com?
Suman,

3

Puoi dire che un compilatore ha le lingue X, Y e Z come obiettivi di traduzione o progettare una lingua con in mente quegli obiettivi.


2

Direi che il compilatore per definizione si traduce in un linguaggio di programmazione diverso (almeno questa è la definizione che conosco - programma che trasforma una lingua in un'altra). Ad esempio la maggior parte dei compilatori C produce assembly come output. I compilatori di assiemi prendono questo output e lo trasformano nel codice binario che è anche un linguaggio (certo - probabilmente nessuno ci scrive scrive negli ultimi 40 anni o più ma tecnicamente è il linguaggio) - che può essere preso e ricompilato per dire micro- operazioni dei processori (o ci sono alcune operazioni eseguite dal linker sui file oggetto). Allo stesso modo iljavapcompila in bytecode. Di solito alla fine di tale catena c'è un interprete che esegue il codice finale (sia esso CPU, GPU o programma eseguito). Non esiste un "codice macchina" come il moderno x86 ricompila i programmi in operazioni interne (micro-operazioni) e sono perfettamente in grado di trattare il codice macchina ARM come linguaggio interpretato su x86 o viceversa (in alcuni casi anche ricompilare da una forma all'altra).

Haxe è un compilatore da sorgente a sorgente in quanto non trasforma il linguaggio di livello superiore in un livello di livello inferiore come negli esempi precedenti. Non sembra affrontare direttamente il tuo problema di ambiguità multipiattaforma, ma sfortunatamente non penso che ci sia un modo pratico di differenziazione tra queste due cose: le API sono tipi di lingue che possono essere interpretate, ricompilate in generale, ecc.


1

Prima cosa: non so se esiste già una parola adatta per questa funzione.

Ma forse potrebbe essere chiamato multilingua? O languageagnostico? Poiché si tratta più del linguaggio di programmazione, la menzione di "linguaggio" nel nome potrebbe renderlo più ovvio della multipiattaforma.

Naturalmente anche il linguaggio è ambiguo, in quanto si potrebbe comprendere che il codice sorgente può essere scritto in qualsiasi linguaggio del mondo reale (ad esempio perché le variabili possono essere scritte in unicode).

D'altro canto, ogni programmatore esperto riconoscerà probabilmente un costrutto diverso dalla localizzazione o dall'internazionalizzazione, quindi potrebbe "ottenerlo" più facilmente.

Solo i miei 2 centesimi.


non penso che sia accurato; e se vedi il fatto che al sito piacciono solo le risposte effettivamente corrette. ma benvenuti nella comunità e spero che risponderete ancora un po 'di dove siete sicuri della risposta :)
tgkprog
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.