Wie kann ich sagen, dass die Programmiersprache in andere Sprachen übersetzt wird?

22

Wie kann ich auf Englisch sagen, dass die Programmiersprache in andere Programmiersprachen kompiliert werden kann?

Das Beispiel kann Haxe sein . Auf der Website ist die Sprache als "Multiplattform" beschrieben:

Multiplattform: Haxe kann mit seinem schnellen Compiler für alle gängigen Programmierplattformen kompiliert werden - JavaScript, Flash, NekoVM, PHP, C ++, C # und Java (in Kürze)

Multiplattform kann jedoch als Hardware- oder Softwareplattform (win, mac, linux) missverstanden werden.

Also, was ist das am besten geeignete Wort, das diese Fähigkeit beschreibt?

danilo2
quelle
3
Ich würde "compiles" entfernen und einfach sagen, dass diese Programmiersprache durch Verwendung eines Interpreters in eine andere umgewandelt werden kann.
Neil
6
Sie könnten dasselbe Wort verwenden wie für reguläre Sprachen: übersetzen, übersetzen. Es ist klar, und ich habe gehört, dass das Wort in diesem Sinne gebraucht wird.
SuperM
4
@teresko Wie so? Ich konnte nur sehen, dass Sie argumentieren, dass Sie eine zu restriktive und nutzlose Definition der Kompilierung verwenden (die die Ausgabe auf Maschinencode beschränkt).
18
@Neil: Das Umwandeln eines in einer Sprache geschriebenen Programms in eine andere Sprache ist keine Interpretation. Tatsächlich ist dies die Definition von Kompilierung .
Jörg W Mittag
2
@Neil, Zusammenstellung, per Definition, ist eine Transformation von einer Sprache in eine andere. Und "Transformation" klingt ebenso undurchsichtig wie "Zusammenstellung", solange Ihr Leser nicht mit dem Umschreiben von Begriffen und dergleichen vertraut ist. Daher würde ich vorschlagen, das Wort "Targeting" zu verwenden, z. B. "Haxe zielt auf JavaScript, Flash usw. ab".
SK-logic

Antworten:

41

Der übliche Begriff ist "Transcompilation" - kein gebräuchlicher, aber der technisch korrekte. Es ist nicht nur für trendige neue Skriptsprachen (CoffeeScript -> JavaScript) gedacht. Die ersten C ++ - Compiler waren tatsächlich Transcompiler nach C.

Kilian Foth
quelle
2
Auch "transpiles" wie in "Der Transpiler transpiliert CoffeeScript in Javascript"
4
Ich habe diesen Begriff noch nie zuvor gehört und bin seit Jahrzehnten im Feld. Darf ich auf seine Ursprünge hinweisen (ein Link zum ersten Artikel, auf dem er erschien, wäre der beste)?
SK-logic
Aus Wikipedia : "Ein Source-to-Source-Compiler (alias" Transcompiler "," Transpiler ") übersetzt zwischen Programmiersprachen, die ungefähr auf derselben Abstraktionsebene arbeiten, während ein traditioneller Compiler von einer höheren Programmiersprache in eine niedrigere übersetzt Programmiersprache. "
l0b0
4
@ l0b0, Wikipedia kommentiert die Herkunft des Begriffs nicht und es wird definitiv nie angenommen, dass es sich um eine Originalquelle handelt.
SK-logic
3
... Suche nach "Transcompilation" auf Google liefert keine ähnlichen Ergebnisse ...
Bakuriu
27

Tut mir leid, aber das Wort dafür ist nur "zusammengestellt" . Es bedeutet, einen Codetyp in einen anderen Codetyp umzuwandeln. Es macht keinen wirklichen Unterschied, ob dieser Code Englisch, C ++, x86-Maschinencode, ARM-Maschinencode, Java, Bytecode oder zurück zu Englisch ist. Wir verwenden es im Allgemeinen, um die Reise von der Programmiersprache zum Maschinencode zu bezeichnen, aber das ist ein Aspekt, den das Wort im Laufe der Zeit gewonnen hat. Und hey, wenn genug Leute anfangen, ein Wort falsch zu verwenden, erhält es tatsächlich diese neue Bedeutung. Wenn Sie jedoch ein Wort für die Umwandlung von Haxe in C ++ möchten, lautet das Wort "compiliert" .

Multi - Plattform: Haxe kann kompiliert werden in alle gängigen Programmiersprachen Sprachen mit seinem schnellen Compiler - JavaScript, Flash, NekoVM, PHP, C ++, C # und Java (bald)

(Außerdem ignoriere ich Merriam-Webster, weil sie dumm sind, weil sie nicht mit mir übereinstimmen ... hmmmm)

