7

통역사를 통해 한 언어를 다른 언어로 번역 할 수 있습니까?하나의 언어를 다른 언어로 번역 하시겠습니까?

quercus가 php를 java로 번역 할 수 있다고 들었습니다. 처음에는 코드 오류를 줄 수있는 값싼 솔루션이라고 생각했지만 완전히 그렇게 할 수 있다고합니다.

파이썬이나 루비와 같은 다른 언어로 PHP를 번역 할 수 있습니까? C++에서 Java로 등등?

+0

당신은 형편하지만 작업 솔루션을 생산하는 싼 형편 솔루션을 가질 수 있습니다. 일반적으로 langauges를 쉽게 번역 할 수는 없으며, 근본적인 기성 장치로는 훌륭한 일을 할 수 없습니다. –

+0

하나의 표준에 대한 잘못된 대답은 "원래 언어의 의미를 시뮬레이트하는 대상 언어 라이브러리의 원본 언어로 번역"입니다. 본질적으로 당신은 통역관을 불타고 있습니다. 당신은 언제나 이것을 할 수 있습니다. 하나의 튜링 기계가 항상 다른 기계를 에뮬레이트 할 수 있습니다. 그러나 그러한 번역 결과는 보통 읽는 것이 매우 끔찍하며 대상 언어 교육을받은 관리자가 예상하는 방식으로 대상 언어를 사용하지 않으며 종종 부팅에 높은 오버 헤드 (모든 시뮬레이션 호출)가 있습니다. 그래서, 당신은 항상 이것을 할 수 있지만, 그렇게해서는 안됩니다. –

+0

내 산호초에 대한 나의 SO answer on how to translate between languages

답변

11

한 언어를 다른 언어로 번역하는 것은 컴파일러, 통역사 및 번역기라는 프로그램 클래스에 대한 특별한 경우 일뿐입니다.

이 클래스의 프로그램은 (일반적으로)을 공식 문법으로 설명하고 기호 스트림을 출력 할 수있는 입력 기호 ("소스 코드")의 스트림을 사용합니다.

심볼의 출력 스트림이 될 수 있음 : 보통 시스템이 실행되고있는 운영 체제 및 하드웨어

  • 네이티브 어셈블리 코드. 그렇다면이 프로그램은 컴파일러라고합니다.
  • 다른 OS 및/또는 하드웨어의 네이티브 어셈블리 코드입니다. 이것은 컴파일러라고도 할 수 있지만 종종 크로스 컴파일러라고합니다.
  • 어떤 종류의 가상 머신에서 실행할 수있는 중간 양식. 이것은 실제 컴파일러는 아니지만 어쨌든 컴파일러라고도합니다. Java, C#, F #, VB.NET 등 "컴파일러"는 모두이 범주에 속합니다.
  • 다른 언어로 전적으로. 이것은 번역기라고하며 Java에서 C# 로의 번역기의 예가 있습니다. 관용어는 종종 쉽게 번역 할 수 없기 때문에 일반적으로 다양한 수준의 성공을 거칩니다.
  • 해석기는 동일한 원칙을 따르지 만 일반적으로 어딘가에 저장하지 않고 처리 된 양식을 실행합니다. Perl, PHP 및 쉘 스크립트는 모두이 범주에 속합니다. 예를 들어 PHP는 opcode를 opcode 캐쉬에 중간 형식으로 저장합니다 (opcoding 캐싱을 사용하는 경우).이 중간 형식은 저장되지 않으므로 PHP를 인터프리터로 호출하는 것이 안전합니다. SO 어떤 포인터에 대한 "transpiler"에 대한
+0

제안 할 수있는 책, 자습서 또는 예가 있습니까? 심지어 단순한 하나 – lostmylogin

5

이 문제는에서 또는로 잘 번역되지 않는 관용구가있는 경우에 발생합니다. 구문 적으로 유효한 코드를 얻었지만 누군가가 작성한 코드가 산성 인 것 같습니다.

+0

+1보기 –

+0

하지만 작동합니까? :) – ajsie

+0

얼마나 빨리 또는 잘,하지만 확실하게 증명할 수는 없습니다. –

1

이것은 당신이 후하지만 우리는 C++ 프레임 워크에 대한 파이썬, 자바와 루비 바인딩/래퍼를 만들기 위해 우리의 프로젝트 중 하나를 사용했습니다 꿀꺽 꿀꺽 http://en.wikipedia.org/wiki/SWIG

이 무엇을하지 않을 수 있습니다. http://marsyas.sness.net

+0

나는 그것을 얻지 않는다. .. 그것은 보통의 영어로 무엇을한다? – ajsie

2
+2

+1, 전에는 용어 transpiler 들어 본 적이 없다. 지옥 같은 소리는 들리지만 알아두면 유용합니다. –

+0

-1 저는 오랫동안 번역 툴을 구축 해왔고, "번역기"가 아닌 "transpiler"나 "트랜스 코더"와 같은 스크류 볼 용어를들을 때마다 그 자체가 스크루 볼이며 실제로는 좋은 해결책이 아닙니다. 전혀 작동합니다. 내가 보았던 것들은 실제로 대답을 만들어냅니다. 그러나 대답에 의해서만 "번역하고 실행하며 유지하기에 절대적인 악몽입니다." JOBOL을 생산하는 NACA에 대한 토론을 참조하십시오 : http://stackoverflow.com/questions/1029974/experience-migrating-legacy-cobol-pl1-to-java/1061829#1061829 –

+1

귀하의 교육에 미안합니다. 선생님 들께서이 학기를 가르쳐 주셨습니다. –