[서적] 자바스크립트로 배우는 SICP

자바스크립트로 배우는 컴퓨터 프로그램의 구조와 해석이라는 제목부터 감동이었다.
나는 자바스크립트로 개발을 시작했고, 아직까지도 자바스크립트를 주력 언어로 사용하고 있다.
하지만 자바스크립트에 대한 책이 아니라면 개발 서적 중 예시 코드를 자바스크립트로 다루는 책은 거의 없다.
그래서 다른 개발서적을 보면서도 그 내용을 설명하기 위한 코드 자체의 이해에도 조금 더 시간을 기울이게 되는 경우가 많았다.
반면 이 책은 예시코드들이 자바스크립트로 되어 있기에 내게는 한결 직관적으로 다가왔고, 부담감을 조금은 덜 수 있었다.

하지만 이 책은 결코 쉽지 않다.
‘컴퓨터 프로그램의 구조와 해석’을 자바스크립트로 다루는 것일 뿐, 그 내용 자체가 가벼울 수 없기 때문이다.
884쪽이라는 두께만큼 다루는 내용도 방대하고 깊다.
내게 익숙한 자바스크립트로 쓰여서 더 와닿는 것도 있겠지만, 자세하게 쓰인 내용을 번역자님이 번역도 매끄럽게 하신 것이 느껴졌다.
그래서 이 책은 한번만 보고 방대한 내용을 온전히 흡수하기에는 버거운 시간들이 많았고, 외국의 대학에서 이 책을 왜 강의 교재로 사용하는지도 이해가 갔다.
한번에 다 알아차리기에는 내용이 많지만, 자세하게 설명이 되어 있기에 이해가 되지 않았던 부분이나 처음에는 그냥 넘어갔던 부분도 두세번씩 보면 분명히 더 와닿을 것으로 느껴지는 단원들이 많다.
책 마무리 단계에서 보이는 인덱스 페이지도 두꺼운 두께를 반영하는 것과 동시에 대단원과 그것의 세부 단원들에 대해 아주 상세하게 구성되어 있는 것이 인상적이었다.
이 책의 장점은 어떤 것이 있는지 알아보면 아래와 같다.

장점

  1. 한 개념에 대해 적확한 어휘를 사용한다.
    예를 들어 79쪽에는 ‘lexical scoping’이 나온다. 보통 ‘정적범위’ 나 ‘렉시컬 스코핑’ 등으로 부르곤 하는 이 용어를 번역자분이 자세한 설명과 함께 ‘어휘순 범위 적용’이라고 풀어쓰신 부분이 있다. 한국어를 모국어로 하는 사람이어도 컴퓨터 프로그래밍 용어는 영어로 바로 사용하는 경우가 많고, 번역이 어려운 단어도 많았을 것으로 예상되는데 또렷한 번역이 좋았다.
  2. 읽을수록 곱씹으며 한 번 더 생각하게 만드는 개념이 많다.
    이 책에는 이진탐색트리, 포인터, 디지털 논리 회로, 레지스터 등이 등장한다. 반가산기와 전가산기 회로를 만드는 자바스크립트를 보는 것은 처음이었기에 조금 더 재미있고 신선하게 다가왔다. 책 제목의 특성상 당연할 수 밖에 없지만, 읽기 전에는 예상하지 못했던 바여서 ‘여기서 자료구조가 연결되는구나!’, ‘우와 이렇게 반가산기를 구현하는구나’와 같은 순간들이 많아서 흥미로웠다.
  3. 자바스크립트에 국한되지 않아 좋다.
    이 책에서 자바스크립트는 개념을 더 쉽게 설명해주기 위한 수단일 뿐, 자바스크립트를 통해 더 많은 이야기를 풀어나간다. 자바스크립트 이외에는 깊게 배워본 언어가 없어서 ‘커링’도 당연히 자바스크립트의 개념 중 하나라고 알고 있었다. 하지만 이 책에서는 커링에 대해 설명과 연습문제가 나와있어서 커링 뿐만 아니라 다양한 개념들이 자바스크립트 한정이 아닌 컴퓨터 프로그래밍 전체에서 사용되는 개념이라는 것을 알게 되어 좋았다.

이 책의 방대한 내용에 비해 내가 이해하고 받아들인 내용은 얕아서 감히 이 서평을 써도 될지 조금 망설여지기도 했다.
보다 더 많은 시간을 들여서 한 단원씩 꼼꼼하게 흡수하고 싶은 책이기 때문이다.
그리고 아는 내용이 많아질수록 분명히 더 많은 것들이 보일 수 있는 책이라고 생각한다.
자바스크립트를 주력으로 하는 (혹은 스킴보다 자바스크립트가 익숙한) 개발자 모두에게 이 책을 추천한다.

<한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.>


Written by
Sunmin
어제보다 나은 오늘을 만들기 위해 배우고, 기록하고, 회고합니다. Maker. Reader. Realistic optimist.