sicp第一讲笔记
scip 第一讲
计算机科学的本质
引子:
古希腊人眼中的几何,是一门使用工具测量具体事物的学科
现代人中的几何,现代人眼中古希腊人:使用时间和空间,来形式化表达数学
那么计算机科学呢?
computer science
science:不是science ,应该是一门艺术/手艺
computer:不是computer,更重要的是计算过程
我们准备学习的是有关计算过程的知识
计算机科学的本质:如何对计算过程进行形式化表述、如何去解决问题,并结合两者发展一套对问题处理过程精确表达的方法
计算机科学中的任务:形式化这种如有关“怎么做”的指令性知识
在大系统中控制复杂度的技术是关键之一
构建计算机组件
计算机处理的是理想化组建
在构建大型系统时,软件都是理想化的,我们忽略现实的束缚,可以随心所欲地组合,唯一的限制是我们的大脑。而其他工程的限制来源于物理层面
控制复杂度的几种技术:
技术一:通过黑盒抽象
盒子内部是什么都不重要
黑盒抽象的基本规则:将处理过程细节放入盒子内去 ,这样可以去脱身去构建更大的盒子
另一个原因:可以实现自己的方法——比方说去创建自己的球平方根方法。但是盒子还是求平方根——我们将通过程序讨论指令性知识
screenshot.png
技术二:通过定义接口
——实现方法是按照约定来实现相应的接口
——根据这个标准来构建系统
modularity:模块化
object-oriented progeramming 面向对象编程
operations on aggregates :聚合操作
jdk8 加入了聚合操作:http://blog.csdn.net/adamyong/article/details/25159505
技术三:元语言抽象
定义一门新语言——最核心的————强调一些方面,又隐藏另一些方面
将展现如何用lisp解释lisp——元语言抽象——这门课最关键的一点
过程——应用和求值——不断重复循环
仅仅关注元素之间关系的语言
这门课中重要的不是lisp,重要的是一种通用框架体系
我们用通用的框架体系来组织语言
一门新语言:
- 基本元素有哪些(primitively elements)
- 将元素整合的方法/构建在一起的方法是什么。
- 抽象的方法是什么(我们怎么利用这些元素把它封装成盒子——将它们当作基本元素,然后继续构造更复杂的程序)
- 解决的问题有哪些(比方说c艹解决了面向对象,java解决了GC,下一代流行的语言必须解决的问题就是并发——李道兵)