最近非常有幸的接受了人民邮电出版社胡俊英和陈冀康编辑的邀请,翻译《21st Century C, 2nd Edition》这个书,这是一本非常经典的C语言著作,目前已经是第二版了。计算机书出了很多年,大家对其自有判断,最简单的办法就是根据书名,90年代末期出版过几本比较经典的计算机图书,书名为:《**入门到精通》,《21天学会**》等。不过很快大家就开始借用这种书名,最后搞得有些良莠不齐。更有甚者,最近出现了好多,《**从入门到放弃》, 《**从入门到入院》 系列丛书,彻底颠覆了以前程序员中这么神圣的书名。好在还有O’Reilly出版社的动物丛书,目前还都是品质和经典的象征。经典到有的时候在圈内人们都忘了书名,只记得动物的名字。例如Perl语言的 “骆驼书”以及Git的“蝙蝠书”等等。

当完成最后一个字的录入,作为这本书的译者,应该系统的给这本书做个总结了。首先,这是一本经典的C语言图书,amazon有50多个评论,评分达到4分。这个骄人的成绩主要来自于本书的两个优点:第一个优点就是系统性和大局观。C语言最开始作为开发UNIX操作系统的工具,它和UNIX操作系统有着不可分割的关系。无论UNIX派生的POSIX标准以及GNU运动,C语言都是其核心的开发语言和工具。所以如果想真正发挥C语言的威力,那必须要把这个语言放到一个更大的编程环境中去。这本书通过对POSIX标准库,GNU编译器,Shell 脚本,Make,GIT以及文档和测试等一系列内容的介绍,建立了一个高效整合的开发环境,C语言作为这个环境的核心开发语言,通过各种开发工具和库的配合,将开发环境的优点淋漓尽致地发挥出来,从而能显著地提高你的开发效率。

第二个优点就是新思维和反规则。作为物理学的爱好者,我用物理来做一个类比 。牛顿创立了经典力学和万有引力。正当我们认为物理学已经完胜的时候,爱因斯坦在一边幽幽地说了一句:“光会拐弯”。在爱因斯坦的结论在观测日全食得到验证以后,这位天才自信心爆棚并宣称:“一切都是可以通过计算来确定的”,这个时候研究量子力学的波尔却传给了他一个纸条说:“上帝掷骰子!”。也许,我是说也许,我们一直都相信的规则或者答案过于片面。 就像有一天我6岁的女儿小米粒问我,“我们人类从那来啊?”我说:“有人说是猴子变得,有人说是神创造的,你信哪个都可以?你告诉爸爸,你信那个啊?”我的女儿想到没想就回答到:“是神把猴子变成人的!”说完她飘然而去。

我们人类总是有一种倾向,一旦形成了自己的某些规则,那么就会自然地排斥和否定另外的反规则。而这本书的难能可贵之处就在于,它不仅提出了C语言的一些反规则,而且通过一些例子证明这些反规则是合理的。例如,我们可以建造高效和准确的宏,我们可以不需要斤斤计较对内存的使用,哪怕有点内存泄漏,我们可以用goto,但是对switch却完全可以放弃等等。现代物理有一个反物质学说,当物质和反物质遇见,二者会立即湮没,并爆发出巨大的能量。这里我借用一下:当你熟悉了规则,同时也理解了反规则,这个时候你的心中就没有了规则。剩下的就是巨大的能力。此时小李飞刀已经不带刀,此时无招已经胜有招。

俗话说:“优点不说没不了,缺点不说不得了。”下面说说本书的缺点,那就是:对每一部分的内容并没有详细地介绍。所以你不要指望着阅读完本书,你能熟练地使用shell脚本,写出复杂的makefile并通过Git高效地与人协作。坦白的说,这也并不算是缺点。这本书的目的就是告诉你,当你想干XXX的时候,有YYY工具你可以用,而YYY工具的基础用法是ZZZ。 当你发现ZZZ并不够用的时候,你可以去找专门的介绍YYY的书。这个时候你会发现完整介绍YYY的书,它的厚度足以挡住狙击步枪射出的子弹。客观点说,这也算不上啥缺点。没办法,任何和UNIX相关的东西,都有吓人的学习曲线。你想要“会当凌绝顶,荡胸生层云”,那么曲线必须要很陡才行!

最后说说本书面相的对象:首先,这本书并不是教材,虽然本书的后面有一个简短的介绍C语言的附录,我没有骗你,它确实是很简短。请注意我的用词,我只是说“简短”,并没有说“简单”。所以如果你是一个C语言的初学者或者是零基础,这本书并不适合你。

这本书的面相对象是:有一定C语言基础的高年级学生,或者是一些使用C语言作为主要开发语言的工程师。对于高年级的学生,它们缺乏的是一种对大的编程环境的认识。 而对于使用C语言的从业人员,这本书会让你对C语言有不一样的认识,它对你多年使用C语言形成的习惯和风格提出了挑战,让你有一种“原来C语言也可以这些用”的赞叹!然后让这些反规则去湮没你心中存在多年的规则,从而爆发出巨大的能量!

有的时候,书和读者之间是讲点缘分的。 有的时候读者会问什么是好书?我认为:你看懂的,有收获的都是好书。有些人看见花,有些人看见草,而我只是把你带到草地上。最后,我为本书做了一个网站: http://zhaoyan.website/xinzhi/c21/book.php 里面对每一章都有我的观点,推荐的补充内容等。对于本书的“每部分内容过于简短”这一缺点,我做了一些有益的补充和修正 。Enjoy It!

