¿Cómo puedo decir que el lenguaje de programación se compila a otros lenguajes?

22

¿Cómo puedo decir en inglés que ese lenguaje de programación se puede compilar a otros lenguajes de programación?

El ejemplo puede ser Haxe . En el sitio web, el idioma se describe como "Multiplataforma":

Multiplataforma: Haxe se puede compilar en todas las plataformas de programación populares con su compilador rápido: JavaScript, Flash, NekoVM, PHP, C ++, C # y Java (pronto)

pero la multiplataforma puede malinterpretarse como plataformas de hardware o software (win, mac, linux).

Entonces, ¿cuál es la palabra más adecuada para describir esta habilidad?

danilo2
fuente
3
Quitaría "compilaciones" y simplemente diría que este lenguaje de programación puede transformarse en otro mediante el uso de algún intérprete.
Neil
66
Puede usar la misma palabra que usaría para los idiomas normales: traducir, traductor. Está claro, y he oído que se usa la palabra en este sentido.
superM
44
@teresko ¿Cómo es eso? La única forma en que puedo verlo argumentando es que está utilizando una definición de compilación demasiado restrictiva e inútil (que restringe la salida al código de máquina).
18
@Neil: transformar un programa escrito en un idioma en otro idioma no es interpretación. De hecho, esta es la definición de compilación .
Jörg W Mittag
2
@Neil, la compilación, por definición, es una transformación de un idioma a otro. Y "transformación" suena igualmente oscura y arcana como "compilación", siempre que su lector no esté bien versado en la reescritura de términos y demás. Por lo tanto, sugeriría usar la palabra "orientación", por ejemplo, "Haxe está apuntando a JavaScript, Flash, lo que sea y tal".
SK-logic

Respuestas:

41

El término habitual es "transcompilación", no un término común, pero técnicamente correcto. Tampoco es solo para los nuevos y modernos lenguajes de scripting (CoffeeScript -> JavaScript); los primeros compiladores de C ++ fueron de hecho transcompiladores a C.

Kilian Foth
fuente
2
También "transpila" como en "El transpilador transpila CoffeeScript en Javascript"
44
Nunca he escuchado este término antes, estar en el campo durante décadas. ¿Te importaría señalar sus orígenes (un enlace al primer artículo donde apareció sería el mejor)?
SK-logic
De Wikipedia : "Un compilador de fuente a fuente [alias" transcompiler "," transpiler "] se traduce entre lenguajes de programación que operan aproximadamente en el mismo nivel de abstracción, mientras que un compilador tradicional se traduce de un lenguaje de programación de nivel superior a un lenguaje inferior. lenguaje de programación de nivel ".
l0b0
44
@ l0b0, wikipedia no comenta los orígenes del término, y definitivamente nunca se supone que sea una fuente original .
SK-logic
3
... la búsqueda de "transcompilación" en Google no produce ningún resultado relacionado ...
Bakuriu
27

Lo siento, caballeros, pero la palabra para esto es simplemente "compilada" . Significa convertir un tipo de código en otro tipo de código. No hay diferencia real si ese código es inglés, C ++, código de máquina x86, código de máquina ARM, Java, bytecode o vuelve al inglés. Generalmente lo usamos para referirnos al viaje del lenguaje de programación al código de máquina, pero ese es un aspecto que la palabra ha ganado con el tiempo. Y oye, si suficientes personas comienzan a usar una palabra de manera incorrecta, de hecho GANA ese nuevo significado. Pero si quieres una palabra para convertir Haxe en C ++, la palabra es "compila" .

Multiplataforma: Haxe se puede compilar en todos los lenguajes de programación populares con su compilador rápido: JavaScript, Flash, NekoVM, PHP, C ++, C # y Java (pronto)

(Además, estoy ignorando a Merriam-Webster, porque son estúpidos porque no están de acuerdo conmigo ... hmmmm)

Philip
fuente
10

