经典书¶
IT Core¶
TCPL:《C 程序设计语言》
CPPP:《C++ Primer》
SICP:《计算机程序的构造和解释》
MOS:《现代操作系统》
CAAQA:《计算机体系结构-量化研究方法》
GOF:《设计模式:可复用面向对象软件的基础》
CLRS:《算法导论》
TAOCP:《计算机程序设计艺术》
apue
tcp/ip
CSAPP:深入理解计算机系统¶
编译原理¶
鲸书(Advanced Compiler Design and Implementation)
龙书(Compilers Principles, Techniques and Tools
组成原理¶
《深入理解计算机系统》(第 3 版)
《计算机组成与设计:软 / 硬件接口》(第 5 版)
IT 设计¶
Martin Fowler 的《重构》
Kent Beck 的《测试驱动开发》,还有一本《测试驱动的面向对象软件开发》 (Growing Object-Oriented Software, Guided by Tests)
《程序设计实践》(The Practice of Programming)作者是 Brian Kernighan 和 Rob Pike
《Unix 编程环境》
《Unix 编程艺术》Eric Raymond 这样沉浸编程几十年的人写出的作品
Michael Feathers 的《修改代码的艺术》(Working Effectively with Legacy Code)
《重构》《设计模式》《重构与模式》
《重构:改善代码的既有设计》
Robert Martin 的《敏捷软件开发:原则、实践与模式》
Robert Martin 的《代码整洁之道》(Clean Code)
《解析极限编程》(Extreme Programming Explained):
Kent Beck 那本知名的软件工程之作 当年他写作之时,许多人都在努力探寻瀑布开发方法之外的软件工程方法, 除了极限编程,还有特征驱动开发、水晶开发方法等等, 正是这些开发方法的探索,才有了后面敏捷方法的诞生。 极限编程对于行业最大的贡献在于,它引入了大量的实践, 比如,前面提到过的持续集成、这里提到的 TDD,还有诸如结对编程、现场客户等等。 极限编程之所以叫“极限”,它背后的理念就是把好的实践推向极限。 1. 如果集成是好的,我们就尽早集成,推向极限每一次修改都集成,这就是持续集成。 2. 如果开发者测试是好的,我们就尽早测试,推向极限就是先写测试,再根据测试调整代码,这就是测试驱动开发。 3. 如果代码评审是好的,我们就多做评审,推向极限就是随时随地地代码评审,这就是结对编程。 4. 如果客户交流是好的,我们就和客户多交流,推向极限就是客户与开发团队时时刻刻在一起,这就是现场客户。
“程序员修炼之道⸺从小工到专家:
书里覆盖了一名程序员真正面临的一些问题,比如: 与软件腐烂作斗争 避开重复知识的陷阱 编写灵活、动态、可适应的代码 使你的代码 “防弹” 捕捉真正的需求 无情而有效的测试 无处不在的自动化
管理¶
德鲁克:管理的实践⸺管理的总纲
德鲁克-卓有成效的管理者
“管理学大师彼得 · 德鲁克写过一篇著名的文章,叫《自我管理”
德鲁克-《个人的管理》