知识卡片

技术是否带来复杂度,取决于替代旧技术还是开辟新领域

普通读书笔记卡

内容

技术发展会带来性能提升,但性能提升不一定伴随复杂度提升,区分标准是这项新技术和旧技术是什么关系。如果新技术是对旧技术的彻底替代——比如硬件存储从纸带到磁带到磁盘再到SSD——系统设计时不需要在新旧技术之间做选择或组合,直接用新技术即可,旧技术自然被淘汰,这种情况不会给系统带来额外的复杂度。但如果新技术开辟的是一个全新的领域、并不能完全取代旧技术,系统设计时就必须在多种并存的方案之间做判断、选择或者组合,这个决策过程本身就是复杂度的来源——就像汽车的发明没有让火车消失,飞机的出现也没有完全取代火车,出行时要不要选汽车、火车还是飞机,需要综合权衡价格、时间、速度、舒适度,这个选择过程比”只有一种交通工具可选”要复杂得多。这个判断标准可以帮助提前预判一项新技术会不会给架构带来额外负担:先问它是”替代关系”还是”并存关系”——替代关系的新技术尽管更强大,架构反而更简单(因为不用纠结该用哪个);并存关系的新技术即使单个方案本身不复杂,光是”要不要用、和谁组合、怎么取舍”这件事本身就会增加系统的设计复杂度。

参考来源

- 位置:《从零开始学架构》第04讲《复杂度来源:高性能》(源文件:_epub-src/OEBPS/text00000.html) - 结论依据:原文说明"技术发展带来了性能上的提升,不一定带来复杂度的提升。例如,硬件存储从纸带→磁带→磁盘→SSD,并没有显著带来系统复杂度的增加。因为新技术会逐步淘汰旧技术……只有那些并不是用来取代旧技术,而是开辟了一个全新领域的技术,才会给软件系统带来复杂度……就像汽车的发明无法取代火车,飞机的出现也并不能完全取代火车,所以我们在出行的时候,需要考虑选择汽车、火车还是飞机",直接支撑本卡片结论。 - 原始内容:技术发展带来了性能上的提升,不一定带来复杂度的提升。例如,硬件存储从纸带→磁带→磁盘→SSD,并没有显著带来系统复杂度的增加。因为新技术会逐步淘汰旧技术,这种情况下我们直接用新技术即可,不用担心系统复杂度会随之提升。只有那些并不是用来取代旧技术,而是开辟了一个全新领域的技术,才会给软件系统带来复杂度。