过程作为黑箱抽象——《计算机程序的构造和解释》

本文探讨了如何将平方根计算问题分解为一系列子问题,包括判断猜测是否足够精确及如何改进猜测等。通过模块化的程序设计思路,将每个子问题视为独立的过程,实现了问题的有效解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

  可以看到,对于平方根的计算问题可以自然地分解为若干子问题:怎样说一个猜测是足够好了,怎样去改进一个猜测,等等。这些工作中的每一个都通过一个独立的过程完成,整个sprt程序可以看做一族过程(如图1-2所示),它们直接反应了从原问题到子问题的分解。

  这一分解的重要性,并不仅仅在于它将一个问题分解成了几个部分。当然,我们总可以拿来一个大程序,并将它分割成若干部分:最前面10行、后面10行、再后面10行等等。这里最关键的问题是。分解中的每一个过程完成了一件可以清楚标明的工作,这使它们可以被用作定义其他过程的模块。例如,当我们基于square定义过程good-enough?之时,就是将square看做一个“黑箱”。在这样做时,我们根本无须关注这个过程是如何计算出它的结果的,只需要注意它能计算出平方值的事实。关于平方是如何计算的细节被隐去不提了,可以推迟到后来再考虑。情况确实如此,如果只看good-enough?过程,与其说square是一个过程,不如说它是一个过程的抽象,即所谓的过程抽象。在这一抽象层次上,任何能计算出平方的过程都同样可以用。

转载于:https://www.cnblogs.com/dongerlei/p/5204109.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值