自由软件一定安全吗?再而,虽然程序员的经验告诉我们,改善软件的唯一途径就是不断“修改”软件,但这只能说明“修改软件的前提是知道源代码”,而不能推证出“知道源代码就一定能修改软件,并且一定修改得比原来的软件要好”的结论。 简单说,就是如何保证软件的缺陷可以被发现?并且在发现缺陷的前提下,一定可以做得更好? 当然利用网络,可以设想为数众多的高手可以共同关心一个具体软件的缺陷问题,大家齐手找毛病,这多少有点象“人工的并行处理”,这种“人工的并行处理”是与计算机并行处理完全不同的模式,甚至我想应该(理论上)高于当前的“计算机并行处理模式”。但是,并行理论能否解决“测试的可解性”问题,似乎仍未有定论。 测试一个软件的功能是否存在缺陷,目前来看,最有效的算法仍然是“穷举法”。而穷举法恰恰是一个NP方法,即不能保证“能行”的算法。 对软件安全的另一个难题是“安全”本身如何定义? 目前软件安全的处境类似波普尔的证伪说:从实证的角度,只要软件截止目前没有出现问题,就认为软件是安全的。 这个推证体系是实证的,而不是理性的。没有关于“安全性”的任何全称判断。 一个软件也许可以不认为有缺陷(这需要判定),但存在代码优化问题。但优化本身又成为难题之一:这就是如何确立软件优化的判据?或者问:是否存在普适的“优化”判定体系?对此,也许同样无法获得一致的见解。(之所以如此,是因为比特化将计算机科学牢牢地栓在了“实用科学”的土地上) 以上3个方面的难题,可以简略地说明自由软件与盖茨软件相比,处境并没有本质的改善。或者说,自由软件与盖茨软件在安全问题上,是同级的。 那么,支持自由软件的人,如果仅仅利用“自由”的辞藻,在这些问题上闪烁其辞的话,就无法得出自由软件比盖茨软件优越的结论。 但是,这里没有为盖茨软件辩护。自由软件,必须考察其存在的其他理由。这个“其他理由”,并不是来自安全的提升--即便自由软件比盖茨软件来得安全,也只能说明盖茨软件本身的商业模式,妨害了安全性能的改善,而不能证明自由软件在安全性方面一定优于盖茨软件。 自由软件的安全性是盖茨软件“送”来的机会,而不是自由软件内禀的特性。 需要从另外的角度审视自由软件存在的理由。这个理由来自网络的存在,来自纯粹的商业考虑,来自互联网对软件产业存在模式的彻底颠覆。这个问题将在另一篇文章里加以探讨。 上一篇:开放源代码怎么赚钱? 下一篇:OpenSource的末日? 更多相关文章
|
推荐文章
精彩文章
|