최근 수정 시각 : 2024-11-03 16:03:37

Structure and Interpretation of Computer Programs

Structure and
Interpretation
of Computer
Programs

컴퓨터 프로그램의 구조와 해석
파일:sicp.jpg
작가 할 아벨슨
제럴드 제이 서스먼
줄리 서스먼
번역가 김재우
안윤호
김수정
김정민
한글판 감수 이광근
출판사 파일:미국 국기.svg MIT Press
파일:대한민국 국기.svg 인사이트
발매일 파일:미국 국기.svg 1984.
파일:대한민국 국기.svg 2007. 10. 25.
쪽수 파일:미국 국기.svg 657쪽
파일:대한민국 국기.svg 887쪽
ISBN 파일:미국 국기.svg 0-262-51087-1
파일:대한민국 국기.svg 9788966261703
1. 개요2. SICP와 리스프에 대한 오해3. 여담4. 관련 문서5. 외부 링크

[clearfix]

1. 개요

  • Structure and Interpretation of Computer Programs(SICP)는 컴퓨터 과학 교과서이다.
  • 국내에 "컴퓨터 프로그램의 구조와 해석"이라는 제목으로 번역서가 있다.

2. SICP와 리스프에 대한 오해

SICP는 Stream, Continuation, Closure 등 매우 기초적이고 기본적인 프로그래밍 개념을 심도있게 공부할 수 있는 명저이다. 그런데, 책에서 사용하는 프로그래밍 언어가 리스프의 사투리중 하나인 Scheme이다. 따라서 리스프를 잘 하려면 이 책을 반드시 공부해야만 할 것 같은 느낌을 주고, 실제로 리스프를 공부하기 위해 이 책을 찾는 사람도 많다.

사실, 대부분의 컴퓨터 공학 입문이 프로그래밍 자체보다 특정 프로그래밍 언어를 습득하는데 집중하는 경향이 있는데, SICP는 원래 프로그래밍의 기초 개념을 공부하기 위한 책이다. 공부하는데 필요한 도구로 Scheme이 선택된 것일 뿐이다. 물론 저자인 Sussman이 Scheme을 만들기도 했다.(실제 트윅 없이 SICP에서 사용하는 Scheme 코드를 전부 구동 가능한 Scheme 컴파일러는 찾아보기 힘들다.)

MIT에서는 1980년에 시작된 6.001 SICP 강의가 2008년에 6.01 "Introduction to Electrical Engineering and Computer Science I" 강의로 변경되면서 Python을 사용하게 되었다. 강의 목적도 전산학의 기초 개념을 가르치는 것에서 Python을 가르치는 것으로 바뀌었다. 이 시기에, Scheme을 사용하는 다른 여러 강의도 모두 Python을 쓰는 것으로 바뀌었다고 한다. 나중에, 이전의 6.001과 같은 과목이면서 Scheme을 사용하는 6.037이 2011년 시작되었다.

Gerald Sussman이 직접 밝힌 Scheme을 사용하는 MIT의 6.001이 Python을 사용하는 6.01로 바뀐 이유는 다음과 같다.
  • Sussman과 Hal Abelson은 1980년대부터 가르쳐 온 이 과목에 대해 피로감을 느꼈고, 1997년에 학과장 사무실로 찾아가서 "이 과목을 더 이상 가르치지 않겠다."는 의견을 전달했다고 한다.
  • 더욱이, SICP 커리큘럼이 더 이상 오늘날의 엔지니어링에 적합하지 않기 때문이라고 설명했다.

Sussman이 설명하는 오늘날의 엔지니어는, 완벽하게 이해하는 것이 불가능한(때로는 상업적 보호정책에 의해 내부가 공개되지 않아서 완벽하게 이해하는 것이 불가능한) 매우 복잡한 하드웨어를 위한 코드를 반복적으로 작성한다. 소프트웨어 또한 방대한 라이브러리와 기능을 가지고 있기 때문에 소프트웨어쪽도 하드웨어와 동일한 환경에 처해있다. Sussman은 자신이 가르치던 학생들이 이러한 라이브러리들을 엮어서 프로그램을 작성하기 위해 라이브러리 매뉴얼을 읽는 데에 대부분의 시간을 사용하는 것을 보아왔다고 한다. 따라서 작고 단순한 부분들을 사용하여 큰 시스템을 만드는 SICP의 "합성을 통한 분석(analysis-by-synthesis)" 관점은 더 이상 유효하지 않게 되었다고 한다. 오늘날에는 일단 라이브러리의 기능을 실행하는 코드를 작성하여 이것이 어떻게 동작하는지를 관찰하고, 이를 엔지니어가 원하는 의도대로 조작할 수 있는지를 고민하게 되는 식(poking 방식)으로 소프트웨어를 작성하게 된다고 한다.

리스프 자체 또는 함수형 프로그래밍을 이해하는 데에는 SICP보다는 "Anatomy of Lisp"이 더 나은 선택일 수 있다.[1]

파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는 문서의 r209에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r209 ( 이전 역사)
문서의 r ( 이전 역사)

3. 여담

  • 마법사 책이라는 별명을 갖고 있다.
  • 2022년 자바스크립트 버전으로도 출판되었다.[2] 이 버전의 번역서 제목은 "자바스크립트로 배우는 SICP"이다.
  • 작가 제럴드 제이 서스먼과 줄리 서스만은 부부이다.

4. 관련 문서

5. 외부 링크


[1] John Allen, "Anatomy of Lisp", McGraw-Hill, 1980 (ISBN: 978-0070011151) [2] https://sourceacademy.org/sicpjs/index