메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

프로그래밍 입문서로 여전히 훌륭한 개념 안내서

drv***

|

2023-02-26

자바스크립트로 배우는 SICP

모든 프로그래밍 언어에서 유용한 사고법과 그 표현법을 소개해 프로그램을 효율적으로 조직화하는 법을 알려준다. 개발자라면 반드시 읽어야 할 고전을 사용자가 많은 자바스크립트로 재해석했다.

  • 저자 : 해럴드 에이블슨 , 제럴드 제이 서스먼 , 마틴 헨즈 , 토비아스 브릭스타드 , 줄리 서스먼
  • 번역 : 류광
  • 출간 : 2022-12-30

컴퓨터 프로그램의 구조와 해석(SICP)는 '마법사 책(Wizard Book)', 'MIT 컴퓨터 과학 입문 과정의 교과서'로 유명합니다. 프로그래밍의 원리를 알려주는 책은 맞습니다만, 특정 언어의 문법을 배우거나 알고리즘을 배우는 내용과는 거리가 조금 있으며, 배워서 바로 도움을 받을 수 있는 성격의 책은 아닙니다.

 

10569098_884730798231822_5289485369359182595_n.jpg

 

사람들은 '위기의 순간'이나 '옳은 판단'이 필요할 때면 '예전 방법'을 찾습니다. 그 '예전 방법'에는 맹자, 공자, 플라톤의 '철학'이 될 수도 있고, 손자병법, 논어와 같은 '고전'이 될 수도 있으며, 등산, 마라톤 같은 행동을 통한 '생각'이 될 수도 있습니다. 어쨌든, 주변 지인들의 짧은 조언을 구하거나 ChatGPT에 프롬프트를 작성하는 것보다는 '예전 방법'을 찾게 되고, 필요에 대하여 더 깊게 몰두할수록 '예전 방법'의 중요성과 필요성은 더욱 강조됩니다.

 

이 책은 코딩 및 프로그래밍계의 (위에서 언급된)'철학', '고전, '생각'에 해당되는 서적 중 하나로 평가받고 있으며, 이는 추천평 및 감수의 글을 써주신 김명호 박사님, 이광근 교수님 등 이미 많은 구루와 개발자분들이 인정한 것으로 부인할 수 있는 여지가 없는 사실입니다.

 

원래 SICP는 스킴을 통해 컴퓨팅 개념과 프로그래밍을 정의하며 컴퓨터 과학의 추상적인 개념을 배워나가면서 스킴 언어를 학습해 나가는 입문서였습니다. 시대에 흐름에 맞추어 자바스크립트로 변화되었지만, 아직도 본질을 담고 있습니다. 다만, "SICP에 나오는 예제"가 "바닐라 자바스크립트로 실행할 수 없는 게 있다"라는 부분에 원래 SICP의 색깔이 조금 희석되었다는 생각이 들기도 합니다.

 

하지만, 대부분의 독자들에게는 스킴 대신 자바 스크립트로 이해할 수 있는 책이 더 환영받을 겁니다. 더 친근하고, 언어의 기본을 배우기에 접근하기 쉽기 때문입니다. '기본'을 배우기에 '예'는 부수적이니까요. 작은 망치로 두들겨 만드는 칼만이 가치 있는 것은 아닐 것입니다. 오히려 지금 같은 생산성을 강조하고 점을 찍으면 다수의 브라우저 코드를 만들어주거나 주석만 적당하면 가끔 놀라는 코드를 추천해 주는 Copilot 구독 시대에 '고전'을 실용적이게 읽을 수 있는 선택지가 있다는 점은 축복입니다.

 

왜 자바 스크립트인가라는 물음에는 옮긴이의 말과 가이 L. 스틸의 추천사에서 힌트를 찾아볼 수 있습니다. 자바 스크립트를 만든 브랜든 아이크가 스킴 애호가이고 자바와 달리 함수를 일급 객체로 취급하거나 람다, 꼬리 재귀, 블록 범위 변수 등 여전히 스킴 DNA를 가지고 있기 때문입니다. 스킴은 리스프(LISP)의 방언입니다. 이 책은 언어를 배우는 게 아니라 개념을 배우는 게 목적인 데다가, 자바 스크립트로 작성된 것은 덜 완전하고, 잘 구현하지 않은 리스프의 방언인 스킴의 또 다른 방언으로 구현됐다고 볼 수 있지 않을까요?

 

SICP는 카이스트, 서울대를 포함한 수백여 대학의 교재로 사용되고 있으며, 인터넷에서 많은 리소스를 찾을 수 있습니다.

 

MIT교재로 사용되는 스킴 SICP(2nd)의 PDF 파일은 아래 링크에서 구할 수 있고.

https://web.mit.edu/6.001/6.037/sicp.pdf

 

MIT과정의 과제 및 코드 등의 정보를 아래의 링크에서 구할 수 있습니다.

https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/index.html

 

SICP(2nd)의 풀 텍스트는 아래 링크에서 확인할 수 있고,

https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/full-text/book/book.html

 

읽기도 편하고 복사하기도 편한 HTML5 버전은 아래에서 구할 수 있습니다.

https://sarabander.github.io/sicp/html/index.xhtml

 

이에 대한 소스코드는 아래 링크로 얻을 수 있고.

https://github.com/sarabander/sicp

 

이에 PDF버전은 아래에서 확인할 수 있습니다.

https://github.com/sarabander/sicp-pdf

 

이맥스에서 볼 수 있는 아스키 버전도 있습니다.

https://www.neilvandyke.org/sicp-texi/

 

screenshot[1].png

 

마지막으로 머릿말에서 언급한 스킴 SICP(2nd)과 SICP JS를 병치한 형태의 온라인 비교판은 아래 링크에서 확인할 수 있습니다.

https://sicp.sourceacademy.org/

 

자바 스크립트를 통해 기본을 배우면서 해당 문법과 개념을 지탱해 주는 기반을 느낄 수 있습니다. 한 가지 아쉬운 점이라면 기존 번역서와 달리 양장서가 아니어서 오랫동안 보관하고 싶은 책의 귀퉁이가 말아올라가는 것을 막지 못한다는 점뿐이네요.

 

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

 

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?