# 大道至简

## 前言

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

![](/files/-Mhs_kYTDzkixNPHV4zm)

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

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

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

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

{% hint style="info" %}
受限于个人能力 XD，文中图片均取自网络，侵删
{% endhint %}

## 何为变革？

### 概念

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

![语义化版本（Semantic Versioning）](/files/-MiG4ExzLHWAD0N7U4_3)

### 事例

* **编程语言**：Python2 -> Python3
* **网络协议**：IPv4 -> IPv6
* **操作系统**：Windwos -> Linux
* **管理框架**：iptables -> nftables
* **日常应用**：QQ -> 微信

## 作茧自缚还是化茧成蝶？

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

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

![](/files/IsBrq1P35OB6gA8aC4h3)

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

> **“妙言至径，**<mark style="color:red;">**大道至简**</mark>**。”** ——《还金述》

## 为何简？

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

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

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

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

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

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

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

{% hint style="warning" %}
*以上内容仅为调侃，请勿当真 XD*
{% endhint %}

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

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

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

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

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

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

{% hint style="warning" %}
或许是因为人类集体意识中自我否定的一面，在寻找合适的词语去描述人类的本质时，总是会归根于类似“七宗罪”的用词。但需要强调的是，咱也不想使用这种高度贬义的词汇，因为**咱并不认为这种本质是负面的**。
{% endhint %}

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

## 何为简？

### 扁平化

### 低依赖


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.wh2099.com/network/da-dao-zhi-jian.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
