用高阶函数做抽象——《计算机程序的构造和解释》

过程抽象的力量
本文探讨了程序设计中过程抽象的重要性,即定义通用操作而非特定实例,如立方运算的抽象化。文章强调了通过命名抽象并在此基础上工作,可以提高程序设计语言的表达力,使编程更加高效。

  我们已经看到,在作用上,过程也就是一类抽象,它们描述了一些对于数的复合操作,但又并不依赖于特定的数。例如,在定义:

  (defined (cube x)(* x x x))

时,我们讨论的并不是某个特定数值的立方,而是对任意的数到其立方的方法。当然,我们也完全可以不去定义这一过程,而总是写出下面这样的表达式:

  (* 3 3 3)

  (* x x x)

  (* y y y)

并不明确的提出cube。但是,这样做将把自己置于一个非常糟糕的境地,迫使我们永远在语言恰好提供了的那些特定基本操作(例如这里的乘法)的层面上工作,而不能基于更高级的操作去工作。我们写出的程序也能计算立方,但是所用的语言却不能表述立方这一概念。人们对功能强大的程序设计语言有一个必然要求,就是能为公共的模式命名,建立抽象,而后直接在抽象的层次上工作。过程提供了这种能力,这也是为什么除最简单的程序语言外,其他语言都包含定义过程的机制的原因。

 

  作为编程者,我们应该对这类可能性保持高度敏感,设法从中识别出程序里的基本抽象,基于它们去进一步构造,并推广它们以创建威力更加强大的抽象。当然,这并不是说总应该采用尽可能抽象的方式去写程序,程序设计专家们知道如何根据工作中的情况,去选择合适的抽象层次。但是,能基于这种抽象去思考确实是最重要的,只有这样才能在新的上下文中去应用它们。高阶过程的重要性,就在于我们能显示的用程序设计语言的要素去描述这些抽象,使我们能像操作其他计算元素一样去操作它们。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值