以下内容转载自:阮一峰 科技爱好者周刊(第 364 期) – 类型系统不是解决方案
最近数十年,软件行业的一大共识是,类型系统非常有用,至关重要。
大家认定,通过类型系统,在编译阶段就能发现错误,所以人们开发出了越来越强大的类型系统。
我不这样想。我认为,类型系统并不是解决复杂性的根本办法,反而创造出不必要的复杂性。
不使用类型系统,也可以构建出可靠的大型复杂系统。
作为例子,我们可以想一下复杂的硬件系统。电子工程师经常构建包含数百万个元件、充满复杂交互的系统,怎么保证可靠性?
他们主要依赖的是架构原则:模块化、显式接口、严格的调用顺序。
如果你有良好的架构设计,类型系统其实不是必需的,下面就是两个例子。
(1)UNIX 管道可以将数十个程序组合成复杂的工作流,不需要进行类型检查,因为每个组件都遵守约定:内部发生的事情不暴露到组件外部,外部通信仅通过显式的、简单的文本数据进行。
(2)互联网本身也没有集中式的类型检查。HTTP 服务器、客户端、电子邮件系统、DNS 解析器,都通过简单的协议进行互操作,遵循组件松耦合和接口简洁的架构原则。
总之,当组件真正隔离,并通过简单、明确的接口进行通信时,即使是大型系统也能保持可理解性。
编程的未来不在于更好地分析复杂系统,而在于更好地构建简单系统。
留言