---
title: "† #SICP #마법사"
url: "https://notes.junghanacs.com/meta/20230909T005700"
author: "Junghan Kim"
date: "2023-09-09T00:57:00+09:00"
lastmod: "2025-04-22T00:00:00+09:00"
tags: ["bib","computer","interpretation","lisp","meta","programs","scheme","sicm","sicp","structure"]
description: "SICP를 중심으로 컴퓨터 과학의 핵심 개념, 스킴 실습, 관련 강의와 노트 자원을 묶는다."
---

> [!abstract] 이 노트에 대하여
> 
> SICP는 프로그래밍 문법보다 계산의 구조와 추상화의 힘을 가르치는 고전으로 놓인다. 이 노트는 책, 영상 강의, Racket 기반 실습, 관련 노트를 연결하며 마법사책을 공부하는 진입점을 만든다.

## 히스토리

-   [2025-04-22 Tue 16:26] SICP 메타

## 관련메타

## BIBLIOGRAPHY

- 해럴드 에이블슨, 제럴드 제이 서스먼, and 줄리 서스먼. 2016. *SICP 컴퓨터 프로그램의 구조와 해석*. Translated by 이광근. <https://www.yes24.com/Product/Goods/23951885>.
- “#Racket #Sicp Structure and Interpretation of Computer Programs 1986 Video Notes.” n.d. Accessed November 12, 2024. <https://nebhrajani-a.org/sicp/video_notes/#orga5f90cf>.

## 관련노트

