책을 읽을 때는 왜 읽어야 하는지, 무엇을 알고 싶은지를 미리 생각하고 읽어야 더욱 재밌고 효율적으로 읽을 수 있다고 생각합니다. 따라서 이 2가지에 해당하는 내용으로 먼저 시작해보면 좋을 것 같습니다.
이 도서는 원래 MIT에서 강의하던 SICP라는 강의의 내용을 담고 있습니다.
일반적으로 마법사책이라고 많이 불립니다. SICP는 번역하면 컴퓨터 프로그램의 구조와 해석으로 볼 수 있고 실제로 그렇게 번역되었던 책도 있습니다.
MIT에서 SICP는 6.001이라는 수업에 있었습니다.
하지만 이제는 MIT에서 SICP를 가르치고 있지 않는데 SICP 커리큘럼이 더이상 현대적인 엔지니어가 되도록 준비시키지 못한다고 합니다. 8~90년대에는 간단하고 잘 이해할 수 있는 것들을 조립을 해서 프로그램을 만드는데 요새는 잘 모르는것에 대해 프로그래밍을 합니다.
처음보는 라이브러리들을 가져와서 코딩을 하고 이런것들이 일상이 되었습니다. 따라서 현대적인 개발 환경에서 SICP 지식이 당장은 큰 도움이 되지 못한다고 느낀게 아닐까 싶습니다.
SICP는 전체적인 것들을 분석을해서 개발을 합니다.
SICP는 당장 개발에 도움이 되는것에는 부족할 수 있지만, 프로그래밍을 전반적으로 다루는 방법에 있어서는
SICP 지식이 많은 도움이 된다고 생각합니다. 남의 것을 가져다가 개발을 하는게 요즘의 일반적인 개발 방식이 되었지만
결국 도메인에 맞게 만들려면 +를 할 줄 알아야하고 그런 능력을 SICP를 통해 기를 수 있다고 생각합니다.
저도 비슷한 생각이 있습니다. 물론 기존에 잘 만들어져 있는 도구들을 이용하여 제품을 만들어내는 것도 중요하지만
특정 도메인의 문제를 해결하기 위해서 새로운 도구를 만들어내거나 혹은 자체적인 도구들만 사용해서 개발을 해야하거나
기존에 해결법이 나와있지 않은 새로운 문제를 접하게 되었을 때 이와 같은 상황에서는 새롭게 만들어낼 수 있어야 한다고 생각합니다.
따라서 SICP라는 책은 위와 같은 이유로 읽을 가치가 있고 Scheme이라는 언어가 아닌 우리에게 친숙한 JavaScript라는 언어로 새롭게 나온 '자바스크립트로 배우는 SICP' 라는 책이기 때문에 접근성도 좋아졌다고 생각합니다.
일부 사람들은 컴퓨터에 대한 지식을 쌓는것에 대해 간과하는 느낌이 있는 것 같습니다. 흔히 말하기에 컴공 지식, CS 6대 지식이라고 많이들 이야기를 합니다. 컴퓨터 공학 자체에 대한 공부를 하지 않고 단순히 프로그래밍 언어의 문법, 라이브러리, 프레임워크들만 공부하면서 개발을 하는 것은 결국 한계가 온다고 생각합니다. 컴퓨터가 어떻게 동작하는지에 대한 지식이 전혀 없이 컴퓨터 위에서 돌아가는 프로그램을 만든다는 것은 무언가 50%만 하는 것 같다는 생각도 듭니다. 컴퓨터를 깊이 이해하고, 그 지식을 바탕으로 프로그램을 더욱 효율적으로 개발하는데 영감을 얻고 싶어서 이 책을 읽게 되었습니다.
책은 꽤나 두꺼운 편입니다.
대략 800쪽 정도로 구성되어 있습니다.
일반적으로 내용이 어렵고, 두께가 두꺼운 개발 서적을 읽을 때 가장 중요한 것은 꾸준히 읽는 것이라고 생각합니다.
따라서 저도 꾸준히 읽는 방법을 택했습니다.
목차는 총 5장으로 구성되어 있습니다.
제1장 함수를 이용한 추상화
제2장 데이터를 이용한 추상화
제3장 모듈성, 객체, 상태
제4장 메타언어적 추상화
제5장 레지스터 기계를 이용한 계산
초반 1, 2, 3장은 모든 언어에 적용되는 프로그래밍의 개념으로 우리가 개발을 하면서 무의식적으로 하고 있었던 행동들을 프로그래밍 개념으로 알아가면서 개념을 더욱 탄탄하게 잡을 수 있는 파트라고 생각합니다. 현재 저도 이 부분을 읽고 있는데요. 개념/이론 설명으로 시작하고 연습문제를 풀고 있습니다. 특정 상황에 한정되지 않는 프로그래밍 문제들을 해결하면서 근본적인 문제 해결능력을 올리기 좋은 부분인 것 같습니다. 후반 4, 5장은 언어 처리기를 개발하게 됩니다. 프로그래밍 언어를 배우는 데 있어서 컴파일러를 같이 공부하게 되면 더욱 시너지가 나는데요. 이를 위해서 책의 목차가 이렇게 작성되어 있는 것 같습니다. 연습 문제의 양이 상당하고 모든 연습문제는 지은이가 제공하는 웹페이지에서 실행해볼 수 있어서 더욱 재밌게 공부할 수 있습니다.
이 책은 욕심이 넘치는 개발자분들이 읽으시면 좋을 것 같다는 생각이 듭니다.
당장 개발을 하기 위함이라면 꼭 필요한 내용이 아닐수도 있지만, 결국 10년이 지나서도 살아남고 훌륭한 프로그래머가 되기 위해서는 읽어보면 좋을 책이 될 것 같습니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
'개발 서적 > 리뷰' 카테고리의 다른 글
[리뷰] 테라폼으로 시작하는 IaC (0) | 2023.06.25 |
---|---|
[리뷰] Docs for Developers 기술문서 작성 완벽가이드 (0) | 2023.05.28 |
[리뷰] 코어 자바스크립트 (0) | 2023.05.06 |
[리뷰] 처음 배우는 NHN Cloud (0) | 2023.04.23 |
[리뷰] 모던 자바스크립트로 배우는 리액트 입문 (0) | 2023.03.18 |