第 4 章 – 结构化编程
软件开发虽然看起来是在操作很多数学结构,其实不是一个数学研究过程。恰恰相反,软件开发更像是一门科学研究学科,我们通过无法证伪来证明软件的正确性。
结构化编程范式促使我们先将一段程序递归降解为一系列可证明(可以被证伪,但是无法被证实)的小函数,然后再编写相关的测试来视图证明这些函数是错误的。如果这些测试无法证伪这些函数,那么我们就可以认为这些函数是足够正确的,进而推导整个程序是正确的。
结构化编程范式中最有价值的地方就是,它赋予了我们创造可证伪程序单元的能力。在架构设计领域,功能性降解拆分仍然是最佳实践之一。
软件架构师需要定义定义方便地进行证伪(测试)的模块、组件以及服务。为了达到这个目的,他们需要将类似结构化编程的限制方法用在更高的层面上。
第 3 章 – 编程范式纵览
- 结构化编程对程序控制权的直接转移进行了限制和规范
- 面向对象编程对程序控制权的间接转移进行了限制和规范
- 函数式编程对程序中的赋值进行了限制和规范。
这三个编程范式分别限制了 goto 语句、函数指针和赋值语句的使用。
三种编程范式与软件架构的三大关注重点不谋而合:功能性、组件独立性以及数据管理。
第 2 章 – 两个价值维度
哪个价值更大,系统正常工作更重要,还是系统易于修改更重要?如果这个问题由业务部门来回答,他们通常认为系统正常工作很重要。系统开发人员常常也跟随采取了这种态度。但是这种态度是错误的。
业务部门原本就是没有能力评估系统架构的重要程度的,这本来就应该是研发人员自己的工作职责!所以,平衡系统架构的重要性与功能的紧急程度这件事,是软件研发人员自己的职责。
第 1 章 – 设计与架构究竟是什么
设计与架构没有任何区别。一丁点区别都没有!
软件架构的终极目标是,用最小的人力成本来满足构建和维护该系统的需求。
现在的软件研发工程师……真正偷懒的地方在于——持续低估那些好的、良好设计的、整洁的代码的重要性。
昨天居然忘了书摘,前面那本书已经算是看完了,最后一小部分草草翻过。
前几天还认为这任务太简单了,持续 100 天不成问题,没曾想,这就漏了一天。
有趣男女
有趣源自真诚,创意出自轻松。
有趣之人最大的特点不是幽默,而是不装。有趣最大的敌人不是无趣,而是紧张。
理解内向者
我们可以将人格心理学对人的划分,大体上分成特质取向和社会认知取向这两类。内向、外向其实说的就是特质取向;而社会认知取向,却被特质取向的心理学家忽略了。
文化资本与社会资本
相对来说,在年轻时积累社会资本,会存在极大的局限。第一是受限于地域;第二是不够稳健;第三是存在明显的天花板。
另一条路径——积累文化资本。
厌恶「阶层跃迁」这个词。
冷读热读
我将图书分为坏书、可用的书、力作、杰作与神作。多数图书难以超过“杰作”这条金线。所以你无须将有限的生命浪费在反复阅读“力作”之下的著作上。
可用之书与多数力作热读即可,读书万卷真须破;那些凝聚了作者多年心血的杰作与神作,则需要冷读,坐十年冷板凳,反复阅读,再三回味。
需要提醒的是,为什么一天要同时冷读几本很难的书?毛姆、钱锺书等写的读书笔记,都强调了认知科学近些年证实的一点,那就是,不要尝试在一天内读一本难书,三五本书在一天内一起读,效果更好。应将一本难书分散到不同的时段去读,这就是所谓的分散学习。
“四不买原则”——不买经管畅销书、不买身心灵著作、不买专业新书、不单本买书。
热读的方法,我将其成为“抽样阅读法”。
为什么更多地鼓励抽样阅读而非循规蹈矩,按照篇章次序阅读呢?对容易读的书来说,抽样阅读帮助我们节省了时间。而对于难书来说,因为其代表了人类的巅峰知识,往往会超出多数人的阅读舒适区,此时你会昏昏欲睡。然而,你见过写作的时候,会睡着的人吗?
某种意义上,抽样阅读帮助你动用了更多的大脑能量,利用了“大脑爱脑补”的特点,自发地去补齐跳过的中间组块,去思考作者可能讲了什么。如此一来,你会更深刻地理解作者的观点。
怎样将书读得通透
读书通透的第一步是“反”与“古”,就是故意进行思想实验。
“反”与“古”侧重质疑基本假设,通过逆向思维与放到另一个历史周期来提升思维的品质。读书“正”字诀则首重鲜活的证据。
好思想与坏思想的区别在于,前者侧重鲜活的证据,后者侧重说服自己或他人。
在人类生活的早期,他们就习惯在不同位置之间迁移。读书的“上”与“下”字诀,即有意识地改变习以为常的与空间相处的方式,来获得更高的学习效率与更好的读书创意。
总结:
- 正:通过正面证据与验证书中的观点;
- 反:通过证伪法检验与发丝书中的观点;
- 上下:在不同的空间维度读书与思考,以拓宽思维,提高创意;
- 古今:由今联想到古,从历史变化的角度来理解问题;
- 中外:这个好理解,即从地域不同的角度去理解问题。
风格练习
人生四季,春夏秋冬,生老病死,发展心理学把人看成一条生命曲线。这条人生曲线始终有两种力量博弈。
第一种力量是“人格发展”,就是你将自己区分于他人。
第二种力量是“社会性发展”。如果说人格发展是你何以成为自己,那么,社会性发展是指你如何与他人交往,如何与世界相处。
有趣的人啊,在于偏离,在于内在动机,在于风格。
真正有趣的人,在人格发展与社会性发展的长期博弈间,会取得平衡。反之,假装的有趣,随意波动并不稳定,常常是心血来潮、虎头蛇尾、追逐潮流。
写作一如人生,表达力求清晰、简单、真实。