过程作为黑箱抽象——《计算机程序的构造和解释》
2016-02-22 10:53
337 查看
可以看到,对于平方根的计算问题可以自然地分解为若干子问题:怎样说一个猜测是足够好了,怎样去改进一个猜测,等等。这些工作中的每一个都通过一个独立的过程完成,整个sprt程序可以看做一族过程(如图1-2所示),它们直接反应了从原问题到子问题的分解。
![](http://images2015.cnblogs.com/blog/793531/201602/793531-20160222104319635-2079660224.png)
这一分解的重要性,并不仅仅在于它将一个问题分解成了几个部分。当然,我们总可以拿来一个大程序,并将它分割成若干部分:最前面10行、后面10行、再后面10行等等。这里最关键的问题是。分解中的每一个过程完成了一件可以清楚标明的工作,这使它们可以被用作定义其他过程的模块。例如,当我们基于square定义过程good-enough?之时,就是将square看做一个“黑箱”。在这样做时,我们根本无须关注这个过程是如何计算出它的结果的,只需要注意它能计算出平方值的事实。关于平方是如何计算的细节被隐去不提了,可以推迟到后来再考虑。情况确实如此,如果只看good-enough?过程,与其说square是一个过程,不如说它是一个过程的抽象,即所谓的过程抽象。在这一抽象层次上,任何能计算出平方的过程都同样可以用。
![](http://images2015.cnblogs.com/blog/793531/201602/793531-20160222104319635-2079660224.png)
这一分解的重要性,并不仅仅在于它将一个问题分解成了几个部分。当然,我们总可以拿来一个大程序,并将它分割成若干部分:最前面10行、后面10行、再后面10行等等。这里最关键的问题是。分解中的每一个过程完成了一件可以清楚标明的工作,这使它们可以被用作定义其他过程的模块。例如,当我们基于square定义过程good-enough?之时,就是将square看做一个“黑箱”。在这样做时,我们根本无须关注这个过程是如何计算出它的结果的,只需要注意它能计算出平方值的事实。关于平方是如何计算的细节被隐去不提了,可以推迟到后来再考虑。情况确实如此,如果只看good-enough?过程,与其说square是一个过程,不如说它是一个过程的抽象,即所谓的过程抽象。在这一抽象层次上,任何能计算出平方的过程都同样可以用。
相关文章推荐
- AFN上传文件和检测网络状态
- MIT计算机视觉课件总结Lecture1-Lecture5
- Linux 网卡驱动学习(六)(应用层、tcp 层、ip 层、设备层和驱动层作用解析)
- 计算机专业毕业设计指导
- [备忘]Python网络爬虫伪造报头
- Linux 网卡驱动学习(三)(net_device 等数据结构)
- JavaScript模拟表单(带数组的复杂数据结构)提交
- Windows CE 下的 TCP 服务器端类
- 数据结构之队列(二)
- Windows CE 下的 TCP 客户端类
- http协议
- TCP和UDP区别
- fatal error LNK1112: 模块计算机类型“THUMB”与目标计算机类型“ARM”冲突
- 计算机科学精彩帖子收集--JAVA和分布式专栏
- 沿海信标台站的说明(来源于网络)
- Windows Phone 7 下 Socket(TCP) 与 PC 通讯
- 通过 ActiveSync 调试网络的问题
- XMLHttpRequest Level 2 使用指南
- hdu 2795(线段树)
- 现在很多Web项目都选择Nginx作为Http服务器理由