声明:内容摘抄时进行了部分二次创作
本书目录
摘抄内容
- 自学的程序员会比较“傲慢” 最具挑战性的部分并不是修复问题,而是找到问题。 竞争中容易出现“比烂主义”
- 只有两种程序设计语言,没有人使用的语言和令人抱怨的语言 “试图建造这样的高墙可能是徒劳的”
- 在大学中完成的代码通常不需要他人维护、使用或测试。 作为程序员,不编写单元测试是不称职的 好的设计往往会与高性能的设计背道而驰
- 我们应该忘记“小效率” 软件设计是抽象层的设计,简洁的设计少能留存下来 编写关于异常的程序
- 何时选用哪一门语言没有明确指导,人们倾向于使用他们以前使用的那门,即使它早已不是最优的
- 计算机课程不会花时间比较各种语言之间的区别以及如何为任务选择一门合适的语言
- “如果我被困在荒岛上,我会吃能得到的任何东西。但在家里我喜欢多样化的食物”
- 蠕虫补丁作者喜欢浏览代码补丁对源代码的改进之处并寻找可利用之处,因为并不是所有人都第一时间安装补丁 瀑布模型是错误的
- “前90%的任务占了90%时间,剩下10%占了另外90%” 虽然敏捷开发能使简单的问题更简单,但它对困难的问题无能为力
- 相比20年前,根本问题并没有改变。代码难以集成、调试困难、新程序员难以理解代码……
- “软件工程师想做一些可以工作的东西,包括对满足需求、成本、支付和鲁棒性的承诺”。优雅和一致性是次要的。”
- 200行以上的方法已经超出了合适的范围 学生越早摒弃他们已经学过一切的思想,就越能学习新的思想
- 强迫学生学习一些新的东西,而不是让学生依靠现有技能去完成工作,这会是他们更加谦虚
- “打印调试法”对小规模项目非常有效,但对大型项目毫无作用 大部分时间下,代码只被编写一次,但要被阅读很多次
- “程序应该是为人类服务的,而非为计算机服务的”
- 计算机科学家们被称为科学家,但他们旅行的确实传统上工程师的工作职能,而且没有经过工程培训的洗礼 从大学毕业的软件工程师是可被替代的
- “90%的垃圾”
个人感受
内容主要是絮絮叨叨的说和很多软件开发的故事,像是软件开发编年史:早期日子-现在-未来。文章不经意间串联了很多零散的知识,虽然都是我以前或多或少听说过的内容,但是在读这本书的时候仍然会有新的收获。
例如:
- Basic/C/C++
- Goto语句
- 莫里斯蠕虫
- 代码风格之争
- 面向对象
- 敏捷开发
- “一些个人经验”
总体来看,作者对软件开发理论的发展持悲观态度。
总体感觉收获很多,个人感觉仅次于《人月神话》。如果要我总结一个最大的收获的话,那一定是认识到了学校内开发环境和大型工业项目软件开发的区别。我如果以后决意投入工业界的话,那必须要在硕士这两年注意培养这部分能力。