컴파일 언어는 인간이 일정한 툴을 활용하여 그 언어의 형식에 맞게 작성한 파일을 컴파일 과정을 통해 기계가 읽을 수 있도록 변환하는 과정이 필요하다. 때문에 수정이 필요할 때마다 컴파일을 다시 해야 하는 불편함이 있지만, 인터프린터 언어에 비해 비교적 실행 속도가 빠른 장점이 있다.
앞서 인터프리터 언어가 컴파일 언어보다 실행속도가 느리다고 말한 이유는 바로 인터프리터 언어가 실행시마다 소스코드를 한줄씩 기계어로 즉시 변환하기 때문이다. 하지만 컴파일 과정 없이 즉시 변환하기 때문에 소스파일의 덩치가 커지면 커질수록, 그리고 수정이 빈번할 수 밖에 없는 환경일수록 다시 컴파일하지 않고 수정하여 바로 사용할 수 있는 인터프리터 언어가 각광받고 있다.
인터프리터 언어에 대해 검색 중, 인터프리터 언어가 많아지는 이유에 대해서 위키백과에는 이렇게 나와있다.
인터프리터 언어가 많아지는 이유는 프로그래밍 언어의 설계가 쉽기 때문이다. 프로그래밍 언어도 “또다른 프로그램”이라는 점을 생각하자. 컴파일러 언어는 컴파일러도 컴파일러로 만들어야 하기때문에 세밀한 설계가 필요하다. 반면, 인터프리터 언어들은 실행부분을 컴파일 언어로 실행한다는 전제조건이 붙는다. 이 덕분에 프로그래밍 언어 설계할 때 언어 설계자가 자신이 원하는 부분을 구현하는 데에 도움을 준다. 그래서 언어 설계 기간이 엄청나게 단축된다.
여기서 이해가 어려운 부분이 "컴파일러도 컴파일러도 만들어야 하기 때문에" 라는 부분인데, 컴파일러라는 프로그램을 만드는 과정을 컴파일러를 거쳐야 하기 때문에 2중으로 설계를 해야 하며, 그래서 세밀한 설계가 필요하다고 이해한 것이 맞는지 궁금하다.
그리고, 인터프리터 언어들은 실행부분을 컴파일 언어로 실행한다는 말은... 좀 더 찾아봐야겠다. 아마도 컴파일 언어로 실행할 수 있기 때문에 컴파일러 설계에 대한 부담이 적어진다는 말일까?