《编程原本》学习笔记( 二 )

        函数是算法的最小单元,是程序的基础。无论是采用面向对象的编程方法,还是采用面向过程的编程方法,都是如此。如果以函数为核心来解读和学习《编程原本》可能会相对容易些。 

       在PASCAL语言中把过程(procedure)和函数(function)两个概念分开,其根据是看相关的逻辑块是否有返回值;而C/C++则对函数和过程并没有作概念上的区分,而只是把PASCAL中的过程概念看作是返回值为void的函数。

       在《原本》中过程的概念与函数的概念是区分的。P6. 1.4 给出了过程的定义。P9. 给出的函数式过程( functional procedure )的概念,则明显地把函数定义为过程的一个子集。也就是说函数是过程的一种特殊情况,是一种带有返回值的过程。

       “谓词” 是数理逻辑中的概念,在学习《离散数学》时必会讨论到。谓词是一种表示命题的方式。由于数理逻辑主要研究命题间的逻辑关系,所以要先有一种方法对命题进行抽象,而谓词就是一种很好的方法。谓词可看作一个剥离了具体对象的函数,客体就是一个变量,谓词与客体结合起来就表示一个具体的命题。同时与n个客体结合的谓词就称为n元谓词。(n >=1 )

       《原本》借用了谓词的概念来表达程序中的一类特殊的函数---返回真值的函数。 也就是说,如果程序中有某个函数返回值类型是bool. 那么在《原本》里,就把它称之为(或者说定义为)谓词。( P15) ( 命题表达的就是真与假,所以用谓词来表达这类函数,使以后的研究全都建立在了坚实的数学基础上了。)


         需要说明的是,《原本》在研究程序时,会提出并定义一系列自已的概念,作为研究的对象和出发点。而对这些概念的定义也做了形式化的要求。也就是说如果《原本》要定义一个自已的概念,就必须要按照一定的格式来表达。就好象事先画好一张表格,作为定义概念用的。如果提出一个自已的概念,只要逐项地按要求添写相应内容就可以了。这张“ 表格 ”的样子就在P12中给出。( 当然,这是一张动态表格,组成表格的各项可根据实际需要来选定。 )

         举个例子:前面所说的谓词的概念在P15中给出。

         Predicate(P)  表示要定义一个谓词P.

         FunctionalProcedure(P) 表示所定义的谓词P是一个函数过程。(见上面的讨论,也就是说P是一个带返回值的过程。)

         Codomain(P) = bool  表示谓词P的返回值类型是一个bool型。 

        而两者之间的符号" ^ " 则表示此定义要同时满足这两个条件。

        关于Domain 和 Codomain的含义可以参看" 学习笔记( 三 ) "的说明。



      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值