当前位置: 查字典图书网> 科技> C语言程序设计> 《C程序设计》(第四版)点评——第1章 程序设计和C语言

《C程序设计》(第四版)点评——第1章 程序设计和C语言

对“《C程序设计》(第四版)点评——第1章 程序设计和C语言”的回应

帝皇法老 2012-12-21 00:25:32

http://bbs.chinaunix.net/thread-1686753-3-1.html
无聊翻了翻楼主的其他帖子,感觉楼主语文水准很低。我同意“教人一些细枝末节的东西,写不好程序”、“细节决定成败”。细节和细枝末节不是一回事。

不是所有东西都能直接通过语言的某些种内部特征表述。
事实上,这也不应该成为一种理想。
语言特征的存在是为了支持各种各样的程序设计风格和技术,
因此,学习一种语言的工作就应该集中于去把握对该语言而言固有的和自然的风格——而不是去理解该语言的所有语言特征的细枝末节。

帝皇法老 2012-12-21 00:09:33

只给出结论却没有支持这个结论的任何例证甚至佐证,即使我完全在说胡话而且你没有必要回答,你也犯了逻辑学的大忌。一切要以客观事实为基础。
另外我从你那个帖子中我可以得出这样的结论,你在帖子回复中对与我的说法类似的说法赞同,此处不发表意见,是你不好好看还是无法理解我的意思?
更奇怪的是你拷贝了一句与主旨无关的可去掉的思维推理性语句,是你鼠标抖了还是无法理解我的意思?

帝皇法老 2012-12-20 23:25:32

莫非你认为
面向过程程序=面向对象程序=程序
究竟谁是民科啊

薛非 2012-12-18 15:52:56

从狭义的角度看,“算法+数据结构=程序”忽略了面向过程程序、面向对象程序和程序的区别
=======================================================
这和老谭一样
属于不知天高地厚
民科

帝皇法老 2012-12-15 23:53:19

仔细从逻辑学的角度分析了一下,我们的观点都经不起推敲,

因为 算法+数据结构=面向过程程序,算法+数据结构=面向对象程序,算法+数据结构=程序
所以 面向过程程序=面向对象程序=程序

您一定会觉得很荒唐!您认为逻辑错误出现在哪儿呢?略加思考便可得知:

从狭义的角度看,“算法+数据结构=程序”忽略了面向过程程序、面向对象程序和程序的区别,导致产生悖论,故此说法不是狭义的说法。如果改成狭义的说法的话,需要引入体系结构论,不够本质,Wirth如果这样写必然不能流传千古。

从广义的角度看,“算法+数据结构=程序”更能反映程序的本质,恰恰体现了Wirth这句话的精妙之处!

综上所述,“算法+数据结构=程序”是个广义的说法,不存在“是否适用”的问题了,“是否适用于面向对象”更加没有意义了,谭某某的说法也就更加荒唐了。

这样一切问题的答案就清晰了,一切争论来源于看待问题的角度差异,逻辑学的确是门很神奇的科学。

薛非 2012-12-03 12:21:24

@帝皇法老
懒得给你科普了
自己去看看吧
http://bbs.chinaunix.net/thread-4056880-1-1.html

薛非 2012-12-02 11:02:26

     【C语言……是成功的系统描述语言……】
     请问是描述什么“系统”?如何“描述”?
     “科普”:“不知道SDL”不是你的错,可您偏偏把“知道SDL”当做别人的错。如果暂且将你所谓的“评论”当做“求助”来看,那也说明你语文有问题,把一个名词强拆成几个词,我还有什么话可说呢?
======================
居然能推出我不知道SDL
这种臆测的本事确实很令我惊奇
我只问你一句
C究竟是不是SDL?

薛非 2012-12-02 10:53:22

     反驳:“算法+数据结构=程序”只适用于面向过程的编程思想。结构化的基础是过程,故可以把结构化看做面向对象和面向过程的中间产物或一种独立存在的编程思想。至于理由,如果我写书我也不会进行阐述,算法和数据结构是无法构建程序结构的。我认为可以将算法和数据结构比喻为血和肉,需要骨架支撑才能成为结构,这样写的好处是防止像您这样的人看不明白。
===================================================

