我这是有多懒,上一篇SICP笔记还是3月4号做的。。。
进入正题,第三章标题是模块化、对象和状态,其实怎么觉得这一章是讲哲学问题的呢。。。
模块化的意义在于“使这些系统能够‘自然地’划分为一些具有内聚力的部分,使这些部分可以分别进行开发和维护”;
本章提出了两种组织模式,一种是对象,一种是流;
面向对象,对于绝大部分人应该是很熟悉的,毕竟用的太多,赋值,环境模型(或者说作用域),可能我们已经觉得是再平常不过的了,作者直到这一章才提出了这些概念,推翻了前两章的替换模型,用对象来模拟现实世界中的事物及其随时间的状态变化,局部电路的例子非常impressive;
但随局部状态而来的也有很多复杂的问题,例如第四节中提到的并发,并发是现在一个研究的大方向吧,书中也是讲了一些基本的东西,用来展示这种复杂性;
最后一节作者又讲述了流模型,类似电路信号模拟,解决问题的方法十分优美,思路清晰。通过延时求值的方式,或者说按需求值,解决了信号模拟中的低效率问题;
正如本章最后所说,究竟是以众多离散的、随时间变化的对象来模拟世界,还是以统一的、无时间和局部状态的流来模拟世界,已经不仅是程序设计的问题了,但是对于习惯了面向对象程序设计模式的我们来说,看到另一种程序设计的模式,尝试在合适的情况下改变程序设计的方法,还是很重要的;