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":

Multiplatform: Haxe can be compiled to all popular programming platforms with its fast compiler – JavaScript, Flash, NekoVM, PHP, C++, C# and Java (soon)

ma multipiattaforma può essere frainteso come piattaforma hardware o software (win, mac, linux).

Quindi qual è la parola più adatta che descrive questa abilità?

    
posta danilo2 16.04.2013 - 14:50
fonte

6 risposte

41

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

    
risposta data 16.04.2013 - 15:01
fonte
27

Siamo spiacenti, ma la parola per questo è solo "compilato" . 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 significare il viaggio dal linguaggio di programmazione al codice macchina, ma questo è un aspetto che la parola ha guadagnato nel tempo. E hey, se un numero sufficiente di persone inizia a usare una parola in modo errato, in effetti acquisisce quel nuovo significato. Ma se vuoi una parola per trasformare Haxe in C ++, la parola è "compila" .

Multiplatform: Haxe can be compiled into all popular programming languages with its fast compiler – JavaScript, Flash, NekoVM, PHP, C++, C# and Java (soon)

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

    
risposta data 16.04.2013 - 15:51
fonte
10

Forse questa è una domanda per link ma direi che il processo di compilazione include la compilazione in un altro linguaggio di alto livello e non lo è limitato solo ai compilatori che compilano il codice macchina nativo.

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

Ora, per l'esempio specifico, penso che la piattaforma sia una parola appropriata da usare. Dal momento che le lingue umane sono intrinsecamente ambigue, devi usare la ridondanza (esempi, parafrasando con altre parole, spiegando) per ottenere il punto in caso di dubbio.

Vorrei anche leggere l'istruzione "Haxe" in un modo che include librerie standard e cose simili. Cioè in quel caso la piattaforma sarebbe un superset di "lingua" e potreste separarla da essa chiamandola "piattaforma di sviluppo software" ecc.

    
risposta data 16.04.2013 - 14:59
fonte
3

Puoi dire che un compilatore ha le lingue X, Y e Z come traduzione target , o progetta una lingua con questi obiettivi in mente.

    
risposta data 17.04.2013 - 02:10
fonte
2

Direi che il compilatore per definizione 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 assemblaggi come output. I compilatori di assembly prendono questo output e lo trasformano nel codice binario che è anche un linguaggio (certo - probabilmente nessuno scrive scritture in esso negli ultimi 40 anni o più ma tecnicamente è lingua) - che può essere preso e ricompilato per dire micro- op da processori (o ci sono determinate operazioni fatte da linker su file oggetto). Allo stesso modo javap compila nel bytecode. Di solito alla fine di tale catena c'è un interprete che esegue il codice finale (sia esso CPU, GPU o programma eseguito). Non c'è "niente di simile" come codice macchina dato che il moderno x86 ricompila i programmi in operazioni interne (micro-op) 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 è source-to-source del compilatore in quanto non trasforma il linguaggio di livello superiore in livello inferiore come negli esempi precedenti. Non sembra affrontare direttamente il tuo problema di ambiguità multipiattaforma, ma sfortunatamente non penso ci sia un modo pratico di differenziare tra queste due cose: le API sono tipi di linguaggi che possono essere interpretati in generale, ricompilati ecc.

    
risposta data 17.04.2013 - 01:04
fonte
1

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

Ma forse potrebbe essere chiamato multilingua? O languageagnostic? Dato che si tratta più del linguaggio di programmazione, la menzione del "linguaggio" nel nome potrebbe renderlo più ovvio rispetto a multipiattaforma.

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

D'altra parte, ogni programmatore esperto probabilmente riconoscerà un tale costrutto diverso dalla localizzazione o dall'internazionalizzazione, in modo che possano "ottenerlo" più facilmente.

Solo i miei 2 centesimi.

    
risposta data 16.04.2013 - 15:01
fonte