III

바이트코드 가상 머신

자바 인터프리터인 jlox는 프로그래밍 언어의 많은 기초를 가르쳐주었지만, 아직 배워야 할 것이 많습니다. 먼저, jlox에서 흥미로운 Lox 프로그램을 실행해보면 너무 느리다는 것을 알게 될 것입니다. jlox가 사용하는 인터프리터 방식AST를 직접 순회하는 방식은 *일부* 실제 용도에는 충분하지만, 범용 스크립팅 언어로는 아쉬운 점이 많습니다.

또한, 우리는 JVM 자체의 런타임 기능에 암묵적으로 의존합니다. 자바의 instanceof 같은 기능이 *어떻게든* 작동한다는 것을 당연하게 생각합니다. 그리고 JVM의 가비지 컬렉터가 메모리 관리를 처리해주기 때문에 단 한순간도 메모리 관리에 대해 걱정하지 않았습니다.

고수준 개념에 집중할 때는 이런 부분들을 간과해도 괜찮았습니다. 하지만 이제 인터프리터의 작동 방식을 알게 되었으니, 더 낮은 계층으로 파고들어 C 표준 라이브러리만을 사용하여 우리만의 가상 머신을 처음부터 구축할 때입니다 . . .