Philip
quelle
10

Vielleicht ist dies eine Frage für https://english.stackexchange.com/, aber ich würde sagen, dass der Prozess des Kompilierens das Kompilieren in eine andere Hochsprache umfasst und nicht nur auf Compiler beschränkt ist, die mit nativem Maschinencode kompilieren.

Als ein Wort ist "Kompilieren" überhaupt nicht spezifisch für Computer-Compiler und ist ziemlich allgemein. "Eine Tabelle zusammenstellen" oder "eine Liste von Namen zusammenstellen" kommt mir in den Sinn, deshalb ist es breit genug für viele Zwecke (Textverarbeitungsprogramme wie Latex kompilieren auch usw.). Um das Ziel der Kompilierung genauer zu bestimmen, würde ich den Quell-Compiler verwenden

Nun zum konkreten Beispiel, ich denke, dass Plattform ein passendes Wort ist. Da menschliche Sprachen von Natur aus zwiespältig sind, müssen Sie Redundanz verwenden (Beispiele, mit anderen Worten umschreiben, erklären), um den Punkt zu vermitteln, wenn Sie Zweifel haben.

Ich würde die "Haxe" -Anweisung auch so lesen, dass sie Standardbibliotheken und ähnliches enthält. Das heißt, in diesem Fall wäre die Plattform eine Obermenge von "Sprache", und Sie könnten sie davon trennen, indem Sie sie "Softwareentwicklungsplattform" usw. nennen.

wirrbel
quelle
4
Ich denke du meinst english.stackexchange.com?
Suman
3

Man kann sagen , dass ein Compiler X, Y und Z als Übersetzung hat Ziele , oder stellen Sie eine Sprache mit diesen Zielen im Auge behalten.

kommendes Gewitter
quelle
2

Ich würde sagen, dass der Compiler per Definition in eine andere Programmiersprache übersetzt (zumindest ist dies die mir bekannte Definition - ein Programm, das eine Sprache in eine andere transformiert). Zum Beispiel erzeugen die meisten C-Compiler Assembler als Ausgabe. Assembly-Compiler nehmen diese Ausgabe und wandeln sie in den Binärcode um, der auch eine Sprache ist (sicher - wahrscheinlich schreibt niemand in den letzten 40 Jahren oder länger darin, aber technisch ist es die Sprache). Operationen von Prozessoren (oder es gibt bestimmte Operationen, die der Linker an Objektdateien ausführt). Ebenso diejavapkompiliert in Bytecode. Normalerweise befindet sich am Ende einer solchen Kette ein Interpreter, der den endgültigen Code ausführt (sei es CPU, GPU oder ausgeführtes Programm). So etwas wie Maschinencode gibt es nicht, da modernes x86 die Programme in interne Operationen (Micro-Ops) umkompiliert, und ich bin perfekt in der Lage, ARM-Maschinencode als interpretierte Sprache auf x86 oder umgekehrt zu behandeln (in einigen Fällen sogar neu zu kompilieren) von einer Form zur anderen).

Haxe ist ein Source-to-Source- Compiler, da die übergeordnete Sprache nicht wie in den vorherigen Beispielen in eine niedrigere umgewandelt wird. Es scheint nicht direkt auf Ihr Problem der Multiplattform-Ambiguität einzugehen, aber ich glaube leider nicht, dass es einen praktischen Weg zur Unterscheidung zwischen diesen beiden Dingen gibt - die APIs sind Sprachen, die im Allgemeinen interpretiert, neu kompiliert usw. werden können.

Maciej Piechotka
quelle
1

Das erste zuerst: Ich weiß nicht, ob es für diese Funktion bereits ein passendes Wort gibt.

Aber vielleicht könnte man es auch mehrsprachig nennen? Oder sprachwissenschaftlich? Da es mehr um die Programmiersprache geht, könnte die Erwähnung von "Sprache" im Namen dies offensichtlicher machen als die Multiplattform.

Natürlich ist die Sprache auch mehrdeutig, da verstanden werden kann, dass der Quellcode in jeder realen Sprache geschrieben werden kann (zum Beispiel, weil Variablen in Unicode geschrieben werden können).

Auf der anderen Seite wird jeder erfahrene Programmierer ein solches Konstrukt wahrscheinlich als von der Lokalisierung oder Internationalisierung verschieden erkennen, so dass er es möglicherweise leichter "bekommt".

Nur meine 2 Cent.

Enduriel
quelle
ich denke nicht, dass das genau ist; und wenn Sie die Tatsache sehen, dass die Website nur sachlich korrekte Antworten mag. aber willkommen in der Community und hoffe, Sie antworten noch ein paar, bei denen Sie sich sicher sind :)
tgkprog