然而我们知道,“将数置于存储单元”这样的事情并不是计算所必须的——它只是“计算结果的表示法”。因此我们将这个部分从代码:var aNum = 0中抽去。则运算部分可以表示为:这个“运算部分”——作为整体来理解——的具体内容有两种可能:对于计算来说,表明“数0”的方法,就是一个0,或将之表示为一个运算/八)的结果。设f用equo来标识——既然“运算部分”整体可以理解为一个标识,那么我们也可以换一个标识来表示这个抽象:function equ0(){return 03|}既然上述equ₀是一个计算过程,那我们可能通过无限的步骤来完成这一计算。亦即是说,equ₀仅仅关注该标识与其含义的确切关系,其具体指代为return 0,或者是某个耗时无限的计算过程,但并不是这个抽象本身所关注的。
现在,我们提出最后一个推论。既然equo可以指代无限的计算步骤,那么它必等价于图灵机的“顺序逻辑”中所有步骤;既然equo可以指代图灵机所有的顺序步骤,则必然能指代顺序步骤的两种特例:分支与循环;既然equo既可以指代计算的要素“数”,又可以指代计算的要素“算”,还可以指代描述正确计算所必须的逻辑,那么equ₀本身——在概念抽象上——必然等同于一个完整的计算系统。
这就是“函数式”计算范式的基本抽象。
【四】
关于函数,这里再做最后一点点补充。Dijkstra说“在命名一个运算和使用一个运算之间也存在着一种抽象",这里的“命名一个运算"即是函数的本意。
基于此,Dijkstra提出在使用中只注意“(函数)做什么”而不必问“它如何做”。他强调这一过程与使用定理而不必问定理如何证明是一样的。他用这种“偷懒”的法子来证明:使用函数与使用定理一样可行,因而由函数构建起来的计算系统也有着如同用公理、定理构建起来的数学系统一样的正确性。yipindushu.com
这一证明的关键假设是:本质上相同的抽象系统,其解集的抽象本质上也是相同的。而我们人类在自然科学领域中的全部知识,皆来自于这一假设的正确性。
一个和尚挑水喝,是函数的功能问题;两个和尚抬水喝,是运算能力的分布问题;三个和尚没水喝,就是系统问题了。
就程序设计语言来说,它涉及两个事物,其一是程序设计,这个词多少有些美化的成分在里面,因为它原本的意思仅仅是编程(programming),而后来才被演译成了程序设计(program design);其二是语言(language)。
什么是语言呢?解释这个问题跟说清“什么是我"一样地困难,因为如同“我在解释我"一样,我们也正是在“用语言来解释语言"。语言影响了我们全部的生活,是我们全部的知识:我们在口头上讲的,在书本上写的,以及在头脑中思维的,无一不是语言。但是大多数时候,我们只是“被学会了”一门语言,而并没有去认识它是什么。
我们口头上讲的、书面上写的以及头脑中形成映像的三个东西被统称为“语言”,那么显然,上述三个事物仅仅是“语言”在不同载体上的表现而已——用我们此前的一贯措辞,就是三者都不过是语言的不同侧面。因而真正决定了语言之为语言的,决不是书面上的字符,或口头的发音,或头脑中的那个意象。就某一门语言来说(例如汉语),其一,如果书面上的字符决定了它(是这一门语言),那么它无法包容(该语言的)古今文字的差异;其二,如果口头上的发音决定了它,那么它无法包容地方口音;其三,如果头脑中的意象决定了它,那么它无法包容任何还不存在的事物。
所以我们讨论的语言,是不能用其外在形式来定义的。通常我们对语言的定义,仅仅是说明它的功能,即语言是一种事物与事物之间沟通的工具。由这个定义方式来看,程序设计语言,是指计算机——程序的使用者,与人——程序的定义者之间沟通的工具。
版权声明
本站素材均来源与互联网和网友投稿,欢迎学习分享
【节数以及对数据的性质的思考5:http://www.yipindushu.com/xuexifangfa/16492.html
推荐文章
09-13
1 看正能量,让你的生活更有目标!09-13
2 【主要编程范式及其语言特性关系1909-13
3 让你在欢笑中充满正能量的短文!09-13
4 【节试错通常是无能的托辞209-13
5 【主要编程范式及其语言特性关系14