인터프리터 란
코드를 한 줄씩 읽어 내려가면서 실행하는 프로그램
'컴파일러'와 대조적입니다.
고급 프로그래밍 언어 중 대부분이 인터프리터 언어입니다.
각 플랫폼에 지원하는 인터프리터만 있다면 실행 가능하므로 플랫폼에 독립적입니다.
인터프리터 언어가 많아지는 이유
프로그래밍 언어의 설계가 용의 합니다.
실행 부분을 컴파일 언어로 실행하는 전제조건이 붙어 있어 언어 설계자가 자신이 원하는 부분을 구현하는 데에 도움을 줍니다.
이러한 조건으로 언어 설계 기간이 단축됩니다.
단점
인터프리터는 실행 시마다 소스 코드를 한 줄씩 기계어로 번역하는 방식이므로 실행 속도는 느립니다.
이러한 단점을 해결하기 위해 바이트코드 컴파일러를 이용해 소스 코드를 가상 머신 타깃의 바이트코드로 변환하거나
반복적으로 쓰이는 함수와 클래스 등의 기계어 코드를 캐싱하는 JIT 컴파일러를 인터프리터에 내장하는 방식이 도입되었습니다.
소스 코드가 쉽게 공개됩니다.
주로 인터프리터로 사용하는 언어의 경우 바이트코드 등으로 컴파일해서 배포하는 경우가 잘 없고, 지원한다고 해동 컴파일 전/후 언어가 비교적 단순한 편이므로 쉽게 디컴파일이 가능합니다.
암호화는 경우 어차피 실행할 때 복호화하여 무용지물 되어 식별자들을 전부 이상하게 바꾸거나 해석하기 어렵게 하는 방법 외에는 없습니다.
장점
속도의 문제가 있어도 사용하는 이유는 프로그램 수정이 간단합니다.
컴파일러는 소스코드를 번역하여 실행 파일을 만들기 때문 수정 사항이 존재하는 경우 소스를 재 컴파일해야 합니다.
프로그램이 작고 간단한 경우 상관없지만 반대의 경우 컴파일 시간 단위가 되는 경우가 많아집니다.
하지만 인터프리터는 소스 코드를 수정하는 경우 실행시키면 끝이므로 수정이 빈 번하 개 발생하는 용도의 프로그래밍에서 많이 사용됩니다.
프로그래밍 언어 차원에서 동적인 기능을 지원하기 유리합니다.
컴파일러도 어느 정도의 동적인 기능을 지원하지만 실행 시간에만 어떤 모듈을 사용할지 결정하는 것이나 사용자가 입력한 임의의 프로그래밍 평가, 실행 중 인 코드 자체를 수정하며 실행하는 등의 기능을 컴파일러로 구현 불가합니다.
컴파일러 된 프로그램에 이러한 기능이 존재하여 사용 가능한 경우 인터프리터가 해당 프로그램에 내장되어 있을 겁니다.
디버그 하는 방식이 컴파일러와 다른 방식입니다.
인터프리터의 경우 코드를 한 줄씩 실행 가능 하여 어떤 코드를 작성하고 바로 실행하여 문제 유무를 실시간으로 확인하여 수정이 가능합니다.
이러한 방식으로 코드를 한줄씩 읽어서 실행하므로 구문 오류가 나오는 부분 전까지 정삭적으로 실행이 가능합니다.
인터프리터 언어 : Python, Ruby, Basic, JavaScript, SQL, HTML
감사합니다.
'백수' 카테고리의 다른 글
java 기초 개념 (0) | 2022.09.27 |
---|---|
트랜잭션 (0) | 2022.09.23 |
플랫폼 독립성 (0) | 2022.09.20 |
객체 지향 프로그램밍(OOP : Object-oriented programming) (0) | 2022.09.17 |
피들러(Fiddler) (0) | 2021.01.17 |