再举一个很难解决的成因 ──程序库(或组件、中间件)。
现在的应用程序直接间接地使用了很多各式各样的内部/外部程序库。这些程序库里很可能有相似功能的实现,例如每个库为了跨平台都对于底层API包装一层、不使用C/C++标准库提供的功能又自行实现一些类似的功能。
结果是最上层的软件变得越来越大。
我觉得这可能是无解的,因为做应用程序的开发者不会花时间去修改(重构)这些库,而且修改后又会令到库的源码互相依赖度提升,不易更新维护,并失去了程序库的本意──可重复使用的程序。
=============================================
以QQ Windows版为例,我看到QQ/Bin/LICENSE下有这些第三方开源库
估计最大的是libcef.dll 19.3MB。另外icudt.dll也有5.5MB。