-   [#클로저 #클로저스크립트](https://notes.junghanacs.com/meta/20230729T052700)
-   [#코딩훈련#코드카타](https://notes.junghanacs.com/meta/20240923T120000)

## KEYWORDS

-   [bib/ @이광근 #기계학습 #컴퓨터과학 #SICP #두괄식 #글쓰기 #전문용어 '2024-10-28 #2025-04-29](https://notes.junghanacs.com/bib/20241028T052956)
-   [bib/ @제럴드제이서스먼: #SICP #SICM #FDG #SDF #스승 #고전역학 '2024-10-30 #2024-10-30](https://notes.junghanacs.com/bib/20241030T121628)
-   [bib/ @브라이언하비: 스크래치 스냅 로고 프로그래밍 '2024-12-13 #2025-03-16](https://notes.junghanacs.com/bib/20241213T140053)
-   [bib/ #자바스크립트: 마법사책 SICPJS '2025-01-18 #2025-02-14](https://notes.junghanacs.com/bib/20250118T233628)
-   [bib/ @johndenero 파이썬 SICP 과정 '2025-02-21 #2025-02-21](https://notes.junghanacs.com/bib/20250221T082323)
-   [bib/ #리스프 #IT역사 #한국인 #개발자 '2025-04-15 #2025-04-15](https://notes.junghanacs.com/bib/20250415T165126)
-   [botlog/ aprj 아카이브 통합정리: 정한의 삽질 연대기 2008-2026 '2026-03-02 #2026-03-02](https://notes.junghanacs.com/botlog/20260302T130000)
-   [botlog/ §sicm-study: #담당자 공개된 모름 - 틀·용어 도끼로 앎의 구도를 삭히는 집 '2026-03-03 #2026-09-06](https://notes.junghanacs.com/botlog/20260303T195201)
-   [notes/ @junghan0611 §sicp-info - texi-info 파일 변환 '2024-11-13 #2025-04-22](https://notes.junghanacs.com/notes/20241113T135628)

## #래킷 #클로저 sicp-notes

[2024-11-12 Tue 15:50]

상당히 잘 정리가 되어있는 노트다. 래킷으로 되어 있고 클로저로 활용하면 된다.

-   [클로저 컴퓨터 대수학 시스템 혁신](https://notes.junghanacs.com/notes/20241111T144027) 을 위한 일이다.

잠시만, 배움은 일단 기호를 입력 할 수 있어야 된다. 용어를 다룰 수 있어야 공통의 지식을 채워나갈 수 있는 것이다.

sicp에서 기본을 다룬다. 어찌보면 다른 레퍼런스 없이 완결된 지식 세트라고 볼 수 있다. 여기에 클로저는? 클로저는 모르겠다. 실용적이다. 이게 어찌보면 큰 그림이기도 하다. 놀라운 일이다. 놀라운 일이기에 감사하다.

클로저 코드로 작업한 파일들이 있다. 러시아 등등 뭐 신경쓸거 없다. 아. 노트는 하나 있는데 그게 자기완결성이 있다.

### "#racket #sicp Structure and Interpretation of Computer Programs 1986 Video Notes"

([“#Racket #Sicp Structure and Interpretation of Computer Programs 1986 Video Notes” n.d.](https://notes.junghanacs.com/meta/20230909T005700#citeproc_bib_item_2))

여기 말이다.

이건 영상20강을 요약한 것. 책 보다. 훨씬 짧다. 아. 그리고 래킷에서 sicp 서브셋은 일부로 내놓은 것인데. 아 매력있는 것. 한번 보자. 이 친구 비디오노트파일은 자기완결성이 있다. 훌륭한 레포트 양식이다. racket을 다시 활성화 하자.

```shell
raco pkg install --auto --update-deps sicp
```

```text
$ raco pkg install --auto --update-deps sicp

Resolving "sicp" via https://download.racket-lang.org/releases/8.10/catalog/
Resolving "sicp" via https://pkgs.racket-lang.org
Downloading repository https://github.com/sicp-lang/sicp.git commit 5ba7b852855cf107892244b37d6a1ffbef14d595
raco setup: version: 8.10
raco setup: platform: x86_64-linux [cs]
raco setup: target machine: ta6le
raco setup: installation name: 8.10
```

[#래킷](https://notes.junghanacs.com/meta/20230907T134700)

설치는 둠이맥스 모듈 사용 /home/junghan/sync/man/dotsamples/vanilla/hamacs-evil/ha-programming-scheme.org

### Try It Out

Working for values?

```racket
(* 6 7)
```

```text
42
```

Working for output?

```racket
(define str-1 "hello")
(define str-2 "world")
(define all (string-join (list str-1 str-2) ", "))
(display (string-titlecase all))
```

```text
Hello, World
```

,#+results:

```text
Hello, World
```

The interface is horrendously slow, as the `:session` doesn’t seem to work, and starting up a Racket REPL takes a long time.

### SICP and Racket

If using [Racket for SICP](https://docs.racket-lang.org/sicp-manual/SICP_Language.html), install the SICP language:

```sh
raco pkg install --auto --update-deps sicp
```

We now can give it a `#lang sicp` (or better yet, use the `:lang` header) to define certain SICP-specify features:

이제 `#lang sicp=(또는 =:lang` 헤더를 사용하는 것이 더 좋습니다)를 지정하여 특정 SICP 지정 기능을 정의할 수 있습니다:

Let’s try this now:

```racket
(inc 42)
```

```text
43
```

,#+results:

```text
43
```

## SICP 컴퓨터 프로그램의 구조와 해석

([해럴드 에이블슨, 제럴드 제이 서스먼, and 줄리 서스먼 2016](https://notes.junghanacs.com/meta/20230909T005700#citeproc_bib_item_1))

-   해럴드 에이블슨 and 제럴드 제이 서스먼 and 줄리 서스먼 이광근
-   마법사 책(Wizard Book)이라는 별명으로도 유명한 이 책은 독특하기로 소문난, MIT 컴퓨터 과학 입문 교과 과정에서 쓰는 교과서로, 프로그래밍 언어 문법이 아닌 프로그램의 뼈대를 구성하는 기술을 익히게 해준다. 흔한 프로그래밍 입문서와 달리, 난해하다는 평을 듣는 LISP에서 갈라져 나온 Scheme을 활용하며, 요약(abstraction)과 조립식 설계(modularity)에 따라 복잡한 프로그램을 간단하게 짜는 전략을 보여준다. 그뿐 아니라, 상태(state)가 있는 물체, 덮어쓰기(assignment), 병행 프로그래밍, 함수 프로그래밍, 제때 계산법(lazy evaluation), 비결정적 프로그래밍(non-deterministic programming) 등 다양한 프로그래밍 이슈를 살펴보며 한 걸음씩 프로그램을 설계하고 짜 맞추고 살펴보고 고쳐 쓰면서, ’과연 프로그래밍이란 무엇인가’ 돌이켜 보게 하고, 생각하는 방식과 그 생각을 표현하는 방식을 가르쳐 준다.

## Video Lectures (1986)

[2023-10-03 Tue 12:03] <https://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/>

총 20 강이다. 엄청난 내용.

-   nebhrajani-a/sicp: Racket implementation and notes for SICP's video lectures.

<https://github.com/nebhrajani-a/sicp>

## ARCHIVE

### Lecture Notes

### SICP Clojure

### SICP Clojure and Racket with Courses

### 이광근 류광 번역 비교

[2023-10-24 Tue 15:23]

-   [서울대 이광근 교수님 강의](http://kwangkeunyi.snu.ac.kr/4190.210/mooc/)

#### 이광근 교수 번역 문제

아래 문서에 기록을 한다. 롬에는 내 생각의 단편들이니까 번역 펌 등은 넣지 말자.

1 장을 원서로 정확히 파악한다면 행복한 일. 이교수 버전을 보고 좋다면 훌륭한 일. 류광 버전 자바스크립트라는 허상을 넘어서 본다면 이 또한 멋진 일. 1 장 제목이 함수를 이용한 추상화이다. '함수' '프로시저' 뭐든 간에 추상화를 배우는 일이다. 2 장에서 데이터를 이용한 것도 있다. /home/junghan/sync/org/git/sicp-org/sicp-ch1.org:1 [2023-01-11 Wed 14:09]

1 Introduction 번역 비교

> The acts of the mind, wherein it exerts its power over simple ideas, are chiefly these three: 1. Combining several simple ideas into one compound one, and thus all complex ideas are made. 2. The second is bringing two ideas, whether simple or complex, together, and setting them by one another so as to take a view of them at once, without uniting them into one, by which it gets all its ideas of relations. 3. The third is separating them from all other ideas that accompany them in their real existence: this is called abstraction, and thus all its general ideas are made.
> 
> --John Locke, _An Essay Concerning Human Understanding_ (1690)

-   이교수 번역 머리속에서 일어나는 일, 곧 단순한 아이디어들을 가지고 쓸모 있는 아이디어를 만들어 내는 일은 주로 다음 세 가지로 나뉜다. 1 첫째는 여러 단순한 아이디어를 한 아이디어로 묶어내는 것인데, 모든 복잡한 생각이 이렇게 나온다. 2 둘째는 단순한 아이디어와 복잡한 아이디어를 함께 꺼내 놓되 하나로 묶지 않고 죽 훑어보도록 펼쳐 놓는 것인데, 이렇게 하여 관계에 대한 모든 아이디어를 이끌어 낸다. 3 셋째는 실제 속에 복잡하게 얽혀 있는 다른 것들에서 아이디어를 분리하는 것인데, 이를 요약(간추리기, 추상화)이라고 한다. 모든 일반적인 아이디어들이 이렇게 만들어 진다.

-   류광 번역 단순 관념(simple idea)에 그 힘을 행사하는 지성의 행위는 주로 다음 세 가지다. 1 다수의 단순 관념을 하나의 복합(compound) 관념으로 조합한다. 복잡한(complex) 관념들은 모두 이런 식으로 만들어진다. 2. 둘째는 두 관념(단순 관념이든 복합 관념이든)을 가져와 또 다른 관념으로 설정함으로써 그 둘을 하나의 관념으로 통합하지 않고도 두 관념을 한 번에 볼 수 있게 만드는 것이다. 관계에 대한 관념은 모두 이런 식으로 만들어진다. 3. 셋째는 하나의 관념을 그 실제 존재에 수반하는 다른 모든 관념으로부터 분리하는 것이다. 이를 추상화라고 부르며, 일반적인 관념은 모두 이런 식으로 만들어진다.

뭐가 좋다고 말하기가 어렵다. 인용문을 가져온 것 뿐이니까. 조금 더 진행해 보자. 번역은 번역가의 몫이란게 분명히 있기 마련이다.

##### Computational process

We are about to study the idea of a  computational process. Computational processes are abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called  data. The evolution of a process is directed by a pattern of rules called a  program. People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells.

이제부터 우리가 공부할 것은 계산적 과정이라는 아이디어다. 이 과정은 컴퓨터 안에 사는 추상적인 존재이다. 과정은 점차 전개되면서 데이터라고 부르는 또 다른 존재를 조작하게 된다. 하나의 과정은 일정한 규칙들의 패턴으로 전개되는데, 그러한 패턴이 바로 프로그램이다. 인간은 프로그램을 작성함으로써 과정의 전개를 이끈다. 본질적으로, 프로그래머는 자신의 주문(spell)들로 컴퓨터의 영혼을 불러낸다.

[2023-01-11 Wed 14:24]

##### 솔라 번역 결과

<https://solar-translate.streamlit.app/> [2024-10-18 Fri 17:45]

마음이 단순한 관념들에 대해 그 힘을 발휘하는 행위들은 주로 다음 세 가지이다. 1. 여러 개의 단순한 관념들을 하나의 복합적인 관념으로 결합하는 것, 그리고 이로써 모든 복합적인 관념들이 만들어진다. 2. 두 번째는 단순한 관념이든 복합적인 관념이든 두 관념을 함께 가져와서, 그것들을 하나로 결합하지 않고 나란히 세워 한꺼번에 조망하는 것, 이로써 모든 관계의 관념들을 얻는다. 3. 세 번째는 그것들이 실제 존재에서 수반하는 다른 모든 관념들로부터 분리하는 것: 이것을 추상이라고 부르며, 이로써 모든 일반 관념들이 만들어진다.

--존 로크, _인간 오성론_ (1690)

### 문제풀이 유튜브 영상 리스트

### <SPAN CLASS="ORG-HASHTAG">#SICP</SPAN> #racket #hexlet
