개발자

컴파일러와 인터프리터

2022년 08월 15일조회 282

제가 이해하고 있는 내용이 맞는지 궁금합니다 컴파일러란 코드를 한번에 기계어로 번역해주는 것 인터프리터란 코드를 한번에 한 줄 씩 기계어로 번역해주는 것

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

이승현님의 프로필 사진

말씀하신 것은 큰 개념에서는 맞습니다. 컴파일러 언어와 인터프리터 언어로 나눠 생각하시는 것이 좋을 듯 합니다. 실행시킬 때, 관여하지 않으면 컴파일러, 관여하면 인터프리터 입니다. 이렇게 설명드리는 것에는 아래의 두가지 예 때문인데요... 1. 컴파일러 언어 중에는 Java가 있습니다. Java의 경우, 컴파일러가 (실제 실행시킬 머신의)기계어를 만들어 주지 않습니다. JVM이라는 가상 머신에서 돌아가는 기계어(bytecode)를 만들어 줍니다. Java 프로그램을 컴파일한 결과물은, JVM이 지원되는 모든 머신에서 작동하긴 하지만, 그 결과물이 해당 머신의 기계어는 아닙니다. 그러나, 그 결과물을 실행하는 순간, 컴파일러는 필요 없습니다. 2. 인터프리터 언어 중에는 Javascript가 있죠. Javascript는 Webbrowser에서 작동하도록 만들어진 언어이고, Javascript자체로 그냥 Webbrowser의 인터프리터에 의해 동작합니다. 초창기에는 한 줄 한 줄 실행하여 기계어로 바꾸는 식으로 동작했지만, 요즘은, 자주 불리는 부분을 한번 기계어로 바꾸어 다음에 불릴 때, 또 기계어로 바꾸지 않고, 이전 것을 활용하는 역할을 인터프리터가 수행합니다. 이런 메커니즘을 통해 성능을 올리는 거죠. ㅎ 그렇지만, 실행시간에 인터프리터가 필요한 사실은 변하지 않습니다. 그래서 한 번에 기계어로 번역하면 컴파일러, 한 줄 씩 기계어로 번역하면 인터프리터라고, 딱 잘라 구분하기 보다, 실행시간에 개입이 있는가? 혹은 없는가?로 언어의 Type을 나누는 것이 맞지 않을까.. 라고 개인적으로 생각합니다.

profile picture

익명

작성자

2022년 08월 16일

답변감사합니다 아직 주니어도 안달은 개발 초보인데 블로그에 정리할때 제가 생각한 내용을 정리해서 바로 적는 것 보다 여기 계신 뛰어난 선배님들의 검토를 받아 올리고 있습니다 감사합니다

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!