博雅达观分享 http://blog.sciencenet.cn/u/hillside 思接地质年代,眼扫地球内外 …… 跋涉于水文水资源、地理科学、土地利用与规划、科学思辨、中外哲学

博文

程序是什么——“沃思公式”望文生义谈,兼论沃思的拼法与说法

已有 9848 次阅读 2012-9-19 13:35 |个人分类:数学与统计园地|系统分类:科普集锦| 计算机程序是什么, 沃思公式

   著名计算机教育家谭浩强先生在1990年版的《FORTRAN语言-—FORTRAN77结构化程序设计》的前言中提到:“著名的计算机科学家沃思有一个有名的公式:算法+数据结构=程序”,谭先生说:“组织一个程序的四要素是:算法、数据结构、计算机语言、结构化程序设计方法。”
   自打从谭先生书中或其它场合见到上述公式后,我总是陷入纳闷。从汉语语序与普通逻辑次序而论,算法、数据结构就像是运动与物质,作为一个统一的组合,还是“物质+运动”比较相宜,正如国内哲学教材所说的:“世界是物质的,物质是运动的。”
   由于对于上述话语的印象比较深,我一直未发觉谭先生后来的《C程序设计》教材中作了一些修正。尽管我已有该书多时,细读之下,它的表述更符合我的心理预期。
   谭先生在2005年版的《C程序设计(第三版)》第二章“程序的灵魂——算法”中也对沃思公式介绍,现详细摘录如下:
   “一个程序应包括以下两个方面的内容。
   (1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data struture);
   (2)对操作的描述。即操作步骤,也就是算法(algorithm)。
   数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。打个比方,厨师制作菜肴,需要有菜谱,菜谱上一般应包括:①配料,指出应使用哪些原料;②操作步骤,指出如何使用这些原料按规定的步骤加工成所需的菜肴,没有原料是无法加工成所需菜肴的。面对同一些原料可以加工出不同风味的菜肴。作为程序设计人员,必须认真考虑和设计数据结构的操作步骤(算法)。著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:数据结构+算法=程序。
   实际上,一个程序除了以上两个主要要素之外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示。因此,算法、数据结构、程序设计方法和语言工具4个方面是一个程序设计人员所应具备的知识。”
  国内各类计算机教材、论文与课件中引述谭先生先后不同版本的沃思公式作为立论基础者屡见不鲜,谭先生“程序四因素论”的次序颠倒、缺胳膊少腿的多种变体均有出现。
   我个人判断,谭先生当初未见到沃思的原文,根据其他强调算法人士的理解进行了转述,因此显得有点牵强。后来的解释则显得逻辑合理、顺理成章了。
   本来我还想检索一下沃思先生到底咋说的,网搜发现别人已经捷足先登了。与我同样的疑惑他人已有发现与澄清(网文标题为:《别让学术界的浮躁污染了课堂》),只不过言词有些犀利。据该文称,Nikiklaus Wirth的拼法有错,且国内高校教材普遍以讹传讹,沃思也未有过如此直接的表述与公式。此处我就不转述了,他对谭先生略有不敬言词。还有位博友撰写了题为《读谭师傅的书》的连续心得(共7篇),不过他坚称谭先生后来的沃思公式有误,该博友声称“不光是名字,谭师傅把那句名言也整反了”。现提供上述两位博友的网文网址http://blog.sina.com.cn/s/blog_4dcaada90100asbe.htmlhttp://xysblogs.org/eng/archives/4229供有兴者浏览。
   我认为,谭先生开创之功不可没,不可能尽善尽美。至于网文中所称“各大高校自编C语言教材之所以犯同样错误的,大凡均源于不假思索的抄袭”不能简单地将之归罪于谭先生。不过,我觉得对于有关教材特别是名著进行点评对于使用者是大有裨益的。  


https://blog.sciencenet.cn/blog-350729-614362.html

上一篇:国家应早日出台《化肥、农药限用条例》—富营养化水体发出的呼声
下一篇:适度扬弃“政策法规”,大力弘扬“法规政策”——排名也分先后
收藏 IP: 58.240.140.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-1 08:16

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部