Tal vez esta sea una pregunta para https://english.stackexchange.com/, sin embargo, diría que el proceso de compilación incluye la compilación en otro lenguaje de alto nivel y no solo se limita a los compiladores que compilan hacia el código de máquina nativo.

Como palabra "compilar" no es específica de los compiladores de computadora y es bastante general. Me viene a la mente "compilar una tabla" o "compilar una lista de nombres", por lo tanto, es lo suficientemente amplio para muchos propósitos (los procesadores de texto también compilan Latex, etc.). Para ser más específico sobre el objetivo de la compilación, usaría to-source-compiler

Ahora, para el ejemplo específico, creo que plataforma es una palabra apropiada para usar. Dado que los lenguajes humanos son intrínsecamente ambiguos, debe usar la redundancia (ejemplos, parafraseando con otras palabras, explicando) para transmitir el punto en caso de duda.

También leería la declaración "Haxe" de una manera que incluye bibliotecas estándar y cosas similares. Es decir, en ese caso, la plataforma sería un superconjunto de "lenguaje" y podría separarlo de eso llamándolo "plataforma de desarrollo de software", etc.

wirrbel
fuente
44
Creo que te refieres a english.stackexchange.com?
Suman
3

Puede decir que un compilador tiene los idiomas X, Y y Z como objetivos de traducción , o diseñar un idioma con esos objetivos en mente.

tormenta
fuente
2

Yo diría que el compilador por definición se traduce a un lenguaje de programación diferente (al menos esta es la definición que conozco, un programa que transforma un lenguaje en otro). Por ejemplo, la mayoría de los compiladores de C producen ensamblaje como salida. Los compiladores de ensamblados toman esta salida y la transforman en el código binario que también es un lenguaje (seguro, probablemente nadie escribe escribe en él durante los últimos 40 años o más, pero técnicamente es un lenguaje), que puede tomarse y compilarse para decir micro- operaciones por procesadores (o hay ciertas operaciones realizadas por el vinculador en archivos de objetos). Del mismo modo eljavapcompila en bytecode. Por lo general, al final de dicha cadena hay un intérprete que ejecuta el código final (ya sea CPU, GPU o programa ejecutado). 'No existe tal cosa' como código de máquina, ya que el x86 moderno recompila los programas en operaciones internas (micro-operaciones) y soy perfectamente capaz de tratar el código de máquina ARM como lenguaje interpretado en x86 o al revés (en algunos casos incluso recompilar de una forma a otra).

Haxe es un compilador de fuente a fuente, ya que no transforma el lenguaje de nivel superior en el nivel inferior como en los ejemplos anteriores. No parece abordar directamente su problema de ambigüedad multiplataforma, pero desafortunadamente no creo que haya una forma práctica de diferenciación entre esas dos cosas: las API son un tipo de lenguajes que pueden interpretarse, compilarse, etc., en general.

Maciej Piechotka
fuente
1

Lo primero es lo primero: no sé si ya hay una palabra adecuada para esta función.

¿Pero tal vez podría llamarse multilenguaje? ¿O el lenguajeagnóstico? Como se trata más del lenguaje de programación, la mención de 'lenguaje' en el nombre podría hacerlo más obvio que la multiplataforma.

Por supuesto, el lenguaje también es ambiguo, ya que se podría entender que el código fuente se puede escribir en cualquier idioma del mundo real (por ejemplo, porque las variables se pueden escribir en unicode).

Por otro lado, todos los programadores experimentados probablemente reconocerán tal construcción como diferente de la localización o la internacionalización, por lo que podrían 'obtenerla' más fácilmente.

Solo mis 2 centavos.

Enduriel
fuente
no creo que sea exacto; y si ve el hecho, al sitio le gustan solo las respuestas objetivamente correctas. pero bienvenido a la comunidad y espero que responda un poco más cuando esté seguro de la respuesta :)
tgkprog