번역기 편집하기


편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
1번째 줄: 1번째 줄:
어떠한 언어를 다른 언어로 바꾸어 주는 프로그램을 번역기라고 한다.
어떠한 언어를 다른 언어로 바꾸어 주는 프로그램을 번역기라고 한다. 보통 세가지 경우를 생각할 수 있다.
번역기가 발전하게 된다면 사람을 통한 학습을 하지 않고도 번역기를 통해 외국인과 자연스레 대화하는 날이 올것이다. 2021년 현재의 시점에서도 간단한 여행회화 정도는 문제없는 수준이다.
 
== 프로그래밍에서의 번역기 ==
보통 세 가지 경우를 생각할 수 있다.


첫째로 '''고급 언어를 저급 언어로 바꾸는 경우'''이다. 도착어가 기계어나 바이트 코드인 경우. 어쨌든 실행하면 CPU가 알아먹어야 하므로 모든 언어는 기계어로 도착한다고 할 수 있겠다.
첫째로 '''고급 언어를 저급 언어로 바꾸는 경우'''이다. 도착어가 기계어나 바이트 코드인 경우. 어쨌든 실행하면 CPU가 알아먹어야 하므로 모든 언어는 기계어로 도착한다고 할 수 있겠다.
15번째 줄: 11번째 줄:
* 루비를 자바스크립트로 번역해주는 Opal
* 루비를 자바스크립트로 번역해주는 Opal
<s>전부 도착어가 자바스크립트인 것 같다면 착각이다.</s>
<s>전부 도착어가 자바스크립트인 것 같다면 착각이다.</s>
* Python을 C로 변환하는 CPython
 
마지막으로 '''저급 언어를 고급 언어로 바꾸는 경우'''가 있다. 이를 decompiler라고 한다.
마지막으로 '''저급 언어를 고급 언어로 바꾸는 경우'''가 있다. 이를 decompiler라고 한다.
이런 경우는 소스코드를 실행하기 위한 목적이 아니라 {{--|아니 애초에 고급언어도 결국 기계어로 실행시키는데 굳이 이런 뻘짓을 해서 실행시킬 이유가 뭘까}} [[역공학|프로그램을 분석]]하는 게 주 목적이다.
이런 경우는 소스코드를 실행하기 위한 목적이 아니라 {{--|아니 애초에 고급언어도 결국 기계어로 실행시키는데 굳이 이런 뻘짓을 해서 실행시킬 이유가 뭘까}} [[역공학|프로그램을 분석]]하는 게 주 목적이다.


해석하는 방식에 따라서도 두 가지로 나눌 수 있다.
해석하는 방식에 따라서도 두가지로 나눌 수 있다.


하나는 번역할 코드를 모두 읽어들인 후 한 번에 번역하는 '''[[컴파일러]](compiler)'''이다. 컴파일 타임에 오류를 잡아낼 수 있{{--|으며 통번역되기 때문에 속도가 월등히 빠르}}다.<ref>무슨 언어로 컴파일 되냐에 따라 다르다. 보통은 기계어로 컴파일 되기 때문에 아무래도 빠르지만 자바 프로그램의 경우 자바 바이트코드로 컴파일하여 JVM이라는 인터프리터에서 실행하기 때문에 실행속도에 차이가 난다.</ref>
하나는 번역할 코드를 모두 읽어들인 후 한 번에 번역하는 '''[[컴파일러]](compiler)'''이다. 컴파일 타임에 오류를 잡아낼 수 있{{--|으며 통번역되기 때문에 속도가 월등히 빠르}}다.<ref>무슨 언어로 컴파일 되냐에 따라 다르다. 보통은 기계어로 컴파일 되기 때문에 아무래도 빠르지만 자바 프로그램의 경우 자바 바이트코드로 컴파일하여 JVM이라는 인터프리터에서 실행하기 때문에 실행속도에 차이가 난다.</ref>
27번째 줄: 23번째 줄:
둘을 융합한 '''JIT(Just-in-time 컴파일)'''이라는 것도 있다. 미리 코드를 통번역 하지 않고, 프로그램을 시작할 때 필요한 부분만 번역하는 방식을 말한다.
둘을 융합한 '''JIT(Just-in-time 컴파일)'''이라는 것도 있다. 미리 코드를 통번역 하지 않고, 프로그램을 시작할 때 필요한 부분만 번역하는 방식을 말한다.
예로 PyPy, Dalvik VM등이 있다.
예로 PyPy, Dalvik VM등이 있다.
{{각주}}
{{각주}}
[[분류:응용 소프트웨어]]
[[분류:번역]]
리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다.
취소 편집 도움말 (새 창에서 열림)

| () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |}

이 문서에서 사용한 틀: