두 개의 숫자를 추가하든 인터넷을 통해 요청을 보내든 모든 프로그램은 일련의 지침입니다. 컴파일러와 인터프리터는 사람이 읽을 수있는 코드를 컴퓨터가 읽을 수있는 기계어 코드로 변환합니다.
컴파일 된 언어에서 대상 컴퓨터는 프로그램을 직접 번역합니다. 해석 언어에서 소스 코드는 대상 컴퓨터에서 직접 번역되지 않습니다. 대신 인터프리터라고 하는 다른 프로그램이 코드를 읽고 실행합니다.
좋아요…하지만 그게 실제로 무슨 의미일까요?
만들고 싶은 후 무스 레시피가 있는데 고대 그리스어로 쓰여졌다 고 상상해보세요. 고대 그리스어를 사용하지 않는 당신이 그 지시를 따를 수있는 두 가지 방법이 있습니다.
첫 번째는 누군가 이미 당신을 위해 그것을 영어로 번역 한 경우입니다. 당신 (그리고 영어를 할 수있는 다른 사람)은 조리법의 영어 버전을 읽고 후 머스를 만들 수 있습니다. 이 번역 된 레시피를 컴파일 된 버전 으로 생각하십시오 .
두 번째 방법은 고대 그리스어를 아는 친구가있는 경우입니다. 후 무스를 만들 준비가되면 친구가 옆에 앉아 요리법을 한 줄씩 영어로 번역합니다. 이 경우 친구는 해석 된 레시피 버전의 통역사 입니다.
컴파일 된 언어
컴파일 된 언어는 프로세서가 실행할 수있는 기계어 코드로 직접 변환됩니다. 결과적으로 그들은 해석 된 언어보다 더 빠르고 효율적으로 실행되는 경향이 있습니다. 또한 개발자에게 메모리 관리 및 CPU 사용과 같은 하드웨어 측면에 대한 더 많은 제어 권한을 제공합니다.
컴파일 된 언어는 "빌드"단계가 필요합니다. 먼저 수동으로 컴파일해야합니다. 변경해야 할 때마다 프로그램을 "재 구축"해야합니다. 우리의 hummus 예에서 전체 번역은 당신에게 도착하기 전에 작성됩니다. 원저자가 다른 종류의 올리브 오일을 사용하기로 결정한 경우 전체 레시피를 다시 번역하여 다시 보내야합니다.
순수 컴파일 된 언어의 예는 C, C ++, Erlang, Haskell, Rust 및 Go입니다.
통역 언어
인터프리터는 프로그램을 한 줄씩 실행하고 각 명령을 실행합니다. 여기에서 저자가 다른 종류의 올리브 오일을 사용하기로 결정하면 이전 올리브 오일을 긁어 내고 새 오일을 추가 할 수 있습니다. 그러면 번역가 친구가 변경 사항이 발생하면이를 전달할 수 있습니다.
해석 된 언어는 컴파일 된 언어보다 훨씬 느 렸습니다. 그러나 JIT (Just-In-Time) 컴파일이 개발되면서 그 격차는 줄어들고 있습니다.
일반적인 해석 언어의 예로는 PHP, Ruby, Python 및 JavaScript가 있습니다.
작은 경고
대부분의 프로그래밍 언어는 컴파일 및 해석 된 구현을 모두 가질 수 있습니다. 언어 자체가 반드시 컴파일되거나 해석되는 것은 아닙니다. 그러나 단순함을 위해 일반적으로 그렇게 지칭됩니다.
예를 들어, 파이썬은 컴파일 된 프로그램이나 인터랙티브 모드의 해석 언어로 실행될 수 있습니다. 반면에 대부분의 명령 줄 도구, CLI 및 셸은 이론적으로 해석 언어로 분류 할 수 있습니다.
장점과 단점
컴파일 된 언어의 장점
네이티브 기계어 코드로 컴파일 된 프로그램은 해석 된 코드보다 빠릅니다. 이는 런타임에 코드를 번역하는 프로세스가 오버 헤드를 추가하고 프로그램이 전체적으로 느려질 수 있기 때문입니다.
컴파일 된 언어의 단점
가장 눈에 띄는 단점은 다음과 같습니다.
- 테스트 전에 전체 컴파일 단계를 완료하는 데 필요한 추가 시간
- 생성 된 바이너리 코드의 플랫폼 의존성
통역 언어의 장점
통역 언어는 더 유연하고 종종 동적 타이핑 및 작은 프로그램 크기와 같은 기능을 제공합니다. 또한 인터프리터가 소스 프로그램 코드를 직접 실행하기 때문에 코드 자체는 플랫폼 독립적입니다.
통역 언어의 단점
가장 눈에 띄는 단점은 컴파일 된 언어에 비해 일반적인 실행 속도입니다.