プログラミング言語が他の言語にコンパイルされると言うにはどうすればよいですか?


22

プログラミング言語を他のプログラミング言語にコンパイルできることを英語で言うにはどうすればよいですか?

例はHaxeです。Webサイトでは、言語は「マルチプラットフォーム」と記述されています。

マルチプラットフォーム:Haxeは、JavaScript、Flash、NekoVM、PHP、C ++、C#、Java(すぐに)の高速コンパイラーを使用して、すべての一般的なプログラミングプラットフォームにコンパイルできます。

しかし、マルチプラットフォームはハードウェアまたはソフトウェアプラットフォーム(win、mac、linux)と誤解される可能性があります。

それでは、この能力を表す最も適切な言葉は何ですか?


3
「コンパイル」を削除し、このプログラミング言語をインタープリターを使用して別の言語に変換できると単純に言います。
ニール

6
通常の言語と同じ単語を使用できます:翻訳、翻訳者。それは明らかであり、この意味で使われている言葉を聞いたことがあります。
superM

4
@tereskoどうして?私が見ることができる唯一の方法は、コンパイルの過度に制限的で無用な定義を使用していることです(これにより、出力がマシンコードに制限されます)。

18
@Neil:ある言語で書かれたプログラムを別の言語に変換すること解釈ではありません。実際、これはコンパイル定義です。
ヨルグWミットタグ

2
@Neil、コンパイルは、定義により、ある言語から別の言語への変換です。また、読者が用語の書き換えなどに精通していない限り、「変換」は「コンパイル」と同様に不明瞭で難解なように聞こえます。そのため、「ターゲット設定」という言葉を使用することをお勧めします。たとえば、「HaxeはJavaScript、Flashなどをターゲットにしています」。
SKロジック

回答:


41

通常の用語は「トランスコンパイル」です。一般的な用語ではなく、技術的に正しい用語です。トレンディな新しいスクリプト言語(CoffeeScript-> JavaScript)だけのものではありません。最初のC ++コンパイラは、実際にはCへのトランスコンパイラでした。


2
また、「トランスパイルは、CoffeeScriptをJavascriptにトランスパイルする」のように「トランスパイルする」

4
私はこの用語を聞いたことがないので、何十年もフィールドにいます。その起源を指し示す心(最初に現れた論文へのリンクが最良でしょう)?
SKロジック

ウィキペディアから:「ソースからソースへのコンパイラー(別名「トランスコンパイラー」、「トランスパイラー」)は、ほぼ同じレベルの抽象化で動作するプログラミング言語間で変換します。一方、従来のコンパイラーは、より高いレベルのプログラミング言語からレベルのプログラミング言語。」
l0b0

4
@ l0b0、ウィキペディアは用語の起源についてコメントしておらず、元のソースであるとは決して想定されていません。
SKロジック

3
... Googleで「トランスコンパイル」を検索しても、関連する結果が得られません
...-バクリウ

27

申し訳ありませんが、この言葉は「コンパイル済み」です。それは、あるタイプのコードを別のタイプのコードに変えることを意味します。そのコードが英語、C ++、x86マシンコード、ARMマシンコード、Java、バイトコード、または英語に戻っても、実質的な違いはありません。通常、プログラミング言語からマシンコードへの旅行を意味するために使用しますが、それは時間の経過とともに単語が獲得した側面です。そして、もし十分な人が間違った言葉を使い始めたら、それは確かにその新しい意味を獲得します。ただし、HaxeをC ++に変換するための単語が必要な場合、その単語は「コンパイル」ですです。

マルチプラットフォーム:haXeのは、コンパイルすることができますすべての一般的なプログラミング言語の速いコンパイラで-はJavaScript、フラッシュ、NekoVM、PHP、C ++、C#とJava(すぐに)

(また、私はMerriam-Websterを無視しています。なぜならば、彼らは私に同意しないので愚かだからです...うーん)


10

たぶんこれはhttps://english.stackexchange.com/に対する質問かもしれませんが、コンパイルのプロセスには別の高レベル言語へのコンパイルが含まれ、ネイティブマシンコードに向けてコンパイルするコンパイラだけに限定されないということです。

「コンパイル」という言葉はコンピューターコンパイラーに固有のものではなく、非常に一般的です。「テーブルのコンパイル」または「名前のリストのコンパイル」が思い浮かぶので、多くの目的(Latexのコンパイルなどのテキストプロセッサなど)に十分な広さです。私が使用するコンパイルのターゲットについてより具体的にするために to-source-compilerをし

特定の例については、プラットフォームは使用するのに適切な言葉だと思います。人間の言語は本質的に曖昧であるため、疑わしい場合にポイントを得るために冗長性(例、他の言葉で言い換える、説明する)を使用する必要があります。

また、標準ライブラリなどを含む方法で「Haxe」ステートメントを読みます。つまり、その場合、plattformは「言語」のスーパーセットとなり、「ソフトウェア開発プラットフォーム」などと呼ぶことでそれを分離できます。


4
english.stackexchange.comのことですか?
スマン

3

コンパイラーは、翻訳ターゲットとして言語X、Y、およびZを持っていると言うか、それらのターゲットを念頭に置いて言語を設計します。


2

私はコンパイラすると言うでしょう定義上異なるプログラミング言語に翻訳されるます(少なくとも、これは私が知っている定義です。ある言語を別の言語に変換するプログラムです)。たとえば、ほとんどのCコンパイラは出力としてアセンブリを生成します。アセンブリコンパイラはこの出力を取得し、これも言語であるバイナリコードに変換します(確かに、過去40年以上はおそらく誰も書き込みを行いませんが、技術的には言語です)。プロセッサによる操作(またはオブジェクトファイルに対してリンカによって実行される特定の操作があります)。同様にjavapバイトコードにコンパイルします。通常、このようなチェーンの最後には、最終コード(CPU、GPU、または実行プログラム)を実行するインタープリターがあります。現代のx86はプログラムを内部操作(マイクロオペレーション)に再コンパイルするため、マシンコードのようなものはありません。ARMマシンコードをx86での解釈言語として、または他の方法で(完全に再コンパイルすれば)ある形式から別の形式へ)。

Haxeは、前の例のように高レベル言語を低レベル言語に変換しないため、ソースからソースへのコンパイラーです。マルチプラットフォームのあいまいさの問題に直接対処しているようには見えませんが、残念ながら、これら2つのことを実際に区別する方法はないと思います-APIは、一般的に解釈、再コンパイルなどが可能な種類の言語です。


1

まず最初に:この機能に適した単語が既にあるかどうかわかりません。

しかし、多言語と呼べるでしょうか?または言語に依存しない?プログラミング言語に関するものであるため、名前に「言語」と記載することで、マルチプラットフォームよりも明確になります。

もちろん、言語も曖昧です。なぜなら、ソースコードは任意の現実世界の言語で書くことができると理解できるからです(たとえば、変数はユニコードで書くことができるため)。

一方、経験豊富なプログラマーは、おそらくローカライズや国際化とは異なるものとしてこのような構造を認識するため、より簡単に「取得」することができます。

ちょうど2セントです。


私はそれが正確だとは思わない。そして、あなたが事実を見るならば、サイトは事実上正しい答えだけを好きです。しかし、コミュニティへようこそ、あなたが答えを確信している場所でさらに答えることを願っています:)
tgkprog
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.