프로그래밍 언어가 다른 언어로 컴파일된다고 어떻게 말할 수 있습니까?


22

영어로 말하면 프로그래밍 언어를 다른 프로그래밍 언어로 컴파일 할 수 있습니까?

예는 Haxe 일 수 있습니다 . 웹 사이트에서 언어는 "멀티 플랫폼"으로 표시됩니다.

멀티 플랫폼 : Haxe는 JavaScript, Flash, NekoVM, PHP, C ++, C # 및 Java (곧)와 같은 빠른 컴파일러를 사용하여 널리 사용되는 모든 프로그래밍 플랫폼으로 컴파일 할 수 있습니다.

그러나 다중 플랫폼은 하드웨어 또는 소프트웨어 플랫폼 (win, mac, linux)으로 오해 될 수 있습니다.

이 능력을 설명하는 가장 적합한 단어는 무엇입니까?


3
나는 "컴파일"을 제거하고 일부 인터프리터를 사용하여이 프로그래밍 언어를 다른 언어로 변형 할 수 있다고 말하고 싶다.
Neil

6
일반 언어와 동일한 단어를 번역, 번역기처럼 사용할 수 있습니다. 분명하고, 이런 의미에서 사용되는 단어를 들었습니다.
superM

4
@teresko 어떻게 그렇게? 내가 알 수있는 유일한 방법은 지나치게 제한적이고 쓸모없는 컴파일 정의 (출력을 기계 코드로 제한)를 사용하는 것입니다.

18
@Neil : 한 언어로 작성된 프로그램을 다른 언어로 변환하는 것은 해석 되지 않습니다 . 실제로 이것은 컴파일 정의 입니다 .
Jörg W Mittag

2
@Neil (컴파일)은 정의에 따라 한 언어에서 다른 언어로의 변환입니다. 독자가 재 작성 등의 용어에 정통하지 않는 한 "변환"은 "컴파일"과 같이 모호하고 불명확하게 들립니다. 따라서 "Haxe는 JavaScript, Flash 등을 대상으로합니다"와 같이 "targeting"이라는 단어를 사용하는 것이 좋습니다.
SK-logic

답변:


41

일반적인 용어는 "컴컴 파일"입니다. 일반적인 용어는 아니지만 기술적으로 올바른 용어입니다. 최신 스크립트 언어 (CoffeeScript-> JavaScript)만을위한 것이 아닙니다. 첫 번째 C ++ 컴파일러는 실제로 C 로의 트랜스 컴파일러였습니다.


2
"트랜스 파일러는 CoffeeScript를 Javascript로 트랜스 필링"과 같은 "트랜 슬필"

4
나는 수십 년 동안 현장에서이 용어를 들어 본 적이 없다. 그 기원을 가리키는 마음 (첫 번째 논문에 대한 링크가 가장 좋을 것임)?
SK-logic

에서 위키 백과 : "A 소스 - 소스 컴파일러 [. 일명"transcompiler ","transpiler "] 추상화의 거의 같은 수준에서 작동 프로그래밍 언어간에 변환, 기존의 컴파일러는 낮은에 높은 수준의 프로그래밍 언어에서 번역하면서 레벨 프로그래밍 언어. "
l0b0

4
@ l0b0, wikipedia는 용어의 기원에 대해 언급하지 않으며 원래의 출처 가 될 수 없습니다 .
SK-logic

3
... Google에서 "트랜스 컴파일"을 검색해도 관련 결과가 나타나지 않습니다.
Bakuriu

27

죄송합니다, 그러나 이것에 대한 단어는 단지 "컴파일" 입니다. 한 유형의 코드를 다른 유형의 코드로 바꾸는 것을 의미합니다. 해당 코드가 영어, C ++, x86 기계어 코드, ARM 기계어 코드, Java, bytecode 또는 영어로 돌아가는 경우 실제로 차이가 없습니다 . 우리는 일반적으로 프로그래밍 언어에서 기계 코드로의 여행을 의미하는 데 사용하지만 시간이 지남에 따라 단어가 얻은 측면입니다. 그리고 충분한 사람들이 단어를 잘못 사용하기 시작하면 새로운 의미를 얻게됩니다. 그러나 Haxe를 C ++로 바꾸는 단어를 원한다면 단어는 "compiles" 입니다.

멀티 플랫폼 : Haxe는 JavaScript, Flash, NekoVM, PHP, C ++, C # 및 Java (곧)와 같은 빠른 컴파일러를 사용하여 널리 사용 되는 모든 프로그래밍 언어 컴파일 할 수 있습니다.

