前言:
此刻我们对“比较好的c语言书”大概比较着重,我们都想要学习一些“比较好的c语言书”的相关资讯。那么小编在网上网罗了一些对于“比较好的c语言书””的相关内容,希望各位老铁们能喜欢,我们一起来了解一下吧!相信学习编程语言的同学一定都有这样的经历,当你自信地写完一段程序,却发现程序报错了,花了大半夜的时间去找bug,bug没找到,头发倒掉了不少。又或者,遇到一个bug,你也不知道改了哪里,再运行一遍,程序竟然又不报错了。
如果有人问我,异步君,我不想再写满是bug的程序了,那么我该去读一本什么样的书呢?
或许对于C语言之外的编程语言,我不能给出一个肯定的答案,因为其他的语言几乎没过一段时间就有一本新的教你规避bug的书出版,而往往新的总会比过去的更加全面,但如果你是学习的C语言,那么我有一个答案给你,这本书历时14年,仍是C语言中关于帮助你规避bug的图书里最热门,最畅销的。
异步君推荐的这本就是Andrew Koenig给我们带来的《C陷阱与缺陷》(C Traps and Pitfalls)。
《C陷阱与缺陷》是一本关于C语言程序员在编程中容易掉入的陷阱的书,自其出版以来,历经14载,它一直都被各个书评站点(或书评人)列入“重点推荐”的清单中。14年来,在它的18次印刷版本中,除去第二次印刷稍微修改过一些问题,以后的16次印刷,我们居然发现它的内容没有丝毫的变更!!!对于一本技术书籍来说,我想其精确性与权威性也算得上是奇迹了吧。
权威专家,经典之作
在C/C++领域中,Andy(Andrew Koenig的昵称)的名字对于每个人来说绝对是如雷贯耳。作为一个知名的专栏作者,Andy已经在各类杂志上面发表了上百篇的杂志文章,给很多人在技术进步的道路上带来了极大的帮助。
ACCU的Francis Glassborow对他的评价是:Andy是世界上最出色的几位C++专家之一。
1977年,Andy在华盛顿特区举行的一次SHARE(IBM 大型机用户组)会议上,他做了一次题为“PL/I中的问题与‘陷阱’”的发言。当时,他刚从哥伦比亚大学调至AT&T的贝尔实验室。在贝尔实验室工作的10年间,他积累了丰富的经验,深谙C程序员在开发时如果一知半解将会遇到多少麻烦。
《C陷阱与缺陷》以作者1985 年在贝尔实验室时发表的一篇论文为基础,结合自己的工作经验将这篇论文扩展成对C 程序员具有珍贵价值的经典著作。这本书的出发点不是要批判C 语言,而是要帮助C 程序员绕过编程过程中的陷阱和障碍。
当Francis Glassborow读到这本书的时候,他对这本书大加赞词:本书所揭示的知识,至少能够帮助你减少C代码和初级C++代码中90%的Bug。
如果你才学完《C Primer Plus》(或者是类似C语言基础之类的图书),对C语言有了一定的了解,想要进一步深入学习C语言,这本《C陷阱与缺陷》为你提供了一种另类的学习方法来帮助你巩固提升对C语言的理解。同时,如果你已经对C语言有了较为深入的了解,《C陷阱与缺陷》也能为你提出很多有用的建议,让你查漏补缺,必要时作为工具书使用也完全可行。
不走寻常路,先看看常见的错误特性
Andy曾说:“当我动笔写作《C陷阱与缺陷》时,可没想到14年后这本书还在印刷和发行!它之所以历久不衰,我想可能是因为书中道出了C语言编程中一些重要的经验教训。即便到了今天,这些教训也还没有广为人知”。
C语言中那些容易导致人犯错误的特性,往往也正是吸引编程老手们的特性。因此,大多数程序员在成长为C编程高手的道路上,犯过的错误总是惊人地相似!只要C语言还能继续感召新的程序员投身其中,这些错误就还会一犯再犯。
大家通常在阅读程序设计图书时会发现,大部分的图书观点通常是,要成为一个优秀的程序员,最重要的无非是学习一种特定程序语言、函数库或者操作系统的细节,而且多多益善。当然,这种观念不无道理,但也有偏颇之处。其实,掌握细节并不难,一本索引丰富完备的参考书就已经足矣;最多可能还需要一位稍有经验的同事不时从旁点拨,指明方向。难的是那些我们已经了解的东西,如何“运用之妙,存乎一心”。
而Andy认为学习那些是不应该做的,倒不失为一条领悟运用之道的路子。程序设计语言,就比如说C吧,其中那些让精于编程者觉得称心应手之处,也格外容易误用;而经验丰富的老手,甚至可以如有“先见之明”般指出他们误用的方式。研究一种语言中程序员容易犯错之处,不仅可以“前车之覆,后车之鉴”,还能使我们更谙熟这种语言的深层运作机制。
《C陷阱与缺陷》这本书一共八章,分别从以下几个方面全面地分析了在C语言的编程过程中可能会遇到的各种各样的问题。
● 词法“陷阱”
● 语法“陷阱”
● 语义“陷阱”
● 连接
● 库函数
● 预处理器
● 可移植性缺陷
除了以上的七点内容,Andy还在本书的最后一章给出了许多在C语言编程中实用的建议。
显然,这不是一本适合C语言新人的书,但对于那些已经有了一定经验的C语言程序员来说,这本书中的内容涵盖了你成为一个C语言编程高手的过程中所必须的‘硬’知识。
例如,Andy在第二章中就告诉读者:要对程序中的符号有足够深入的理解,否则,我们就会因为将这些符号带入了自己的直觉而导致我们辛苦写出的程序出错,而又难以在debug的过程中找出。
要理解一个C程序,仅仅理解组成该程序的符号是不够的。程序员还必须理解这些符号是如何组合成声明、表达式、语句和程序的。虽然这些组合方式的定义都很完备,几乎无懈可击,但有时这些定义与人们的直觉相悖,或者容易引起混淆。
还比如,Andy在第三章的“语义‘陷阱’”中提到:复制指针并不同时复制指针所指向的数据。对于C语言的初学者来说,这一细节引发的错误可以说是其在学习C的路程上不可缺少的。即使对于很多经验丰富的C程序员来说,也往往会因为忽略这一细节的知识点进而导致他们的程序产生预料之外的bug。
而这本书的内容几乎都是关于这些容易被人们忽略却又至关重要的编程小细节,如果一个C程序员想要真正地写出健壮的程序,避免出现由于这些小细节所导致的错误,除了用过去无数的血与泪得出教训外,一个更好的方法是:买下《C陷阱与缺陷》这本书,然后认真地读完它,它就像是一个有着丰富编程经验的前辈,能够帮助你摆脱你平时编程所遇到的绝大多数bug。
Andy的学习建议
在本书的第八章,Andy讲到了很多关于C语言编程的建议,这些建议对于读者是很有帮助的。在本章的开篇,Andy就给出了一个总的建议:最重要的规避技巧就是,知道自己在做什么。这一点建议看似简单而又容易做到,但是当我们回望自己的编程经历是会发现,那些由于疲倦,压力和种种负面因素导致的心不在焉才是让我们的程序出错的真正原因。
当然,Andy也给出了一些别的通用的建议。
● 不要说服自己相信“皇帝的新装”。
● 直截了当地表明意图。
● 考查最简单的特例。
● 使用不对称边界。
● 注意潜伏在暗处的Bug。
● 防御性编程。
此外,Andy还提到了一点:学习书中提到的这些细节其实并不难,难的是如何运用那些我们已经掌握的知识。这一点的意义远不止在编程中,即使在生活中,有时我们明知某些地方我们需要特别注意,但最后的结果仍是我们的马虎导致了出错。至于如何解决这一问题,书中虽然未有明确的答案,但如果你读完了这本书,我相信你心中一定会有一个答案。
平实语言,幽默风趣
对于一本涵盖了许多知识内容的计算机书籍来说,能够摒弃了那些华丽的笔法,用平实的语言清晰地讲述那些深奥的知识,就是一个巨大的优点。Andy在其平实和亲切的行文中,还不忘加上一些幽默的内容来让读者从烦闷的知识中放松一下,尽管有时这些笑话确实有点‘冷’。
Koenig: "Koenig" 是一个很常见的德国姓,... 意义是“国王”。不过我的情况很特殊,我祖上是波兰和乌克兰人,不是德国人。这个名字其实是一个长长的波兰姓氏的缩写。... 我们家里人从来不这么说。
Moo: 谈到我这个姓氏,最重要的一点就是,其发音跟牛叫的声音一模一样
总之,作为一个C语言程序员,如果你想要写出健壮的程序,想要让自己少花些时间在令让抓挠的找bug中,Andy的这本《C陷阱与缺陷》绝对是你C语言进阶路途上的最佳选择。
好书推荐
对于那些渴望自己C语言编程能力的程序员来说,《C陷阱与缺陷》这一本书显然不足够,异步君在这里再推荐四本关于C语言的图书,其中《C Primer Plus 第六版 中文版》可供C语言初学者阅读学习(如果你希望巩固自己的C语言基础,这本书也很适合。),《C与指针》、《C专家编程》和《C语言接口与实现:创建可重用软件的技术》这三本书则是和《C陷阱与缺陷》一样更加适合那些已经拥有了一定C语言编程经验,想要在C语言的编程之路上更进一步的读者。
《C Primer Plus 第六版 中文版》
《C Primer Plus 第六版 中文版》详细讲解了C语言的基本概念和编程技巧。有了这本书,你大可扔掉其他任何关于C语言基础的书,这是一本可以陪伴你在一路上学习C语言的好书。
当你读到这本书,首先所能感觉到的特点就是这本书读起来亲切自然,讲述了深奥的知识的同时毫无枯涩烦躁之感,读起来就像作者与你面对面侃侃而谈。作者也自从书的第一页就在不断地向自己强调书的可读性与读者的阅读体验。
这本书真正的诠释了入门书籍的概念,却又可以为你指出深入的方向,让你在继续前进时不至于迷茫。此外,作者在每章末尾安排的复习题和编程练习题进一步强化了书中的重要信息,有助于读者理解和消化那些难以理解的概念。
新版第六版更是在之前版本的基础之上进行了全新升级,新版的内容涵盖了C语言新的进展以及C11标准的详细内容。
《C与指针》
《C和指针》是一本关于C语言学习的相当不错的书籍,尤其是对于刚刚入门的学习者来说。《C和指针》这本书涵盖了C语言的全部内容,作者在这本书中特别注重指针的讲解,除了头尾的几章,指针的话题几乎是贯穿了全书。
从基础概念到类型和数据结构以及一些容易让初学者犯错的地方讲解的十分细致,但又不带丁点学究气味,给人带来十分清新的阅读享受。更将指针这一让人挠头的概念,用以简洁准确的文字,配合贴切的图示,讲解的让人容易得其要领。
《C专家编程》
《C专家编程》这一本书向我们展示了最优秀的C程序员所使用的编码技巧以供我们参考学习借鉴,同时也为我们开辟了一条站在C的高度来了解和学习C++的道路。本书的内容包括中C的历史、语言特性、声明、数组、指针、链接、运行和内存,同时,本书还单独开辟了一章内容来对C++的基础知识内容进行讲解介绍。
对于书中关于C语言历史的那部分,作者凭借着其独特的笔调让每一个读者内容都能燃起熊熊的八卦之火,其中又不乏实用的知识。关于书中那些C语言的编程内容,作者作为曾经SUN编译器小组的成员,向我们分享了很多C语言开发中的实际经验。
为了帮助读者更好地领会指针、数组和它们两者间的关系,作者更是花费了足足三章来进行相关的讲解。
《C语言接口与实现:创建可重用软件的技术》
C语言接口与实现》这本书可以看作是接口设计的范本,该书用C语言进行数据结构的封装,书中的基本思想就是一个数据结构和围绕它操作的一系列函数。
《C语言接口与实现》这本书中介绍的接口种类非常多,几乎适用于所有接口类型。从内容上来说,这是一本非常优秀而且实用的工具书。从编程思想上来说,这本书能够帮助你培养出极其健康的代码规范和编程思想。
同时,本书的作者曾经同贝尔实验室合作开展研究工作,是适用于UNIX系统上的高质量C编译器Icc的开发者之一。
文章编辑:风栖 、刘鑫 | 审校:刘鑫
参考来源:
《C陷阱与缺陷》前言、第一章
异步社区
标签: #比较好的c语言书 #计算机二级考试c语言看什么书