大道至简

网络时代软件变革之道

前言

作为一个版本控,咱向来是用新不用旧。一方面这直接导致咱大量的时间消耗在软件升级及适应新版本上,另一方面这也让咱拥有了相对丰富的软件升级的经验。

在由各类软件“最新版本”、“开发版本”乃至于“不兼容替代品”搭建成的华丽但脆弱的扑克山上长期居住,个中辛酸,人生百味,不必多言。

就说说好的一面吧,咱已经实现了数据全面上云,并且掌握了熟练的数据恢复、系统重装、应用部署技术,除此之外还培养了较高的情绪控制力。

只要承载核心数据的微软 Onedrive 不出问题,软件 Bug 引发的数据丢失、软件损坏、系统崩溃,都是过眼云烟;物理层面的硬件损坏,不以介怀;哪怕是心理上的损害,也能自舐伤口。

这么多年的折腾,也该反思总结一下了。故开此篇谈一谈对于软件变革之道的认识。

受限于个人能力 XD,文中图片均取自网络,侵删

何为变革?

概念

变革就是引入了影响较大的不向后兼容更改的升级。用语义化版本(Semantic Versioning)来具体说明,就是引起主版本号变更的升级

语义化版本(Semantic Versioning)

事例

  • 编程语言:Python2 -> Python3

  • 网络协议:IPv4 -> IPv6

  • 操作系统:Windwos -> Linux

  • 管理框架:iptables -> nftables

  • 日常应用:QQ -> 微信

作茧自缚还是化茧成蝶?

如果把软件升级的过程比作昆虫成长的过程,变革就相当于“变态发育”的环节。

在高速发展的现代信息化社会,海量的的电子数据在错综复杂的信道上光速汹涌,而支撑起这一切的网络架构,也在巨浪的澎湃下不断改变。在这样的时代背景下,每一秒都有胸怀改变世界之梦的同志发起软件变革,但现实是残忍的,绝大多数变革最终的结局仍是作茧自缚,仅有为数不多的变革能够化茧成蝶,一飞冲天。

那么,到底是什么撑起了这对能够引发飓风的翅膀呢?

“妙言至径,大道至简。” ——《还金述》

为何简?

这就要从咱对于“人类”这个概念的理解谈起了。

对于自我的探求,恐怕从我们的祖先拥有思考能力的那一刹那就已经开始,而在近代,更是为此特化了一门名为“人类学”的学科。不妨先来看看教科书上是怎么写的:

能够使用语言、具有复杂的社会组织与科技发展的生物,尤其是他们能够建立团体与机构来达到互相支持与协助的目的。

很标准,但咱并不喜欢这种拗口又死板的定义,咱认为,应该再简化下,“地球上的一种生物”,仅此而已。

独拥智慧果实?早已有科学证明,猩猩也能达到人类幼体的智慧水平。

唯一社会体系?楼下蚂蚁第一个不服。

丰富情感能力?解释下你家宠物。

那么仅作为一个生物而谈,根据现有的理论共识,生物个体具有不可抗拒的生存本能,在此基础上,生物群体为了与概率抗争,演化出了扩张的本能。也就是群体会无限制追求更大的种群基数、更广的领地。

作为万物之灵,人类在这方面可谓是再典型不过,不是吗?

扩张的本能是无限的,但现实中当前人类所接触的一切都是有限的。面对无限与有限的矛盾,人类通过利用自己的特长,也就是高等智慧,很快就发现了“效率”的概念:

效率=产出投入效率=\frac{产出}{投入}

那么为了追求无限大的扩张,人类就需要首先达到无限大的效率。而从等式不难看出,效率增长需要更高的产出更低的投入。以批判式的用词对应到现实中人类的品质,其实也就是“贪婪”与“懒惰”。

效率+产出+&投入效率 \to +\infty \\ \Downarrow \\ 产出 \to +\infty \quad \And \quad 投入 \to -\infty

有了以上的展开,我们就可以继续对于“简”的讨论了。

何为简?

扁平化

低依赖

最后更新于