ax******er@126.com
deepin
2018-03-04 02:11 本帖最后由 valerian 于 2018-3-3 18:52 编辑
需要注意的是,一种依赖包不管多么基础多么重要(比如glibc)它都是有生命周期(以破坏兼容性为标准)的,基础的依赖不可能不更新,也不可能用到天荒地老。
举个例子就像windows的 C++运行库一样
Microsoft Visual C++ 2008 Redistributable – 9.0.30729.7523 x86/x64
Microsoft Visual C++ 2010 Redistributable – 10.0.40219.473 x86/x64
Microsoft Visual C++ 2012 Redistributable – 11.0.61135.400 x86/x64
Microsoft Visual C++ 2013 Redistributable – 12.0.40664 x86/x64
Microsoft Visual C++ 2015 Redistributable – 14.0.24516 x86/x64
Microsoft Visual C++ 2017 Redistributable – 14.12.25810 x86/x64
每一年都发布一个当年的最新基础开发环境库,新开发的软件就应该以此环境开发软件,老软件可以依然以软件当年开发的环境开发与运行,这样操作系统只需装上每一年的基础开发环境库,就能保证以此开发的软件稳定运行。
说一个极端情况,如果一个软件非常古老,是以Microsoft Visual C++ 2005环境开发的,而操作系统本身都无法安装这个基础开发环境库,那么这个软件肯定就无法运行了,但是需要说明的是如果一个软件10多年都不更新,不升级基础开发环境库,那么多半这个软件肯定已经死了,肯定没有人使用,说不定有了更好的替代品。
这时我们就可说“Microsoft Visual C++ 2005”这个基础开发环境库已经圆满的完成了自己的使命,即便不安装,也不会引起大规模的软件故障。
需要注意的是,一种依赖包不管多么基础多么重要(比如glibc)它都是有生命周期(以破坏兼容性为标准)的,基础的依赖不可能不更新,也不可能用到天荒地老。
举个例子就像windows的 C++运行库一样
Microsoft Visual C++ 2008 Redistributable – 9.0.30729.7523 x86/x64
Microsoft Visual C++ 2010 Redistributable – 10.0.40219.473 x86/x64
Microsoft Visual C++ 2012 Redistributable – 11.0.61135.400 x86/x64
Microsoft Visual C++ 2013 Redistributable – 12.0.40664 x86/x64
Microsoft Visual C++ 2015 Redistributable – 14.0.24516 x86/x64
Microsoft Visual C++ 2017 Redistributable – 14.12.25810 x86/x64
每一年都发布一个当年的最新基础开发环境库,新开发的软件就应该以此环境开发软件,老软件可以依然以软件当年开发的环境开发与运行,这样操作系统只需装上每一年的基础开发环境库,就能保证以此开发的软件稳定运行。
说一个极端情况,如果一个软件非常古老,是以Microsoft Visual C++ 2005环境开发的,而操作系统本身都无法安装这个基础开发环境库,那么这个软件肯定就无法运行了,但是需要说明的是如果一个软件10多年都不更新,不升级基础开发环境库,那么多半这个软件肯定已经死了,肯定没有人使用,说不定有了更好的替代品。
这时我们就可说“Microsoft Visual C++ 2005”这个基础开发环境库已经圆满的完成了自己的使命,即便不安装,也不会引起大规模的软件故障。
Reply Like 0 View the author


中文 

个人认为:依赖包有点像应用的中间件,为减少应用的体积、增进代码的重用做了贡献。但是依赖包的升级与修改带来了很大问题,造成应用出现的关联问题层出不穷。那么就产生了减少包依赖,增强独立性的想法。但是因此程序变的臃肿,代码的重用减少,又降低了代码的使用率。那就要思考一下依赖包是否需要,和应该具备怎样的特性。我认为,首先依赖包是需要的。因为它提升了效率和代码的使用率。但是依赖包的特点应该是:1、结构功能简单,2、通用性强,3、是经过千锤百炼的代码,可能产生的改动一定要少。符合了上述条件的才可以被采纳为依赖包。否则一定会带来许多负面的效应。