2011年书目整理
武侠小说中每个梦想达到武林至高点的英雄好汉,莫不在寻找一本武林秘籍,为了得到这部武林秘籍,不惜付出自己的性命。《九阴真经》引得东邪、西毒、南帝北丐等人大大出手,而《葵花宝典》更是让许多掌门人做了一个痛苦的决定。
在网络高度发达的今天我们可以很方便的阅读各种书籍不用付出什么惨重代价,工作快一年了,为了追求心中的“武林至尊”,看了一些秘籍,与大家分享一下。
《unix环境高级编程'》[0]其实这本书更像是一本工具书,遇到弄不清楚的地方就快速的查一下,但是用这本书学习unix编程,效果可能不是很好。
推荐一本好书《深入理解计算机系统》[1],(其实是上学的时候看的)就是一本比较好的书了,美国多所著名高校都用它来作为计算机编程的教材。哈佛大学的CS61课程的教材,PPT中把整个计算机课程分为2类:CS61和其他的课程,可见这门课的重要性。
可以配合Havard的在线课程[2]。书中有8个实验,都很有趣。比如二进制炸弹,让你过一把黑客瘾,总共有6关,运行时需要输入6个不同的字符串,如果有一个输入错误,炸弹就会爆炸。需要对程序进行反汇编和逆向工程来测定是哪一个字符串。缓冲区溢出实验,可以通过研究缓冲区溢出的错误,来修改二进制可执行文件的运行行为。Shell实验要求自己动手写一个shell,代理实验是自己写一个并行的web代理。
《unix编程艺术》[3],这本书没有讲具体的编程技巧,而是讲述了Unix的发展、Unix的编程文化。其中第一张总结的16个Unix哲学更是全书的精华所在。这里我忍不住要在这里在重复一下:
- 模块原则:使用简洁的借口拼合简单的部件。
- 清晰原则:清晰胜于机巧
- 组合原则:设计时请考虑拼接组合
- 分离原则:策略同机制分离,接口同实现分离
- 简洁原则:设计要简洁,复杂度能低则低
- 吝啬原则:除非确无它法,不要编写庞大的程序
- 透明性原则:设计要可见,以便审查和调试
- 健壮原则:健壮源于透明和简洁
- 表示原则:把知识叠入数据以求逻辑质朴和健壮
- 通俗原则:接口设计避免标新立异
- 缄默原则:如果程序没什么好说的,就沉默
- 补救原则:程序出现异常时,马上退出并给出足够错误信息
- 经济原则:宁花机器一分,不花程序员一秒
- 生成原则:避免手工hack,尽量编写程序去生成程序
- 优化原则:雕琢前先要有原型,跑之前先要会走
- 多样性原则:绝不相信不二法门的断言
- 扩展原则:设计着眼未来,未来总比预想来的快
一言蔽之就是KISS原则:Keep It Simple, Stupid!
《重构:改善既有代码的设计》,这是一本非常实用的好书。现在作为一个程序员,更多的会是维护公司的老代码,在老代码的基础上进行BUG修复、功能升级,完全从头开始做一个新项目的机会不太多。如果你现在维护的代码面临着:大量重复代码、函数很长、参数过多、许多的switch、功能相似的类等问题时,那么看看这本书,绝对可以帮助你。
《Guide:Writing Testable Code》[4]Misko Hevery是Google的测试工程师,这份文档讲述了Google的怎样做单测,如何进行设计让一个类更易于单测。一个不容易单测的设计肯定不好的设计,文档给出了许多不易单测的例子,通过重构让这些例子更加容易单测,这份文档和《重构:改善既有代码的设计》相互补充,从单测的角度告诉你应该如何重构你的代码。
《leveldb源代码》[5]leveldb是Google实现的一个高性能的KV数据库,相当于Bigtable中的一个tablet。阅读源码让我们既可以学习如何设计一个高效的KV数据库,又可以学习Google的编码风格。结合Google C++ Code Style来阅读源代码会对Google的C++编程规范印象更深,也更容易学习。leveldb在实现时有许多Trick的地方比如为了减少编译依赖许多类的内部都有struct Rep结构,结合这个再来阅读《Effective C++》会让你对Effetive c++中所列出的条款有更深的理解。
《怪诞行为学:可预测的非理性》,老罗在海淀剧院演讲时推荐的书,书中通过一个个实例介绍了奸商如何做营销,看了这本书如果你是商人那么会让你如虎添翼,如果是普通消费者也可以避免奸商设下的各种圈套。
《编程珠玑续》[6],这本和《编程珠玑》[7]有许多重复的内容,而新加的内容感觉也没有《编程珠玑》那么让人震撼,建议就不要看了。
No related posts.
顶啊~~