SICP学习笔记(一)

一直在断断续续地看SICP,确实字字珠玑,今天总算看了前两章,习题做了一部分,不过日后肯定还是要回头重看的,现在略微回头总结一下。

第1章  构造过程抽象

1  好的编程语言应提供的三种机制:基本表达式+组合+抽象
    实际上我们自己也可以为特定问题制定自己的“语言”,是否具有上述能力是这个语言是否强大的关键;
2 过程作为黑箱的抽象
    只为用户提供需要的东西,隐藏复杂的细节,有利于程序的构建;
3  Wishful Thinking 的编程方法
    先假设已经具有某种功能,这样就可以在这一层次上构建程序,具体这一功能如何实现,与当前用它无关;
4  过程与数据没有明确的区分
    高阶函数可以将过程作为返回值,这一应用模糊了过程与数据的分别,使语言具有了更强的抽象能力,函数式语言确实很有意思,有待进一步学习;
5  合适的抽象层次
    如何建立合适的抽象层次,是个重要的问题;

第2章  构造数据抽象

1  实现数据抽象
    只要抽象层次能够提供选择函数与构造函数,即可在这个数据抽象层次上进行操作而避开数据的具体实现,这也是不断构造多层次抽象的办法;
    而实现了数据的多层抽象,就能在修改个别层次的时候不影响整体的使用,因为提供给上层的接口是不变的;
2  闭包
    语言对运算封闭的能力,是实现抽象层次的基础;
3  信号流式的计算过程
    enumerate -> filter -> map ->accumulate ,应该是一种梳理想法的好方式;
4  数据抽象的方法:显式分派 vs 消息传递 vs 数据导向
    话说最近的实习还纠结了一下这个问题,要根据属性码对不同的要素设置不同的绘制方法,显然显示分派是最简单的,一串switch,case,不过看着实在蛋疼,而且确实不易扩充与维护;数据导向,其实是维护一个表,用时是查表,增减修改方法也是修改表,程序接口不变,还是明显要强于第一种方法的;消息传递也是个常用的机制,mfc的基础,最近这个实习还用到qt,里面用的是信号-槽机制,也挺有意思的,有点像神经递质与受体的结合;
5  通用型操作
    如何操作不同类型的数据,书中提到了强制类型转换,与类继承方面的一些思想,但在实践中仍应当是一个复杂的问题;


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值