K&R书评

我们应该如何对待经典?
首先要给它一个合理的定位,这不是一本入门书籍,也不是一门讲述如何避免C的一些常见错误的书籍,而是一本提高自己对C语言认识的书籍。仅仅使用了不到300页,就把C语言的方方面面展现的淋漓尽致。作者通过这本书,向人们展示了C语言能够做什么。同事作者试图向人们传达的这样一种态度:程序要写的短小漂亮!也许这与工业化生产要求的代码规范化有一定差距,但这代表了科学家的一种追求卓越的态度。


不得不佩服作者取材的匠心独具。在书中穿插了sell排序、快速排序,折半查找、哈希表、二叉树、链表等等数据结构与算法的知识。而且通过大量的实例,向我们展示了C语言是如何工作的,比如自己编写大量的标准库函数,比如itoa,strcmp,strcpy等等,这些已经成了很多公司笔试、面试的必考题。而最后一章unix系统接口,看似与主题无关,但是其实揭示了计算机程序的一个重要特点,那便是与操作系统有着深刻的关系。系统提供了什么样的接口,你就得利用这些接口写程序,尤其是标准库的编写更是如此,对于有些牛人,可以将标准库的函数写的非常送耦合—只有少数代码与API有关,大量的代码是可以在不同的系统下复用的。而且,通过对一些标准库函数的编写(比如malloc、free),作者像我们传达了C语言的一个重要特性,就是操作底层。对于一些复杂的问题,比如复杂的类型声明,作者竟然通过一个简单的程序就能让计算机自己判断,可见作者对这个问题的认识是多么的清楚和切中要害(这才是科学家的风采,我估计可能一般的高校教师或者资深程序员,也很难这么简单的搞定这个问题)。
书中的练习题还是难度挺高的,貌似大牛写的书都有这个特点,可能在他看来很简单的一些问题,一般人都需要花很长时间才能解答,如果不会做,配合答案混个眼熟吧。


但是话也说回来,由于成书较早,里面有些写法已经不太适用了。比如它的main函数没有返回值,比如在函数体内部声明一个函数。而且书中的有的内容也说得太清楚,比如在比较4种strcpy的写法时,作者只说到:“该函数初看起来不太容易理解,但这种表示方法是很有好处的,我们应该掌握这种方法,C语言程序中经常会采用这种写法。”,但并没有详细的解释为什么这么写比较好。书中的有些写法,个人觉得可读性也不是很好,也许在那个计算机刚刚发展的阶段,能够成为的程序员的都是很聪明的人物,而不像现在,为了照顾大把大把的智商一般的程序员(包括鄙人),现在的程序,追求的是可读性强。而且,个人认为此书不适合作为教材(不论是初学入门,还是晋级提高),更像是一篇经典的文言文,只能用来反复玩味,品鉴,如果你非要从中学习它的遣词造句,那么你只能把它背过了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值