概述
前些天,在一个关于面向对象和面向过程的话题, 我的一句评论"算法说白了就是过程"引起了辩论.于是我有了写这篇随笔的想法: 一位园友善意地说这个评论太业余了.我没有为业余二字生气,因为人家是善意的.但是,遗憾的是,这两个概念是最基本的程序设计理论了, 而这位园友都没有弄明白。其实没有必要说谁业余了,因为那只会助长浮躁的风气。我希望这里只有学习学习再学习.我相信一定有其他人没有弄清楚.于是这篇随笔就有必要写写了. 我同时将我在评论中说到的一些关于程序设计方法论的言论整理到这篇随笔中来.
关于算法和过程的关系
先引经据典说概念:
<<算法导论>>第二版 中文版 机械工业出版社 2006.9.1出版 I S B N : 9787111187776 南京大学潘金贵等译
第一部分(Part I) 基础(Foundations)的第一节:
所谓算法(algorithm)就是定义良好的计算过程.它取一个或者一组值作为输入, 并产生一个或一组值作为输出。亦即, 算法就是一系列的计算步骤, 用来将输入数据转换成输出结果.
以上是引用. 请注意第一句的主谓宾.主语是"算法". 谓语是"是".宾语是"过程".上述概念说明:一个算法一定是一个过程.
我想大家不用怀疑这本书的权威性, 有这本书的人可以看到长长的编审委员会人员名单.
我的上述评论"算法说白了就是过程"表达的就是同样的意思.
从下文起我就不去找权威经典了.我就将我自己的描述写到这里.
2009.11.16.增加内容
我上面只说了一半, 即算法一定是一个过程。但是所有过程都是算法吗?回答是: 不是所有过程都是算法. 符合如下五