开源软件:代码复用与开发的新范式
1. 软件行业现状与代码复用困境
在当今的软件行业中,存在着诸多问题,导致大量的时间、资金和人力技能被浪费。许多编程机构存在着严重的“非我发明症候群”,对代码复用持有矛盾态度。一方面,为了赶进度,他们会向程序员推行那些虽大力营销但并不完善的供应商组件;另一方面,却拒绝复用程序员自己经过测试的代码。这就导致程序员们不断产出大量临时、重复的软件,即便他们明知这些结果可能是垃圾代码,也只能无奈地处理自己负责的部分。
在这样的文化环境下,有一种类似代码复用的教条出现:一旦为代码付了钱,就绝不能丢弃,即便所有人都知道重新编写会更好,也只能不断打补丁、修修补补。随着时间的推移,这种文化下产生的产品会变得越来越臃肿、漏洞百出,即便每个参与者都在尽力做好工作。
2. 透明度:代码复用的关键
代码复用的诸多问题,根源往往在于缺乏透明度。对于一个具有复杂 API 的软件,如果无法深入了解其内部,就无法对其进行修复,甚至不能正确使用。文档在实际应用和理论上都存在不足,无法传达代码所蕴含的所有细微差别。
以 Unix 程序员的经验为例,源代码具有长久的价值,而目标代码则不然。硬件平台、支持库等服务组件以及操作系统的 API 都在不断变化,但不透明的二进制可执行文件无法适应这些变化。它们很脆弱,难以进行可靠的向前移植,还需要越来越厚且易出错的模拟代码层来支持。因此,即使没有改变软件的意图和需求,为了在新环境中运行软件,也需要源代码。
透明度的重要性以及代码遗留问题,都表明我们应该要求复用的代码是可检查和修改的。不过,这还不是对“开源”的完整论证,因为“开源”的含义比仅仅要求代码透明和可见更为丰富。
超级会员免费看
订阅专栏 解锁全文
277

被折叠的 条评论
为什么被折叠?