第一句是对错误观点的重复,没有任何说服力。
后面说的只是你“认为”。很可惜,你的“认为”根本没有得到计算机界的承认,否则你也可以像Wirth那样得图灵奖了。
至于“算法和数据结构是无法构建程序结构的”就更荒唐了,基本上就是老谭说的除了算法和数据结构还需要“采用结构化程序设计方法,并且用某一种计算机语言表示”的翻版。把一些无关程序本质、显而易见众所周知的东西当作自己的新发现提出来和Wirth叫板。可惜没人会把你这种用鸡毛蒜皮无关本质的东西来修正大师的真知灼见当作什么新发现,除了您自己。

帝皇法老 2012-11-11 18:00:20

就这样吧,没时间一一回复了

帝皇法老 2012-11-11 17:59:34

  【在main函数中,在执行的最后设置一个“return 0;”语句。当主函数正常结束时,得到的函数值为0,当执行main函数过程中出现异常或错误时,函数值为一个非0的整数。】

  写了“return 0;”居然还可能得到“一个非0的整数”?太神奇了吧

  科普:在程序异常退出时,程序确实返回的是非零值,建议你了解一下PE文件的执行过程。

帝皇法老 2012-11-11 17:36:23

  【而且C 编译系统在新的系统上运行时,可以直接编译“标准链接库”中的大部分功能,不需要修改源代码,因为标准链接库是用可移植的C语言写的。】

  C编译系统在新的系统上运行:估计作者在linux下成功地运行了他的VC6
  可移植的C语言:说实话,没见过这种C语言
  可以直接编译“标准链接库”中的大部分功能:看不懂这是说什么哪

  反驳:嗯!终于找对一句有歧义的话,但看了点评以后,我又笑了!
  绝大多数主流C语言编译系统是跨平台的,尤其是GCC,任何程序员不知道它简直都算是一种耻辱。
  C++相对于C而言(注意是相对),不易于移植,再加上VC编译器称不上主流编译器,无法和GCC等媲美,故不属于可移植的编译系统。
  说“C语言具备可移植性”可能“好”一些,说“可移植的C语言”容易让像某人这样形容词和名词混淆的人看不懂。
  这句话的错误在于对标准链接库上(凭空造了一个定义且不加以诠释),但是对编译器稍微有点了解的人能够“从字面上”理解标准链接库的具体指什么,我现在将这种“理解”总结一下传递给不理解的人。(首先声明下面那个定义是我自己总结的,可能略有问题,理解其含义即可,不必深究。)
  标准链接库是指在不同环境内部对环境起同样作用的库。这个环境可以指操作系统,例如:Windows、Linux等,指操作系统时往往体现在API的不同,也可以指不同的CPU,例如:8051、8086等,往往体现在指令集的不同。

帝皇法老 2012-11-11 16:56:14

   【C语言……是成功的系统描述语言……】
  请问是描述什么“系统”?如何“描述”?
  “科普”:“不知道SDL”不是你的错,可您偏偏把“知道SDL”当做别人的错。如果暂且将你所谓的“评论”当做“求助”来看,那也说明你语文有问题,把一个名词强拆成几个词,我还有什么话可说呢?


   【对于接手的任务要进行认真的分析,研究所给定的条件,分析最后应该到达的目标,找出解决问题的规律,选择解题的方法。在此过程中可以忽律一些次要的因素,使问题抽象化,例如用数学式子表示问题的内在特性。这就是建立模型。】
   我的印象,这不过是中学数学解题方法与数据建模方法的一种杂交而已,不伦不类四不象。“对于接手的任务要进行认真的分析,研究所给定的条件”:空对空的废话。“分析最后应该到达的目标”,目标都不明就编程?“找出解决问题的规律,选择解题的方法”,耳熟,很有亲切感。后来想起来中学数学老师总这么说。“在此过程中可以忽律一些次要的因素”:从胆量方面来说不得不赞一个。复杂的东西都退给客户好了。“使问题抽象化”:不知所云。“用数学式子表示问题的内在特性”,软件设计解决的问题有几个有数学式子?“这就是建立模型”:不打自招,根本就不是在编程。

  反驳:建立模型是编程的一个重要步骤,越来越多的IDE系统集成了建模工具,建模将逐步成为项目开发的必要步骤。这更加衬托出您对标准建模语言(UML)的一无所知(从您对“系统描述语言”发出的疑问亦反映出此问题)。如果您从来不对用数学式子表示问题的内在特性进行研究,可以表明你倾向于系统工具的制作,而疏于工程计算系统、大型游戏、数据库这方面的开发。“在此过程中可以忽律一些次要的因素”,这句话非常正确,你可以类比一下物理学中的“质点”来透彻地理解一下。综上所述,总体反映出您不是在学计算机科学,而仅仅停留在应用的层面,这样您也敢对计算机科学发表错误言论,实在让人心寒!

