原始与简单

2011-04-24

前段时间用 FT-60R 和 PL-660 收听了首都机场的航空交通管制通信,为了理解通信内容又看了几集《空中浩劫》,大致了解了机场交通调度和飞机飞行的流程。虽然现在的飞机已经装备了大量先进的飞行仪器,但在实际运作中,特别是起降过程中,依靠的还是传统的模拟无线电通信以及相关人员大脑的判断。即使所谓的仪器飞行也不能让这些原始手段完全消失。原始手段好在哪里呢?

原始手段的靠谱性有其概率论依据:系统内部环节越少,系统之间耦合越松,其总体故障概率越低。靠谱性还体现在兼容性和可维护性方面:原始手段的标准相对清晰,接口不一致的风险低,在应急时易于排查原因和寻求替换。因此可以看出,原始手段的优势不在于原始本身,而在于简单性。怎么界定简单和复杂?不同的上下文中可能有不同的定义,在计算机领域,PCSD 的 Chpt. 1 给出了一系列有关简单与复杂的描述。简单是计算机从业者,特别是软件开发者务必遵循的法则,因为软件系统没有物理定律的约束,具有难以想象的影响扩散能力。简单性与系统规模、新旧确实相关但并不成正比,有时甚至正交。先进手段也并不都会削弱靠谱性,有些技术本身就是为提高可靠性服务的,诸如数字通信在诸多层检验机制的保证下能够比模拟通信具备更好的容错性和抗干扰能力。很多成功技术看似庞大的实现并没有违背简单性的原则,比如互联网系统的生命力之一便是其定义简单而实用的协议栈。

有时我们把原始手段与靠谱等同,来源于对先进手段未知或不可知的恐惧。经验丰富的模拟电路工程师拆开一个 MP3,看到几片已经高度封装的集成电路,难免会无所适从,但这并不意味着集成电路的参数就无法检测;软件版本的更新难免会引入新的 bug,但负责任的开发者一定会修复旧版本中已知的问题。自己不能直接认知的,要通过间接途径来了解。除非是对可靠性有特殊要求的生产环境,否则不应该因为惧怕新问题而拒绝采纳改进意见。有时我们坚守原始手段,完全是出于懒惰。接纳新事物总会有其学习、迁移和磨合的成本,期间系统的靠谱性必然会产生波动。如果不情愿处理一时的麻烦而墨守成规,那么就要准备为问题的累积而承担风险。我们需要的是程序员优秀品质之一的那种“懒惰”,即“磨刀不误砍柴工”。

《空中浩劫》告诉我们,相关研究和管理部门从来没有停止过对飞机安全与航空管制技术的演进,新技术正在逐渐地为生产性环境接纳。传统的无线电通信在相当长的时期内不会从航空系统中消失,其核心原因在于简单而非原始。做系统开发的人,要看清哪些是原则性的东西,哪些是浮于表面的现象。在把握原则的前提下勇于推进新思想的实现。