赵岩
02/11/2017

《21st Century C, 2nd Edition》译者序相关推荐

  1. 与孩子一起学编程python_与孩子一起学编程(Python读书笔记3)

    第十一章 嵌套与可变循环 Python 3.X里 print()函数默认是自动换行的,所以本章代码会有很多问题,实际上 print()函数里有一个默认参数 end, 默认情况下: end= " ...

  2. Python跟孩子一起学编程之一

    文章目录 Chap.1 出发吧 运行你的第一个程序 第二个程序 猜数游戏 1.IndentationError 2.SyntaxError 动手试一试 Chap.1 出发吧 记录学习Python过程中 ...

  3. 温州哪里可以学计算机编程,温州 | 什么样的孩子适合学编程?

    原标题:温州 | 什么样的孩子适合学编程? 乔布斯曾说过,这个国家的每个人都应该学习如何编程,因为它教会你如何去思考.在美国,儿童编程已经成为孩子继阅读.写作.算术这三项基本能力外所需要掌握的第四项必 ...

  4. 与孩子一起学编程代码_这周与您的孩子一起做一个代码小时

    与孩子一起学编程代码 The Hour of Code started in 2013 with the goal of getting kids excited about programming ...

  5. 学计算机编程还是学奥数,小学生家长担心奥数被封 孩子改学编程冲名校

    开学在即,苏州许多家长和学生纷纷到书店选购新学期的教辅用书. 王建康 摄 怕奥数被封小学生转学编程 新的一学年很快就要开始了,家长们大多在抓紧这开学前的有限几天,既要忙着给孩子添置文具.教辅用书,又要 ...

  6. 5岁儿童自学python编程-为什么外国5岁孩子就要学编程?原因你一定想知道

    米切尔·雷斯尼克(Mitchel Resnick)是麻省理工学院媒体实验室学习研究教授,也是Scratch编程语言的发明者,还是乐高机器人背后的科学巨人,被人称为"少儿编程之父". ...

  7. coji小机器人_WowWee 让孩子轻松学编程的机器人Coji图赏

    说到编程,大家首先会想到什么?是整天坐在电脑前敲打键盘的"程序猿"还是电脑屏幕上飞速显示的代码?可能是电影看多了,笔者感觉程序员是一个很牛X的职业,如果没有他们,那么我们在电脑上看 ...

  8. coji小机器人_WowWee让孩子轻松学编程 Coji编程机器人体验

    说到编程,大家首先会想到什么?是整天坐在电脑前敲打键盘的"程序猿"还是电脑屏幕上飞速显示的代码?可能是电影看多了,笔者感觉程序员是一个很牛X的职业,如果没有他们,那么我们在电脑上看 ...

  9. coji小机器人_让孩子轻松学编程 WowWee Coji编程机器人体验

    Coji,让孩子成为小小程序员 说到编程,大家首先会想到什么?是整天坐在电脑前敲打键盘的"程序猿"还是电脑屏幕上飞速显示的代码?可能是电影看多了,笔者感觉程序员是一个很牛X的职业, ...

  10. 孩子这样学编程会上瘾:探究式学习、对话和批判性思维

    嗨,大家好,我是酷客国王,欢迎来到酷客编程王国(koocoding.com). 酷客王国是一个由程序构建的虚拟世界,在这里,所有的工作都可以通过"编程"来完成,所以掌握" ...

最新文章

  1. 使用 vue filters过滤器直接显示 几分钟前 几小时前 几天前
  2. VMWare常用快捷键
  3. day18__文件操作
  4. 如何实现一个Servlet中的多个功能
  5. 2018美赛C题论文学习笔记1
  6. 网站地图在线生成软件-只需要导入域名自动生成网站地图
  7. Linux下使用nmap扫描端口
  8. 30【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏 - 中国国际疫情实时追踪
  9. g代码解释程序 java_解析g代码c语言程序
  10. oracle连续月份列表,Oracle实现查询2个日期所跨过的月份列表/日期列表的方法分析...
  11. Unity3D 编辑器扩展 跳转显示指定目录
  12. 人工智能的三个层次:运算智能,感知智能,认知智能
  13. 对云计算机的想法,我对云计算技术的看法
  14. File “./tools/train.py“, line 124 log_file = osp.join(cfg.work_dir, f‘{timestamp}.log‘)
  15. 如何防止木马病毒盗窃QQ密码?
  16. 小程序的服务通知(模板消息) 实现以及坑
  17. python使用gdal读取shp文件
  18. 狼人杀微信小程序项目实例(附源码)
  19. iOS开发之如何用UITableView实时显示歌词
  20. cf不能全屏win7的解决方法_Win10运行DNF全屏后黑屏怎么办|DNF全屏后黑屏解决方法...

热门文章

  1. mysql视图参数_MySQL视图概述
  2. 培养职场“钻石英语”能力
  3. codeforces144——D. Missile Silos(最短路+枚举)
  4. 零基础学Python--------第8章 模块
  5. PAL制式和NTSC制式的区别
  6. sparc架构代码分析-NMI看门狗分析
  7. ArcGIS教程:最大似然法分类
  8. 【数据分析案例】用Excel进行数据分析:从市场调研到销售分析
  9. Xubuntu22.04之替换blueman-manager连接蓝牙设备(一百七十五)
  10. 店宝宝:电商的下一个十年,是什么局面