(또한 Merriam-Webster를 무시하고 있습니다. 그들이 나와 동의하지 않기 때문에 어리석기 때문입니다 ... 흠)


10

어쩌면 이것은 https://english.stackexchange.com/에 대한 질문 일 수도 있지만 컴파일 프로세스에는 다른 고급 언어로의 컴파일이 포함되며 기본 기계 코드로 컴파일되는 컴파일러에만 국한되지 않는다고 말할 수 있습니다.

"컴파일"이라는 단어는 컴퓨터 컴파일러에만 국한된 것이 아니며 매우 일반적입니다. "테이블 컴파일"또는 "이름 목록 컴파일"이 마음에 들기 때문에 많은 목적을 위해 충분히 넓습니다 (라텍스 컴파일과 같은 텍스트 프로세서 등). 컴파일 대상에 대해 더 구체적으로 말하면 to-source-compiler를 사용합니다.

구체적인 예에서는 플랫폼이 사용하기에 적합한 단어라고 생각합니다. 인간의 언어는 본질적으로 모호하기 때문에 중복성 (예 : 다른 단어로 설명, 설명)을 사용하여 의심이가는 경우 그 요점을 파악해야합니다.

또한 표준 라이브러리 및 이와 유사한 것을 포함하는 방식으로 "Haxe"문을 읽을 것입니다. 즉,이 경우 플랫폼은 "언어"의 상위 집합이되며 "소프트웨어 개발 플랫폼"등을 호출하여 분리 할 수 ​​있습니다.


4
나는 당신이 english.stackexchange.com을 의미한다고 생각합니까?
Suman

3

컴파일러에는 번역 대상 으로 언어 X, Y 및 Z가 있거나 해당 대상을 염두에두고 언어를 설계 한다고 말할 수 있습니다 .


2

컴파일러 는 정의 에 따라 다른 프로그래밍 언어로 번역 한다고 말합니다 (적어도 이것은 내가 아는 정의입니다-한 언어를 다른 언어로 변환하는 프로그램입니다). 예를 들어 대부분의 C 컴파일러는 어셈블리를 출력으로 생성합니다. 어셈블리 컴파일러는이 출력을 가져 와서 언어 인 바이너리 코드로 변환합니다 (어쩌면-아마도 40 년 이상 동안 쓰지 않았지만 기술적으로는 언어입니다)-마이크로 말을 위해 다시 컴파일 할 수 있습니다. 프로세서에 의한 ops (또는 객체 파일에 대한 링커에 의해 수행되는 특정 작업이 있습니다). 마찬가지로javap바이트 코드로 컴파일합니다. 일반적으로 그러한 체인의 끝에는 최종 코드 (CPU, GPU 또는 실행 된 프로그램)를 실행하는 인터프리터가 있습니다. 현대 x86이 프로그램을 내부 작업 (마이크로 ops)으로 다시 컴파일하는 것과 같은 기계 코드와 같은 것은 없으며 x86 또는 다른 방식으로 ARM 기계 코드를 해석 된 언어로 완벽하게 처리 할 수 ​​있습니다 (일부 경우에는 다시 컴파일) 한 형태에서 다른 형태로).

Haxe는 이전 예제와 같이 더 높은 레벨의 언어를 더 낮은 레벨의 언어로 변환하지 않기 때문에 소스 간 소스 컴파일러입니다. 다중 플랫폼 모호성 문제를 직접 해결하지는 않지만 불행히도 두 가지 사이에 실질적인 차별화 방법이 있다고 생각하지 않습니다 .API는 일반적으로 해석, 재 컴파일 등의 언어입니다.


1

가장 먼저해야 할 것 : 이미이 기능에 적합한 단어가 있는지 모르겠습니다.

그러나 아마도 다국어라고 할 수 있습니까? 아니면 언어에 구애받지 않습니까? 프로그래밍 언어에 대한 것이기 때문에 이름에 '언어'를 언급하면 ​​멀티 플랫폼보다 더 명확해질 수 있습니다.

물론 언어도 모호합니다. 예를 들어 변수는 유니 코드로 작성 될 수 있기 때문에 소스 코드는 실제 언어로 작성 될 수 있습니다.

반면, 모든 노련한 프로그래머는 아마도 그러한 구조를 현지화 또는 국제화와 다른 것으로 인식하여 더 쉽게 얻을 수 있습니다.

그냥 내 2 센트.


나는 그것이 정확하다고 생각하지 않습니다. 사실을 보면 사이트는 사실적인 정답 만 좋아합니다. 그러나 지역 사회에 오신 것을 환영하고 당신이 대답에 대해 확신이있는 곳에서 더 많은 답변을 바랍니다 :)
tgkprog
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.