Sleeep23' space
Front-end Engineer

자바스크립트로 배우는 SICP - 1. 흥미로워 보인다!

기대된다. 책너두 챌린지 시작!

2023-10-23 | 독서 | 4min


개요

처음 이 책을 알게 된 경로는 토스의 오픈스터디 모집 글이었다. 해당 글을 보다가 토스의 프론트엔드 개발자분들은 어떤 책을 공부할까 궁금해서 찾아보았고 그것이 바로 이 책이었다. 참고

첫 생각

처음 이 책을 보고 든 생각은 “도대체 SICP 라는 단어가 무슨 뜻일까?” 였다. SICP 는 Structure and Interpretation of Computer Programs의 약자로 컴퓨터 프로그램의 구조와 해석을 의미한다. 그리고 이 책은 해당 내용을 자바스크립트를 이용하여 보여준다.

과거에는 이 책이 스킴(scheme)이라는 언어로 작성되었다고 한다. 해당 언어는 함수형 프로그래밍의 조상격인 LISP의 방언이다. 그리고, 현재는 이를 자바스크립트로 완전히 재작성하는 과정을 거쳐서 나온 것이 바로 이 책이다.

전반적인 흐름

이제 입에 넣기 전 어떤 내용들로 구성되어 있는지 맛보기로 훑어보았다. 구성은 크게 다음과 같은 섹션들로 나뉜다.

  1. 함수를 이용한 추상화
  2. 데이터를 이용한 추상화
  3. 모듈성, 객체, 상태
  4. 메타언어적 추상화
  5. 레지스터 기계를 이용한 계산

목차를 보면 추상화 라는 단어에 매우 집중하고 있으며 이를 함수, 데이터, 환경과 상태의 관점에서 매우 자세하게 소개하고 있다.

함수적 추상화의 경우는 평소 개발을 할 때 필요를 느끼던 영역이기에 직관적으로 어떤 내용을 다룰지 잘 다가왔다. 그리고 내가 생각했듯 “반복적인 수행을 하는 기능을 단순한 함수로 작성 → 복합적인 기능을 수행하는 함수를 단순한 함수의 조합으로 작성”의 과정에서 자바스크립트의 언어적 특성과 관련지어 수행단계 및 관련 개념을 세부적으로 다루고 있다.

하지만, 이외의 부분들은 쉽게 어떤 부분이라고 정의하기에 어려운 부분들로 이루어져 있었다. 아무래도 읽어보지 않으면 쉽게 예측할 수 없을 것 같다는 생각과 동시에 너무 읽어보고 싶다는 충동이 든다.

흥미로웠던 점

개발을 하다보면 매번 내 코드가 별로 같고, 같은 역할을 하는 코드지만 재작성을 몇시간이나 몇일에 걸쳐서 추상화하려는 노력을 하게된다. 그리고 이러한 사람의 행동을 이 책에서는 아래와 같이 설명하고 있다.

이 책은 인간의 마음(정신), 컴퓨터 프로그램들의 집합, 그리고 컴퓨터 자체라는 세 가지 측면에 초점을 두고 내용을 전달한다. 모든 컴퓨터 프로그램은 물리적 또는 정신적 과정에 대한 하나의 모형(model)이 우리 마음속에서 부화한 것이다. 인간의 경험과 사고에서 생겨난 그러한 과정(process)은 그 수가 엄청나게 많은 뿐만 아니라 대단히 복잡하다 보니 한 번에 오직 일부만 이해할 수 있다. 그런 과정을 컴퓨터 프로그램으로 만족스럽게 모형화(modeling)할 수 있는 경우는 드물다. [18쪽]

그래서 비록 우리가 이산적인 기호들의 집합과 연동된 함수들의 모자이크를 세심하게 만들어서 프로그램을 구축한다고 해도 프로그램은 계속해서 진화한다. 모형에 대한 우리의 지각(perception)이 심화, 확대, 일반화됨에 따라 우리는 계속해서 프로그램을 수정한다. 그러한 수정 과정은 모형이 우리가 확립하려고 애쓰는 또 다른 모형 안의 준안정적인(metastable) 자리에 안착해서야 끝난다. [18쪽]

또한, 이 책이 맘에 들었던 것은 프로그래머를 마법사 또는 예술가처럼 보는 시선이 재밌었다.

컴퓨터 프로그래밍과 연관된 기쁨과 흥분은 프로그램의 형태로 표현된 메커니즘이 우리 마음속과 컴퓨터에서 끊임없이 전개되고 그로부터 지각이 폭발적으로 생겨나는 데에서 비롯한다. 예술이 우리의 꿈을 해석한다면, 컴퓨터는 우리의 꿈을 프로그램의 형태로 실행한다! [18쪽]

위 부분이 너무 맘에 들었다. 어떻게 보면 내가 개발을 좋아하는 이유에 대해서 명쾌하게 설명해주고 있는 부분이었다. 나중에 면접 때 써먹어볼까..?

다짐

이 책을 읽기 위해 “책너두” 라는 챌린지를 참여했다. 하지만, 챌린지 수행을 위해 책을 읽는 것이 아닌 책을 읽고싶되 챌린지는 꾸준함을 위한 곁들임으로 생각하고 다짐했다. 부디 이 책에 대한 지금과 같은 흥미가 책을 읽은 후까지 이어지길 하는 바램이다.

참고

아래는 위 책의 원문 내용이 있는 사이트이다. 책을 읽으면서 관련된 내용을 참고해보면 좋을 것 같다.

Source Academy