Como posso dizer que a linguagem de programação é compilada para outras linguagens?

22

Como posso dizer em inglês que a linguagem de programação pode ser compilada para outras linguagens de programação?

O exemplo pode ser Haxe . No site, o idioma é descrito como "Multiplataforma":

Multiplataforma: O Haxe pode ser compilado em todas as plataformas de programação populares com seu compilador rápido - JavaScript, Flash, NekoVM, PHP, C ++, C # e Java (em breve)

mas multiplataforma pode ser mal interpretada como plataformas de hardware ou software (win, mac, linux).

Então, qual é a palavra mais adequada para descrever essa capacidade?

danilo2
fonte
3
Eu removia "compilações" e simplesmente dizia que essa linguagem de programação pode ser transformada em outra através do uso de algum intérprete.
Neil
6
Você pode usar a mesma palavra que usaria para idiomas comuns: traduzir, tradutor. Está claro, e ouvi a palavra sendo usada nesse sentido.
SuperM
4
@teresko Como assim? A única maneira de ver você argumentar é usando uma definição excessivamente restritiva e inútil de compilação (que restringe a saída ao código da máquina).
18
@ Neil: transformar um programa escrito em um idioma em outro idioma não é interpretação. De fato, esta é a definição de compilação .
Jörg W Mittag
2
@ Neil, compilação, por definição, é uma transformação de um idioma para outro. E "transformação" parece igualmente obscura e misteriosa como "compilação", desde que seu leitor não seja muito versado em reescrever termos e coisas do gênero. Então, eu sugeriria usar a palavra "segmentação", por exemplo, "Haxe está segmentando JavaScript, Flash, seja o que for, e tal".
SK-logic

Respostas:

41

O termo usual é "transcompilação" - não é um termo comum, mas tecnicamente correto. Também não é apenas para as novas linguagens de script da moda (CoffeeScript -> JavaScript); os primeiros compiladores C ++ eram na verdade transcompiladores para C.

Kilian Foth
fonte
2
Também "transpila" como em "O transpilador transpila o CoffeeScript para Javascript"
4
Eu nunca ouvi esse termo antes, estando no campo há décadas. Mente apontando para suas origens (um link para o primeiro artigo em que apareceu seria o melhor)?
SK-logic
Da Wikipedia : "Um compilador fonte a fonte [aka." Transcompiler "," transpiler "] traduz entre linguagens de programação que operam aproximadamente no mesmo nível de abstração, enquanto um compilador tradicional traduz de uma linguagem de programação de nível superior para uma mais baixa linguagem de programação de nível ".
precisa saber é o seguinte
4
@ l0b0, a wikipedia não comenta as origens do termo e, definitivamente, nunca deve ser uma fonte original .
SK-lógica
3
... a pesquisa "transcompilation" no google não deu qualquer resultado relacionados ...
Bakuriu
27

Desculpe senhores, mas a palavra para isso é apenas "compilada" . Significa transformar um tipo de código em outro tipo de código. Não faz diferença se esse código é inglês, C ++, código de máquina x86, código de máquina ARM, Java, bytecode ou volta ao inglês. Geralmente o usamos para significar a viagem da linguagem de programação ao código da máquina, mas esse é um aspecto que a palavra ganhou com o tempo. E ei, se pessoas suficientes começarem a usar uma palavra incorretamente, ela realmente ganhará esse novo significado. Mas se você quer uma palavra para transformar o Haxe em C ++, a palavra é "compila" .

Multiplataforma: O Haxe pode ser compilado em todas as linguagens de programação populares com seu compilador rápido - JavaScript, Flash, NekoVM, PHP, C ++, C # e Java (em breve)

(Além disso, estou ignorando Merriam-Webster, porque eles são estúpidos porque discordam de mim ... hmmmm)

Philip
fonte
10

Talvez essa seja uma pergunta para https://english.stackexchange.com/, mas eu diria que o processo de compilação inclui a compilação para outra linguagem de alto nível e não se limita apenas aos compiladores que compilam no código de máquina nativo.

Como uma palavra "Compilar" não é específica para compiladores de computador e é bastante geral. "Compilar uma tabela" ou "compilar uma lista de nomes" me vem à mente, portanto, é amplo o suficiente para diversas finalidades (processadores de texto como o Latex também compilam etc.). Para ser mais específico sobre o destino da compilação, eu usaria o compilador de origem

Agora, para o exemplo específico, acho que plataforma é uma palavra apropriada para usar. Como as línguas humanas são inerentemente ambíguas, você precisa usar redundância (exemplos, parafraseando com outras palavras, explicando) para esclarecer a questão em caso de dúvida.

Eu também leria a declaração "Haxe" de uma maneira que inclui bibliotecas padrão e coisas semelhantes. Ou seja, nesse caso, a plataforma seria um superconjunto de "linguagem" e você poderia separá-lo disso chamando-o de "plataforma de desenvolvimento de software" etc.

wirrbel
fonte
4
Eu acho que você quer dizer english.stackexchange.com?
Suman
3

Você pode dizer que um compilador tem os idiomas X, Y e Z como destinos de tradução ou criar um idioma com esses destinos em mente.

tempestade
fonte
2

Eu diria que o compilador, por definição, se traduz em uma linguagem de programação diferente (pelo menos essa é a definição que eu sei - programa que transforma uma linguagem em outra). Por exemplo, a maioria dos compiladores C produz montagem como saída. Os compiladores de assembly pegam essa saída e a transformam no código binário que também é uma linguagem (com certeza - provavelmente ninguém escreve gravações nele nos últimos 40 anos ou mais, mas tecnicamente é a linguagem) - que pode ser usada e recompilada para dizer micro- operações por processadores (ou há determinadas operações feitas pelo vinculador em arquivos de objeto). Da mesma forma, ojavapcompila em bytecode. Normalmente, no final dessa cadeia, existe um intérprete que executa o código final (seja CPU, GPU ou programa executado). Não existe 'código de máquina', pois o x86 moderno recompila os programas em operações internas (micro-ops) e sou perfeitamente capaz de tratar o código de máquina ARM como linguagem interpretada no x86 ou o contrário (em alguns casos, até recompilar de um formulário para outro).

O Haxe é um compilador fonte a fonte , pois não transforma a linguagem de nível superior em linguagem de nível inferior, como nos exemplos anteriores. Parece não abordar diretamente o seu problema de ambiguidade de várias plataformas, mas infelizmente não acho que exista uma maneira prática de diferenciar essas duas coisas - as APIs são tipos de linguagens que geralmente podem ser interpretadas, recompiladas etc.

Maciej Piechotka
fonte
1

Primeira coisa: não sei se já existe uma palavra adequada para esse recurso.

Mas talvez isso possa ser chamado de multilíngue? Ou languageagnostic? Como é mais sobre a linguagem de programação, a menção de 'linguagem' no nome pode torná-la mais óbvia do que multiplataforma.

É claro que a linguagem também é ambígua, pois pode ser entendido que o código fonte pode ser escrito em qualquer idioma do mundo real (por exemplo, porque as variáveis ​​podem ser escritas em unicode).

Por outro lado, todo programador experiente provavelmente reconhecerá esse construto como diferente da localização ou internacionalização, para que eles possam "entendê-lo" mais facilmente.

Apenas meus 2 centavos.

Enduriel
fonte
não acho que isso seja preciso; e se você perceber que o site gosta apenas de respostas corretamente corretas. mas boas-vindas à comunidade e espero que você responder a algumas mais, onde você tem certeza sobre a resposta :)
tgkprog