知道这本书是在2010年,当时看了公司内部的分布式系统说明文档,当时我还是个刚入职一年的菜鸟,对于文中的分布式系统设计与实现自然是看不明白滴。不明白归不明白,写C++出身的我感觉到这个系统的设计,lib的实现,有些面向对象的味道(环境是Linux下面用C)。苦于自己的不理解,我开始在网上寻找“C语言的面向对象实现”,于是,就找到了这本书。先是看了李先静大侠的博客以及连载,后来就在china-pub上下了单。技术书,我一直觉得还是要看实体的,而且一旦看了就要做笔记。
应该说这本书介绍了一部分C语言的面向对象实现,但主要是讲思想,引导你在开发中走上正确的方向,教会你如何思考。
记得过目就忘同学离开公司之前留下的话:“工作中有很多问题,不要抱怨,尝试解决它。如何尽量做到自动化,如何把我们从重复的工作中解脱出来,这些都是值得考虑的事情。你不去解决它,换个环境你还是会遇到。不要满足现状,多思考,实在不知道做什么,就仔细想想,如何能把手头的事情做的更好。”我想这本书,也是对这段临别赠言的一种诠释。这本书不是和你讲技术细节的,而且用来启发你的,要真正领悟,则需要花很大一番功夫,自己亲自动手来跟着作者来操作。
该书里面最重要的思想:不要重复、尽量抽象出公用的东西。道理很简单,做起来,特别是用C语言这种面向过程的语言就不是那么容易。我天性比较愚笨,加上交流不多,花了两年多的时间才真正能在开发中较好地做到这一点。很多现在看来很明确的道理,如果没有掉过坑,没有足够的实践经验,就不会领悟得很透彻。期间这本书断断续续反复地看,经常有看不下去理解不了的时候,便停下来想一想,隔一段时间再读。虽然不能赞同作者的全部观点,但确实能感觉到有所提高。今年我终于能把这本书全部看完,后来又看了设计模式,发现原来很多模式很多思想,我已经用在了开发中,只是不知道名字罢了。所谓的模式,无非也就是各种层次的抽象吧。
其实,要实现一个需求,首先要把现实中的需求转换为较为抽象的实现方案描述,可以说这是一个建模的过程,是问题转化为数学模型的过程,属于架构层面。接着便是模型到编码的细化,属于实现层面。模型做的好,细化会相对简单,但如何细化,就是程序员自己思考的事了。如何做的有弹性可维护可扩展,这本书可以告诉你。
该书的另一重要思想:要从计算机的角度思考问题,要了解系统是如何工作的。工作这几年,我深深感到对os的认识不足是自己的一大缺陷,其实工作中很多问题的方案,都能在linux系统实现中找到对应的影子。遇到问题多思考,多问自己为什么,多利用互联网来学习,否则,永远都是浮于表面一知半解,再华丽的大厦,如果建筑在沙滩上,也必然是倒塌的命运。
三年多,终于读完了这本书,当然,是读了很多遍。我知道高手是不屑于看这本书的,但这本书对于很多初学者,很多像我一样的菜鸟,还是有不少借鉴意义的。也因此,我推荐立志走技术路线的同学,好好看看这本书。
重要的是抽象的思想
《系统程序员成长计划》热门书评
-
《系统程序员成长计划》成长过程——作者自序
32有用 2无用 broncho 2010-04-12
《系统程序员成长计划》的起源应该追溯到六年前了。04年我进入恒基伟业深圳研发部,参与商务通隐形手机开发。在此之前我是做服务器软件开发的,对嵌入式软件开发非常好奇,所以想方设法进入这个行业。恒基伟业在嵌入式方面的实力也是相当高的,很多在消费类设备方面的开发高手都有在恒基伟业工作过的经验。原以为做嵌入式...
-
三岁小孩不妨看一看
30有用 7无用 laoar 2011-07-04
本着与人为善的原则,不打算作任何评论的。但是看到超过8分的评分,还有赞美之情溢于言表的众多书评,就有了忍不住想写的冲动。其实,我是希望有本事的人能够把自己所学写成书分享给大家,但是有句话说,长的丑不是你的错,出来吓人你就不对了!...
-
对于像我这样的业余软件爱好者,这的确是本好书
5有用 2无用 zpcat 2010-04-04
等这本书出版已经一年了,最先开始看这本书还是在作者的blog上,这也是我比较推荐的blog之一,www.limodev.cn对C语言感兴趣的人,我觉得都应该看看(像我这样的菜鸟级),这本书不是将模式设计却也说了一些设计模式的方法,很适合初学者。另外,这本书中讲解了一些利用面向对象的方式的C语言编程问...
-
这本书不是我的茶
2有用 1无用 [已注销] 2010-05-05
看作者自序里的目标读者群,也许我不能算在其中。不过,这本书我是怀着一种追星族的心态买的,我可以说是在李先静老师的影响下才进入移动开发这个行业的。我毕业后,一直是做windows桌面app的,后来天天在google reader上看李老师的blog,感觉是发现了一片令人激动的新天地,咬咬牙,离开了那个...
-
对初级系统程序员来说这本书很不错
2有用 0无用 Jing 2010-05-06
主要是平时休闲的时候看的。个人觉得本书最主要的是设计思想,比如如何实现抽象和封装(用C)。之所以说是初级,是因为我感觉本书更多的是作为一个指路人的角色,比如用C指针实现OO设计,点到为止,如果感兴趣可以去看OOC。本书比较注重实践,介绍有限状态机那部分很不错,至少让我看的很明白。...