[读书笔记] sicp 第二章 符号数据
|
|
符号求导
|
|
|
|
|
|
第一章关注的是计算过程,以及过程在程序中所扮演的角色。 本章,讲将数据对象组合起来,形成复合数据的方式。 复合数据:能够提升我们在设计程序时所位于的概念层次,提高设计的模块性,增强语言的表达能力。 将程序中处理数据对象的表示的部分与处理数据对象的使用部分相互 隔离的技术,称为数据抽象。 复合数据中的一个关键性思想是闭包的概念,也就是说,用于组合数据对象的粘合剂不但能用于组合基本的数据对象,也能组合复合数据对象。 复合数据对象能够称为以混合与匹配的方式组合程序模块的方便接口。
数据抽象的基本思想,就是设法构造出一些使用复合数据对象的程序,使它们就像是在抽象数据上操作一样。
假定存在构造函数与选择函数
|
|
那么可以定义以下的规则
|
|
很多时候对于一本比较复杂的书,你在到达一定阶段的时候是难以读进去的。Sicp我曾经在几个月前尝试的去读了第一章。很快就读完的,但是对于其的理解实在浅薄。 我希望在这一次的阅读的过程中能够顺利的过一次不本书有所收获。 在接下来的日子里,我会记录下读书笔记以及习题的解答。 这是一个开始。
每一种强有力的语言为此提供了三种机制
在程序设计中,我们需要处理两类元素:过程和数据。非形式的说,数据是一种我们希望去操作的”东西“,而过程是有关操作这些数据的规则的描述。
|
|
2016-08-31 08:09:42
为什么小孩子会这样做呢?
一部分原因是,青少年在心理上还没有摆脱儿童状态,许多人都会残忍地对待他人。他们折磨书呆子的原因就像拔掉一条蜘蛛腿一样,觉得很好玩。在一个人产生良知之前,折磨就是一种娱乐。
孩子们欺负书呆子的另一个原因是为了让自己感到好受一些。当你踩水的时候,你把水踩下去,你的身体就会被托起来。同样,在任何社会等级制度中,那些对自己没自信的人就会通过虐待他们眼中的下等人来突显自己的身份。我已经意识到,正是因为这个原因,在美国社会中底层白人是对待黑人最残酷的群体。
2016-08-31 08:12:26
我认为,真实世界的关键并非在于它是由成年人组成的,而在于它的庞大规模使得你做的每件事都能产生真正意义上的效果。学校、监狱、上流社会的女士午餐会,都做不到这一点。这些场合的成员都好像关在封闭的泡沫之中,所作所为只对泡沫内部有影响,对外部没有影响。那么很自然地,这些场合就会产生野蛮的做法。因为它们不具备实际功能,所以也就无所谓采用的形式^。
2016-08-31 08:13:16
真实世界的特点是,它极其庞大。如果总体足够大,即使是人数最少的少数派,只要聚集在一起,也能产生可观的力量。在真实世界中,书呆子在某些地方聚集起来,形成自己的社区,智力因素成为那里最被看重的东西。有时,这种因素甚至会以相反的形式表现出来,特别是在大学的数理学系,书呆子甚至会夸大笨拙,以显示自己的聪明。约翰·纳什^非常钦佩诺伯特·维纳^^就学维纳的样子,经过走廊的时候都用手扶着墙走路。
以下一个简单的式子
|
|
xx yy定义如下
|
|
那么编译器在我们之后做了什么呢
|
|
纯虚函数能够被静态的调用,不能经过虚拟机制调用。 虚析构函数不能定义为纯虚的,一定要有定义,否则即使可以编译,但是链接的时候会有错误。因为其子类会静态调用上一层的析构函数。如果说上一层的析构函数是一个纯虚函数的话,那么链接的时候会失败。
不应该把所有的函数都声明为虚函数,然后靠编译器去优化操作吧virtual invocation去除。
实际上你很难知道一个类的子类对于这个函数是不是应该定义为const,因为即使现在你不需要修改类的内容,但子类可能需要修改,你没法预料到。那么最好不要定义一个有const函数的基类了。
|
|
编译器会分析声明,贴上Plaint OI' Data的卷标,被贴上该卷标的类,不会有构造函数或者析构函数的调用了。直接使用C的方式。