邮电社,不出版文盲写的书行吗?
目录
邮电社,不出版文盲写的书行吗?… 1
抄袭拼凑… 2
欺骗读者… 2
硬伤累累,错谬概念层出不穷… 3
关于关键字… 3
关于标识符… 3
关于常量与变量… 3
关于运算符… 3
关于数据类型… 4
关于表达式… 5
关于声明… 6
关于语句… 6
关于数组… 8
关于初始化… 8
关于函数… 9
关于外部变量与局部变量… 10
关于作用域与生存期… 10
关于字符串… 12
关于库函数… 12
关于指针… 14
关于main() 15
关于输入输出… 15
关于结构体、共用体、枚举… 16
关于链表… 16
关于typedef 16
关于文件… 16
关于对齐… 17
不会数数… 17
重复谭浩强《C程序设计》中的错误… 18
缺乏计算机基础常识… 18
滥造术语… 18
信口开河… 19
代码错误… 20
第1章:… 21
第2章:… 21
第3章:… 22
第4章:… 23
第5章:… 24
第6章:… 25
第7章:… 26
第8章:… 28
第9章:… 31
第10章:… 32
第A章:… 33
第B章:… 33
最后一个小插曲… 33
策划和副总编的问题… 34
呼吁与期待… 40
人民邮电出版社,北京
季仲华 社长
顾冲 副社长
综合出版中心 马嘉 社长
信息分社 刘涛 社长:
2012年10月,贵社出版并发行了一本《C程序设计伴侣》(以下简称《伴侣》)。经阅读之后,我们发现,这是一本涉嫌抄袭和欺骗读者、由C语言文盲(最多是一个C语言半文盲)粗制滥造的、严重误导初学者的C语言书。这本误人子弟的劣书最终得以出版流入市场,免备案空间,乃该书策划编辑、贵社图灵公司副总编陈冰一手促成。
该书至少存在如下一些问题:
抄袭拼凑
该书第一章的许多部分,是将那些从网上搜集的劣质资料复制粘贴或稍作文字修饰而成的(至少有12处:p.4、5、6、7、23、24),很多地方都是成段地抄袭。
这些资料中的大多数,本身就漏洞百出;有些资料彼此矛盾,却被《伴侣》原封不动地搬了过来,甚至其中的病句也照抄不误;有的资料原本是正确的,却被《伴侣》改错了。
例如:“C++语言……比C语言更容易为人们所学习和掌握”(p.5);“编译器只是将输入的.cpp等源代码文件生成.o为后缀的目标文件”(p.24)。
类似情况,第二章至少有3处(p.28、31、36);第四章至少一处(p.78);第七章至少一处(p.143)。
第B章类似情况则数不胜数,至少有24处(p.292、293、294、295、296、297、298、299、300、301、302、303、309、310)。该章基本是由各种网上资料拼凑而成:整段地复制豆瓣书评、网店图书介绍、百度百科、百度文库、甚至有其他作者原创并发表在网上的读书笔记和图书评论。(详见)
然而《伴侣》并没有以参考文献形式呈现上述资料,也没有在书中提及这些内容的出处,只在“致谢”中轻描淡写地说了一句:
“参考了一些网络上的资料,在此也一并感谢这些不知名的默默无闻的分享者”。
实际上,这些资料绝大多数都有署有原作者之名。在这种情况下,该书的编者贸然地将其列入“图灵原创”丛书并将其以“著”归于一位作者之名下,我们认为有欺世盗名之嫌。
欺骗读者
该书“怎样使用这本书”部分(p.6)告诉读者:“添加/Tp.编译选项进行编译”。
实际上使用/Tp. 参数编译的含义是:无论扩展名的源文件都会被当作C++源文件编译。换句话说,书中的很多代码是C++代码而压根不是C代码。这实际上是用C++代码来假冒C代码。
198页声称“我们先来编写这样一段使用函数指针的C语言代码”,然而其后及199页的两处“#include “stdafx.h” ”,及199页的两处“Functionp.ointer.cpp”都说明实际上它们是C++代码。
290页的插图赫然表明在此被调试的是一段C++代码;314页的代码同样说明了这一点,因为这段代码若以C程序对待,则根本就无法通过编译。
118页号称“开发一个嵌入式的程序”,实际上此程序和嵌入式八竿子打不着。
在我们看来,该书公然地出现上述内容是对读者的严重欺骗。然而为了掩饰用C++代码冒充C代码,《伴侣》“怎样使用这本书”部分竟然把这种谬误说成是“因为用到了一些特殊的编译器扩展”,却绝口不提这是在编译C++代码。
硬伤累累,错谬概念层出不穷关于关键字
“另外,这个头文件中定义的表示逻辑真假状态的关键字true和false的使用,可以让我们的程序更具可读性。” (p.73)
“使用true和false这两个关键字来表示逻辑上的真和假”(p.74)。
事实上,true和false从来都不是C语言的关键字。
关于标识符
“C语言中的标识符实际上就是给变量取一个名字,便于我们访问这个变量”(p.48)
事实上,标识符绝不是仅仅用于命名变量,还用于命名函数、命名类型、命名标号、命名常量……,也绝非仅仅是为了“访问”“变量”。
关于常量与变量
“在C语言中,除了使用const关键字来定义常量之外” (p.47)
实际上尽管不可显式改变const变量的值,但const变量依然是变量,与常量有本质的区别。
这说明:该书作者对C语言的“常量”(Constant)概念几乎完全无知。
“……在定义变量之前加上const关键词……所以这个变量……而成为一个常量” (p.47)
变量变成常量,比水变汽油还神奇。
“优先选择用const关键字来表示变量。” (p.48)
关键字不能“表示”变量。
“不能通过指向常量的指针修改它所指向的常量”(p.182)
根本不存在指向常量的指针。
关于运算符
荒谬地宣称“所有的二元运算符都可以与赋值运算符(“=”)相结合而形成组合赋值运算符”(p.60)。
事实上,很多二元运算符都不可能与赋值运算符组合成新的赋值运算符,例如&&、==、>=等二元运算符就不可能与赋值运算符组合成新的赋值运算符。
喜欢真实的人,要做真实的人,所以从来不会想要刻意模仿任何人。