INTERPRETER 3.2 하이레벨 언어
책을 쓰다 보니 당초 예상보다 훨씬 더 두꺼워졌다. 하지만 자바 같은 거대한 언어를 담기엔 그래도 부족하다. 2개의 완전한 록스 구현체를 이 책에 욱여넣으려면 언어 자체를 아주 컴팩트하게 만들어야 한다.
작지만 유용한 언어가 뭘까 떠올려 보니, 자바스크립트, 스킴, 루아 등의 하이레벨 ‘스크립트’ 언어가 생각났다. 록스는 C 계열의 언어가 대부분 그렇듯이 이들 중에서 자바스크립트와 가장 비슷하다. 나중에 배우겠지만, 록스의 스코핑 규칙은 스킴과 유사하다. 3부에서 구현할 씨록스의 C 느낌은 전적으로 루아의 깔끔하고 효율적인 구현체를 모방했다.
자바스크립트는 이미 전 세계를 장악했고 엄청나게 많은 애플리케이션 개발에 응용되고 있다. 더 이상 자바스크립트를 '작은 스크립트 언어'라고 보기는 어렵다. 브렌던 아이크(Brendan Eich)는 열흘 만에 넷스케이프 내비게이터(Netscape Navigator)에 최초의 JS 인터프리터를 장착하여 웹 페이지 버튼에 애니메이션 효과를 주었다. 원래 자바스크립트는 아주 작고 귀여운 언어였지만 이후로 꾸준히 성장했다.
아이크는 맥가이버(MacGyver) 에피소드 한 편에 버금가는 재료와 시간으로 JS를 찍어냈기 때문에 자세히 들여다보면 면 테이프와 종이 클립이 비쳐 보이는 요상한 시맨틱 코너(semantic corner)가 더러 있다. 변수 호이스팅(variable hosting), 동적으로 바운드된(dynamically bound) this, 배열 구멍(holes in arrays), 암묵적 타입 변환(implicit conversion) 등등 말이다.
록스는 온전히 내 시간을 바쳐 공들인 작품이니 이것보단 조금 더 깔끔할 것이다.
록스는 자바스크립트, 스킴, 루아, 이 세 언어와 두 가지 측면을 공유한다.