荐书系列:看书就看经典,经典技术书籍推荐大全

programmers-bookshelf

这个列表包括了 100 多本经典技术书籍,涵盖:计算机系统与网络、系统架构、算法与数据结构、前端开发、后端开发、移动开发、数据库、测试、项目与团队、程序员职业修炼、求职面试 和 编程相关的经典书籍。 计算机系统与网络 《图灵的秘密:他的生平、思想及论文解读》 《计算机系统概论》 《深入理解Linux内核》 《深入Linux内核架构》 《TCP/IP详解 卷1:协议》 《Linux系统编程…

《程序员修炼之道:从小工到专家》第八章:注重实效的项目

程序员修炼之道:从小工到专家

一、注重实效的团队 让我们针对团队,重述前面的部分章节: 不要破窗户 质量是一个团队问题。 煮青蛙 作为整体的团队甚至更容易被煮熟。 交流 团队作为实体需要同外界进行明晰的交流。 不要重复你自己 交流、不同的人指派不同的工作、即时聊天软件 正交性 围绕功能,而不是工作职务进行组织。 自动化 确保一致和准确的一种很好的方式是使团队所做的每件事情自动化。 知道何时停止绘画 团队是由个体组成的…

《程序员修炼之道:从小工到专家》第七章:在项目开始之前

程序员修炼之道:从小工到专家

一、需求之坑 完美,不是在没什么需要增加,而是在没什么需要去掉时达到的。 需求很少存在于表面上。通常,它们深深埋藏在层层假定、误解和政治手段的下面。 不要搜集需求——挖掘它们 挖掘需求 挖掘商业本质,将需求作为一般陈述,具体的要求作为元数据,从而进行良好的分解。 找出用户为何要做特定事情的原因,而不只是他们目前要做这件事的方式,这很重要。到最后,你的开发必须解决他们的商业问题,而不只是满…

《程序员修炼之道:从小工到专家》第六章:当你编码时(2)

程序员修炼之道:从小工到专家

四、易于测试的代码 我们需要在一开始就把可测试性构建进软件中,并且把各个部分连接在一起之前对每个部分进行彻底的测试。 单元测试 在隔离状态下对每个模块进行测试,目的是检验其行为。 单元测试是对模块进行演练的代码,在典型情况下,单元测试将建立某种人工环境,然后调用被测试模块中的例程。然后,它根据已知的值,或是同一测试先前返回的结果对返回的结果进行检查。 随后我们把模块装进完整的系统中,使用…

《程序员修炼之道:从小工到专家》第六章:当你编码时(1)

程序员修炼之道:从小工到专家

一、靠巧合编程 怎样靠巧合编程 实现的偶然 实现的偶然是那些只是因为代码在现在的编写方式才得以发生的事情。尽管它们能够工作,但那实在只是一个巧合。 对于你调用的例程,要只依靠记入了文档的行为。如果出于任何原因你无法做到这一点,那就充分把你的各种假设记入文档。 语境的偶然 命令行?GUI?中文? 隐含的假定 巧合可以在所有层面让人误入歧途——从生成需求直到测试。特别是测试,充满了各种虚假因…

《程序员修炼之道:从小工到专家》第五章:弯曲或折断(2)

程序员修炼之道:从小工到专家

四、它只是视图 一旦你基于责任把程序划分成不同模块,你就有了新的问题,在运行时,对象怎样相互交谈?你怎样管理它们之间的逻辑依赖?也就是说,你怎样对这些不同对象中的状态的变化进行同步? 我们将从事件的概念开始。 一个事件就是一条特殊的消息,说明“刚刚发生了某件有趣的事情”,我们可以用事件把某个对象的状态变化通知给可能感兴趣的其他对象。这样使用事件使得那些对象之间的耦合得以减至最少——事件发…

《程序员修炼之道:从小工到专家》第五章:弯曲或折断(1)

程序员修炼之道:从小工到专家

在“可撤销性”中,我们谈到不可撤销的决策的危险,在本章,我们将告诉你怎样做出可撤销的决策,以使你的代码在面对你不确定的世界时保持灵活性和可适应性。 一、解耦与得墨忒耳法则 好篱笆促成好邻居。 在“正交性”和“按合约设计”中,我们提出,编写“羞怯”的代码是有益的,但“羞怯”的工作方式有两种:不向别人暴露自己,不太与太多人打交道。 把你的代码组织成最小组织单位(模块),并限制它们之间的交互,…

《程序员修炼之道:从小工到专家》第四章:注重实效的偏执

程序员修炼之道:从小工到专家

你不可能写出完美的软件 不完美的系统、荒谬的时间标度、可笑的工具、还有不可能实现的需求——在这样一个世界上,让我们安全“驾驶”。 一、按合约设计 没有什么比常识和坦率更让人感到惊讶。 与计算机打交道很难。与人打交道更难。但作为一个族类,我们花费在弄清楚人们交往的问题上的时间更长。在过去几千年中我们得出的一些解决办法也可应用于编程,确保坦率的最佳方案之一就是合约。 合约既规定你的权利和义务…

《程序员修炼之道:从小工到专家》第三章:基本工具(2)

程序员修炼之道:从小工到专家

四、调试 自从14世纪以来,bug(虫子、臭虫)就被用来描述“恐怖的东西”,有趣的是,第一只计算机bug真的是一只虫子,在被要求解释机器为何未按期望运转时,有位技术人员报告说“有一只虫子在系统里”。 遗憾的是,事到如今,在我们的系统里仍然有“bug”,虽然不是会飞的那种。 没有人能写出完美的软件,所以调试肯定要占用大量的时间。接下来让我们看一看调试所涉及的一些问题以及一些用于找出难以捉摸…

《程序员修炼之道:从小工到专家》第三章:基本工具(1)

程序员修炼之道:从小工到专家

工具放大你的才干,你的工具越好,你越是能更好地掌握它们的用法,你的生产力越高。从一套基本的通用工具开始,随着经验的获得,随着你遇到一些特殊需求,你将会在其中增添新的工具,要和工匠一样,定期增添工具。要总是寻找更好的做事方式。不要局限于某一种特定的工具,比如IDE。 花时间学习使用一些工具,有一天你会发现,你的手指在键盘上移动,操纵文本,却不用进行任何有意识的思考。工具将变成你的双手的延伸…

12