zxymike93 / SICP

《计算机程序的构造与解释》题解、笔记

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

魔法师入门指南

“I think that it’s extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don’t think we are. I think we’re responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don’t become missionaries. Don’t feel as if you’re Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don’t feel as if the key to successful computing is only in your hands. What’s in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.”

—Alan J. Perlis (April 1, 1922 – February 7, 1990)

如何开始?

  1. 《计算机程序的构造和解析》课本,或者 the HTML Version
  2. 下载 Racket 来完成课本中的习题。
  3. 和基友交流,以及参考 schemewiki 上大家的解答

三大主题

抽象 (Black-box Abstraction)

  • primitive objects
    • primitive procedures
    • primitive data
  • means of combination
    • procedure composition
    • construction of compound data
  • means of abstraction
    • procedure defination
    • simple data abstraction
  • capturing common patterns
    • high-order procedures
    • data as abstraction

接口 (Conventional Interfaces)

如何控制程序的复杂度

  1. generic operations
  2. large-scale structure and modularity
  3. object-oriented programming
  4. operations on aggregates

元语言抽象 (Meta-linguistic Abstraction)

如何构建一门新语言

  1. interpretation
  2. logic programming
  3. register machines

About

《计算机程序的构造与解释》题解、笔记

License:MIT License


Languages

Language:Racket 100.0%