帝皇法老 2012-11-11 16:25:18

  对于 Wirth 提出的
  算法+数据结构=程序
  老谭评论道:
  【直到今天,这个公式对于过程化程序来说依然是适用的。】
  没有任何理由和依据,而敢于指责大师的公式具有局限性,不能不承认谭大师很有“勇气”。

  反驳:“算法+数据结构=程序”只适用于面向过程的编程思想。结构化的基础是过程,故可以把结构化看做面向对象和面向过程的中间产物或一种独立存在的编程思想。至于理由,如果我写书我也不会进行阐述,算法和数据结构是无法构建程序结构的。我认为可以将算法和数据结构比喻为血和肉,需要骨架支撑才能成为结构,这样写的好处是防止像您这样的人看不明白。

帝皇法老 2012-11-11 15:51:15

这本书存在的问题总所周知,
但看了你的点评,我笑了……
不错的地方让你说错,真正有歧义的地方反而找不到,我该说什么好呢?

凝仔 2011-10-27 17:14:40

我也觉得这书很鸟蛋

薛非 2010-12-03 06:13:36

  又来卖弄你的英文
  英文也许很重要
  但智商更重要
  你到底想说什么
  “Niklaus Wirth” 的名字叫 “ Nikiklause Wirth ” ? 是吗?
  究竟谁是半吊子啊

阿布格里卜 2010-11-29 22:48:01

Wiki英文关于Nikiklause Wirth博士的介绍http://en.wikipedia.org/wiki/Niklaus_Wirth ,PS,LZ用的是中文的Google吧?点一下中文Google下面的Google.com in English,然后搜索Nikiklause Wirth,别说你还真半吊子水,先把英文学学好吧!

薛非 2010-10-22 19:48:07

【第二章 算法——程序的灵魂】
这一章总的来说就如同阑尾,而且是发炎的阑尾。
首先映入眼帘让人感到眼前一亮的是
【著名计算机科学家沃思(Nikiklause Wirth)……】
又来了。有人做过实验,google Nikiklause Wirth搜来的全是中文网页。不要问我为什么,只有智商约等于0的人才会问这样的问题。
由此可见,垃圾也是会疯狂地繁殖的。有人总喜欢沾沾自喜地拿“1100万”说事儿, 我倒想问一句,“1100万”个错误是个什么概念,“1100万”堆垃圾又会造成多大的污染。
对于 Wirth 提出的
算法+数据结构=程序
老谭评论道:
【直到今天,这个公式对于过程化程序来说依然是适用的。】

没有任何理由和依据,而敢于指责大师的公式具有局限性,不能不承认谭大师很有“勇气”。
接着,老谭提出
【实际上,一个过程化的程序除了以上两个主要因素之外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示。因此,算法、数据结构、程序设计方法和语言工具4个方面是一个程序设计人员所应具备的知识,在设计一个程序时要综合运用这几方面的知识。】
感慨:大师总是一针见骨地道出事物的本质;“伪大师”总是点金成铁狗尾续貂并且把水搅混。不妨再续狗尾:小学数学也是“程序设计人员所应具备的知识”。
【2.1 什么是算法】
本小节前半部分介绍什么是算法,后半部分讨论了数值算法与非数值算法。主要毛病在后半部分。
后半部分实际上毫无必要;“数值运算算法”和“非数值运算算法”属于作者闭门造车自创的不规范用语(估计是不怎么读文献所导致);
【对各种数值运算都有比较成熟的算法可供使用】
乃极其武断的信口开河,表明作者对数值计算领域惊人的无知。无知不是过错,但对自己无知的领域随心妄断,是对读者的大不敬

《C语言程序设计》热门书评


书名: C语言程序设计
作者: 谭浩强
出版社: 清华大学出版社
出版年: 2001-12-1
页数: 338
定价: 24.00元
装帧: 平装(无盘)
ISBN: 9787302037910