《计算机程序的构造和解释(SICP)阅读笔记》

把《effective java》读完了还是感觉差了很多基础,恩泽大神推荐了这本《sicp》,看心情做笔记吧。

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)

20150515

看完高性能mysql, 继续读sicp~ 今天周一,这周末开始.

数学为精确处理"是什么"提供了一种框架,而计算则为精确处理"怎样做"的概念提供了一种框架.

PS:感觉刚开始一直在聊哲学问题..

第一章 构造过程抽象

正则序求值:完全展开而后归约的求职模型
应用序求值:先求值而后应用,解释器里实际使用的是这个,部分原因在于能避免对于表达式的重复求值.

以我为例,我急需 GTD 的工具,而 Emacs 的 Org-mode 是同类软件中最好的(没有之一). 用 Org-mode 大大节省了时间后,我对Emacs爱屋及乌,兴趣高涨了100倍.
反面例子是很多人以啃Lisp教程开始他们的Emacs之旅,坚持下来的人寥寥无几.
;;下了spacemacs感觉确实很难上手,很多快捷键都跟原生不一样.

20170529

看完第一章,感觉就是最重要的还是算法,什么牛顿迭代,平均阻尼,如果你数学好,你就能写出低计算复杂度的代码. 因为对emcas还不熟,所以没有写代码,单纯的看(这样不好). 还有个收获就是明白了时间复杂度O(n)指的是计算步骤长度,计算步骤越短,时间复杂度越低,一下次顿悟了.空间复杂度,指的是每次步骤中,最长的步骤长度多少.

在面向对象编程中,比较重要的一个概念就是,一个类中有很多状态,而它们是随时间而改变的。这些状态的改变,可以看作是由时间所构成的函数。由此我们可以想到,为什么不把每个改变放到一个流中呢?然后对这个流进行处理。下面那篇文章对流编程解释得比较好.

http://www.binwang.me/2012-03-14-sicp35.html

20170603

lisp的stream跟java的stream是一回事吗,看不懂.其实我对什么是惰性求值,函数式编程也不懂,阮一峰的<<函数式编程初探>>写的还不错.

http://www.ruanyifeng.com/blog/2012/04/functional_programming.html
http://blog.csdn.net/jiajiayouba/article/details/49983325 我们来看个例子,我们在这里举一个求x的n次方的例子,我们用传统的命令式编程来写一下:

def expr(x,n): 
    result = 1 
    for i in range(1,n+1): 
        result = result * x 
    return result
if __name__ == '__main__': 
    print(expr(2,5))

这里,我们一直在对result变量赋值,但是我们知道,在函数式编程中的变量是具有不变性的,那么我们为了保持result的状态,就需要将result作为函数参数来传递以保持状态:

def expr(num,n): 
    if n==0: 
        return 1 
    return num*expr(num,n-1)

if __name__ == '__main__': 
    print(expr(2,5))

呦,这不是递归么!

你可能感兴趣的:(《计算机程序的构造和解释(SICP)阅读笔记》)