• Stars
    star
    1,230
  • Rank 38,157 (Top 0.8 %)
  • Language
    Scheme
  • Created over 9 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

📖 SICP 读书笔记,习题解答

SICP

SICP,一本讲解编程真谛的经典教材。之前上大学期间,陆陆续续看了2遍这本书,无奈都没坚持到底。第一次只看完第一章,第二次只看完前三章。很多习题也没做。

这,是第三次进攻。这个 repo 会记录我在看 SICP 时的习题代码与一些自己的笔记与想法,这么做一方面是给自己查漏补缺,另一方面也为希望对今后阅读 SICP 的人有些许帮助。

为了方便检索,我使用 gitbook 制作了《SICP 读书笔记》电子书,供大家参考。

Why SICP

目标

2016年1月1号之前啃完所有章节与习题!! 失败告终。只完成前三章。

新的一年继续读书计划2016年6月30号前,完成剩下的第四章、第五章。 完成

建议

完完整整看完一本书是一件困难的事,本书更是如此。

这本书的很多内容、习题需要仔细揣摩才能领略其精髓,所以看这本书一定不要心急。 其次,在阅读时,请务必关闭手机上一些社交工具,并预留出至少 1 个小时的完整时间来看,否则我不认为你真的能有所收获。

学习是件很苦的事,大多数人都是三分钟热度,所以如果你觉得看这本书让你很烦躁,不妨出去运动一下,或听一会音乐🎵,第二天接着来。坚持下来,不要放弃,更不要失去对探索编程真谛的好奇心。

以上与所有 SICPer 共勉。

环境准备

工欲善其事必先利其器。下面说下我Mac上的scheme环境:

  • Mac 环境
  • mit-scheme 9.2,我的Mac版本是10.10.2,按照上这个官方scheme后点击图标,闪退,不清楚为什么,我这里直接把MIT:GNU Scheme.app/Contents下的Resources文件夹拷贝出来,并把它加入的PATH中,这样就能够运行了。 mit-scheme screencast
  • 这里安装好的scheme在交互式环境下无法使用方向键,可以通过安装rlwrap解决(brew install rlwrap)之后,用rlwrap mit-scheme启动就可以了。
  • 英文版epub+中文版实体书,计算机的书最好还是看英文原版,我这里买了中文版的实体书,英文版的好贵!不过多看对epub格式支持很好,放手机上看很方便,而且多看支持划词翻译,写笔记,笔记同步Evernote等等,真是太方便了,推荐大家使用。手机屏幕还是太小了,而且很容易分心,Kindle Paperwhite才是真爱,值得拥有💖
  • mit-scheme直接从文件中读取代码并执行,例如有个文件名为fib.scm的文件,在scheme交互式环境下通过(load "fib.scm")命令就能够执行fib.scm中的代码了。
  • 2.2.4小节用到的图形语言采用Racket实现,这是它的文档
  • 2.4.3小节putget的实现,参考/exercises/02/lib/hash_table.scm

我的初始化环境就是这样了,后面如果有改变我会修改这里的说明。

辅助资料

QQ 群

欢迎在读或打算读 SICP 的朋友加入 SICP 读书 QQ 群:119845407,让我们一起探索编程的奥妙。

sicp_qq

手机 QQ 可直接扫码加入。

Timeline

  • 2015-5-17 第三次开启SICP之旅
  • 2015-7-12 结束第一章,构造过程抽象。我的总结
  • 2015-9-20 结束第二章,构造数据抽象。我的总结
  • 2015-12-26 结束第三章,模块化、对象和状态。我的总结
  • 2016-04-23 结束第四章,元语言抽象。我的总结
  • 2016-05-21 结束第五章,寄存器机器里的计算。我的总结

License

More Repositories

1

gooreplacer

⚡️⚡️A browser extension to modify HTTP requests :-)
JavaScript
1,233
star
2

history-master

📈📉📊A Firefox/Chrome extension to visualize browsing history, sync among different browsers!
JavaScript
414
star
3

gooreplacer.xpi

DEPRECATED. 本仓库采用的 Add-on SDK 技术以废弃。 可参考最新的 WebExtensions 在
JavaScript
200
star
4

oh-my-github

Oh My GitHub is a delightful, open source tool for managing your GitHub repositories
C
181
star
5

learn_clojure.mp4

📺 国内第一套 Clojure 视频课程,Let Lisp Rocks !
111
star
6

zig-curl

Zig bindings for libcurl
Zig
63
star
7

shellgpt

Chat with LLM in your terminal, be it shell generator, story teller, linux-terminal, etc.
Python
62
star
8

mofish

摸鱼,我们是认真的
JavaScript
58
star
9

zigcli

A toolkit for building command lines programs in Zig.
Zig
57
star
10

simargs

A simple, opinionated, struct-based argument parser in Zig.
Zig
56
star
11

podcasts-opml-exporter

Export podcast to OPML for macOS Calalina
JavaScript
44
star
12

pageview-worker

Page View backend based on Cloudflare Workers and KV.
JavaScript
41
star
13

text-saver

A browser extension to save texts anytime, anywhere.
JavaScript
40
star
14

JCScheme

Another Scheme dialect written in Java
Java
37
star
15

prosumer

A producer-consumer solution for Golang
Go
33
star
16

you-draw-i-guess

你画我猜 on LeanCloud
JavaScript
33
star
17

ideas

Think more
29
star
18

promql-prettier

PromQL Prettier
Go
28
star
19

pysh

Yet another shell can run anywhere Python exists.
Python
21
star
20

scheme.clj

Yet another scheme dialect written in Clojure and ClojureScript
Clojure
17
star
21

video-compress

Compress video by 90% without losing much quality, similar to what Pied Piper achieves.
Python
17
star
22

blog-snippets

Some code snippets used in blogs
Emacs Lisp
14
star
23

socket.py

Python socket 编程实战
Python
12
star
24

inheritable-var

A wrapper of TransmittableThreadLocal, an enhanced version of InheritableThreadLocal, to define inheritable variable between threads, even using thread pool
Clojure
9
star
25

blog-backup

Backup blogposts to PDF for offline storage, built with Puppeteer and ClojureScript
Clojure
6
star
26

prom-remote-api

Prometheus remote storage API for Rust
Rust
6
star
27

browser-extenstion.cljs

一个使用 ClojureScript 开发浏览器插件的模板
JavaScript
6
star
28

zig-emacs

Zig binding for Emacs's dynamic modules
C++
5
star
29

zigcc

A util script that aims to ease use zig cc to compile C/C++/Rust/Go programs.
Python
5
star
30

prometrics

Prometheus metrics collector for https://github.com/cep21/circuit
Go
4
star
31

JCB

一款Android平台上的通信录、短信备份软件
Java
4
star
32

v2ex_hot_posts

V2EX 每日热帖
JavaScript
4
star
33

ring-jetty-servlet-adapter

Fork of official Ring Jetty adapter enhanced with servlet-mapping support.
Clojure
3
star
34

hystrix-dynamicvar

Clojure dynamic var binding through hystrix command
Clojure
2
star
35

clj-json

Another parser for JSON written in Clojure.
Clojure
2
star
36

JMES

邮件群发软件
Java
2
star
37

jobbole

伯乐头条文章分享书签
2
star
38

zig-rocksdb

RocksDB binding for Zig
Zig
2
star
39

duoshuo-migrator

a migrator help you transfer comments from duoshuo to disqus
Python
1
star