[已注销]对《计算机程序的构造和解释(原书第2版)》的笔记(5)

计算机程序的构造和解释(原书第2版)
  • 书名: 计算机程序的构造和解释(原书第2版)
  • 作者: Harold Abelson/Gerald Jay Sussman/Julie Sussman
  • 副标题: 原书第2版
  • 页数: 473
  • 出版社: 机械工业出版社
  • 出版年: 2004-2
  • 第23页
    1.在迭代的情况里,在计算的过程中的任何一点,程序变量都完整地描述出了计算的状态,而对『递归计算』而言,则存在一些隐式信息,它并不保存在程序的变量中,而是由解释器维护着,它指明了在推迟的运算所形成的链条里,计算正进行到哪一部,这条链条越长,需要保存的信息也就越多。
    2.递归计算 != 递归过程
    递归过程是一个语法概念,在定义时引用了自我。
    而递归计算则表示『计算的进行方式』
    就像递归定义的 fact-iter 不是递归计算,而是迭代计算。
    3.很多语言之所以提供“循环结构”这样语法糖是因为它们在实现『递归过程』时使用的方法使用的存储器正比于递归过程调用的次数,尽管计算本质是“迭代”的。
    而 scheme 利用伪递归就可以用递归过程表示『迭代计算』了
    2012-12-20 14:30:08 回应
  • 第38页
    函数或数学记法都是为了“抽象”,只关注一个固定模式,例如求和,而让要求和的函数、和增量成为变量。
    (define (sum term a next b)
    (if (> a b)
    0
    (+ (term a)
    (sum term (next a) next b))))
    (term a) + recursion
    将(next a)传入更深层次的递归
    2012-12-20 17:15:30 回应
  • 第34页
    怎样用费马检查检测素数?
    利用费马小定理:如果n是素数,那么对小于n的所有正整数a都有:
    a^n的n次方和a模n同余
    也就是说a^n除以n的余数等于a除以n的余数(即a本身,因为a<n)
    那么如果我们要检查n是否是素数,那么就可以随机地从比它小的数中挑选一个数字,如果它没通过费马定理的考验,那么它铁定不是素数,但如果通过,也不一定能证明它一定是素数(定理要求“所有”),但可能性“很大
    不过这样的检查可能会将一些数字会被误判为素数,carmichael数本身不是素数,但是却具有这样的性质(对小于n的所有正整数a都有,a^n的n次方和a模n同余),不过这样的数很少。
    习题1.28是miller-labin素性检测算法,其过程是随机地选取一个小于n的a,求a的(n-1)次幂对n的模(a^n-1 mod n)b
    是不是存在不等于【1或n-1】的b,其平方模n等于1(b*b mod n = 1 )
    如果这样的b存在(那么b也叫非平凡平方根)
    那么n就一定不是素数。
    2017-03-09 17:34:53 回应
  • 第88页
    语言应该用一种统一的方式去处理不同的计算,因此“组合”的方法必须提供“闭包”的性质
    2012-12-25 13:44:57 回应
  • 第354页
    第五章居然实现了一种另类的ISA模拟器,还有gc
    ====
    如何用寄存器和控制器实现『迭代』计算过程?
    让机器反复执行一个控制器循环,并不断改变各个寄存器的内容,直到满足了某些结束条件,而在控制序列中的每一个点机器的状态,也就是『迭代计算』在整个过程中的状态,就是由这些寄存器的内容所决定的!
    也就是说只要我们弄几个寄存器(内存),加上一些控制电路,就能完全地表达计算。
    进一步扩充机器,加上stack,我们就能实现『递归』计算过程。
    2013-01-02 15:03:30 回应

[已注销]的其他笔记  · · · · · ·  ( 全部295条 )

The Design of Everyday Things
1
About Face 3
6
Engineering a Compiler
1
人有人的用处
8
Understanding the Linux Kernel
4
计算机程序设计艺术
1
公正
1
The Art of Doing Science and Engineering: Learning to Learn
1
科学革命的结构
7
罗素论教育
3
三十六大
1
娱乐至死
3
Real World Haskell
2
Writing Analytically
1
Is Parallel Programming Hard, And, If So, What Can You Do About It?
1
计算机与人脑
1
组合数学
2
菊与刀
1
Rework
5
翻译新究
4
The Laws of Simplicity
4
计算机组成与设计硬件/软件接口
6
写给无神论者
2
放任自流的时光
3
哥德尔、艾舍尔、巴赫
2
树上的男爵
2
C++语言的设计与演化
1
Land of LISP
7
C陷阱与缺陷
2
CUDA by Example
3
C++沉思录
1
世界尽头与冷酷仙境
4
Head First C
2
刀锋
1
并行编程模式
2
The Ph.D. Grind
2
计算机系统结构
2
禅与摩托车维修艺术
14
流浪的面包树
2
翻译研究
18
An Introduction to Programming in Emacs Lisp
1
GNU Emacs Lisp 编程入门
1
计算机系统概论
1
编码
3
拖延心理学
1
古今数学思想(一)
1
挪威的森林
9
奇特的一生
7
GPU高性能运算之CUDA
5
那些年,我们一起追的女孩
8
十八岁给我一个姑娘
2
C++编程思想(第1卷)
9
多核计算与程序设计
8
少有人走的路
5
忧伤的情欲
3
Hackers & Painters
7
哲学的慰藉
9
男人来自火星 女人来自金星
8
旅行的艺术
14
活着活着就老了
1
如何阅读一本书
7
Data-intensive Text Processing With Mapreduce
1
学习GNU Emacs
1
给研究生的学术建议
3
C专家编程
2
Spring揭秘
2
Head First Java(第二版·中文版)
1
自私的基因
1
C程序设计语言
2
计算机网络
3
自由在高处
2
大话设计模式
16
计算机网络
12