안녕하세요, 이번 글에서는 Chrome의 V8 Engine이 무엇인지에 대해서 소개해보려고 합니다.
V8 엔진이 무엇인지 소개하기에 앞서, 컴퓨터가 사람이 작성한 코드를 어떻게 이해하는지에 대해서 알아보려고 합니다.
컴퓨터는 여러분도 알다시피 '10110' 과 같은 Binary (이진수- 0과 1로 구성된 수) 숫자만을 전기신호로 바꾸어 동작하게 됩니다. 이러한 이진수 숫자들을 'Machine code', 즉 '기계 코드'라고 하는데, 컴퓨너는 오직 이 '기계 코드' 만을 이해할 수 있습니다.
하지만 우리가 작성하는 프로그래밍 언어는 C, C++, Java, Python과 같은 프로그래밍 언어를 사용하지요. 이러한 프로그래밍 언어를 고수준 언어 (High Level Language)라고 합니다. 그리고 기계 코드와 같이 컴퓨터가 이해하기 쉬운 언어를 저수준 언어 (Low Level Language)라고 하는데, 사실 어떤 언어가 고수준이고 저수준 인지는 상대적입니다. 어떤 것에 상대적이냐 하면 사람이 이해하기 쉬울수록 고수준 언어이고, 그렇지 못할수록 저수준 언어로 분류합니다. 예를 들어,
다음과 같이 누군가는 Ruby를 C보다 고수준 언어로 여길 수 있고, Visual Basic을 ruby보다 고수준 언어로 여길 수도 있지요. 사실 명확한 기준은 아니지만 결론적으로 사람이 작성하는 프로그래밍언어는 컴퓨터가 이해하는 이진수까지 변환이 되어 컴퓨터가 이를 이해하고 동작하게 됩니다.
컴퓨터는 고수준언어를 기계 코드 로 변형하기 위해 이 3가지를 이용합니다.
Compilers
컴파일러는 소스코드를 실행가능한 파일 (컴퓨터가 실행할 수 있는 코드 더미로 만들어진 파일)로 변환해주는 역할을 합니다.
Transpilers
트랜스파일러는 소스 코드를 또 다른 타입의 소스코드로 변환하는 역할을 합니다.
Interpreters
인터프리터는 소스코드를 곧바로 실행합니다. 하지만 이 때 실시간으로 실행하면서, 무언가 (파일 등)를 남기지는 않습니다.
그렇다면 오늘 소개할 V8 엔진은 도대체 무엇일까요? 앞서 여러가지 주제로 길게 설명한 이유는 바로 V8 엔진이 Javascript 를 기계코드로 바꾸어 주는 Javascript Interpreter 이기 때문입니다.
V8은 크롬 브라우저 안에 내장되어 있고,크롬 뿐만 아니라 각각의 브라우저마다 각자의 자바스크립트 엔진을 가지고 있습니다.
이처럼 모든 웹 브라우저는 Javascript를 실행하기위해 모두 JS Engine을 내장하고 있습니다.
컴퓨터는 우리가 작성한 소스코드를 실행하기 위해서 Compilers, Interpreters, Transplier등을 가지고 있습니다. V8 Engine은 Javascript Interpreter의 일종으로 크롬 브라우저가 내장하고 있는 Javascript Engine 이며 모든 브라우저는 각자의 JS Engine을 가지고 있습니다.