著名计算机教育家谭浩强先生在1990年版的《FORTRAN语言-—FORTRAN77结构化程序设计》的前言中提到:“著名的计算机科学家沃思有一个有名的公式:算法+数据结构=程序”,谭先生说:“组织一个程序的四要素是:算法、数据结构、计算机语言、结构化程序设计方法。”
自打从谭先生书中或其它场合见到上述公式后,我总是陷入纳闷。从汉语语序与普通逻辑次序而论,算法、数据结构就像是运动与物质,作为一个统一的组合,还是“物质+运动”比较相宜,正如国内哲学教材所说的:“世界是物质的,物质是运动的。”
由于对于上述话语的印象比较深,我一直未发觉谭先生后来的《C程序设计》教材中作了一些修正。尽管我已有该书多时,细读之下,它的表述更符合我的心理预期。
谭先生在2005年版的《C程序设计(第三版)》第二章“程序的灵魂——算法”中也对沃思公式介绍,现详细摘录如下:
(1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data struture);
(2)对操作的描述。即操作步骤,也就是算法(algorithm)。
数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。打个比方,厨师制作菜肴,需要有菜谱,菜谱上一般应包括:①配料,指出应使用哪些原料;②操作步骤,指出如何使用这些原料按规定的步骤加工成所需的菜肴,没有原料是无法加工成所需菜肴的。面对同一些原料可以加工出不同风味的菜肴。作为程序设计人员,必须认真考虑和设计数据结构的操作步骤(算法)。著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:数据结构+算法=程序。
实际上,一个程序除了以上两个主要要素之外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示。因此,算法、数据结构、程序设计方法和语言工具4个方面是一个程序设计人员所应具备的知识。”
国内各类计算机教材、论文与课件中引述谭先生先后不同版本的沃思公式作为立论基础者屡见不鲜,谭先生“程序四因素论”的次序颠倒、缺胳膊少腿的多种变体均有出现。
我个人判断,谭先生当初未见到沃思的原文,根据其他强调算法人士的理解进行了转述,因此显得有点牵强。后来的解释则显得逻辑合理、顺理成章了。
我认为,谭先生开创之功不可没,不可能尽善尽美。至于网文中所称“各大高校自编C语言教材之所以犯同样错误的,大凡均源于不假思索的抄袭”不能简单地将之归罪于谭先生。不过,我觉得对于有关教材特别是名著进行点评对于使用者是大有裨益的。
https://wap.sciencenet.cn/blog-350729-614362.html
上一篇:
国家应早日出台《化肥、农药限用条例》—富营养化水体发出的呼声下一篇:
适度扬弃“政策法规”,大力弘扬“法规政策”——排名也分先后