2005年12月18日星期日

插件式编程

最近下载了一个软件,Babylon,很著名的翻译软件。

以前一直用金山词霸的。最近因为需要德语的翻译,金山词霸就做不到了,又懒得每次去找代理上线上翻译网站,所以找到了这款软件。这款软件好就好在,他的词库是按照插件的方式和主程序整合到一起,所以只要添加了词库,就等于多了一门语言。而如果想要改进软件本身的功能(如支持通配符,列出所有可查词汇,这在用户记不清词的准确拼写时很有用),只需要修改主程序即可。这样降低了程序模块之间的耦合度,也就增加了程序的灵活性。而且,Babylon 提供词库制作工具,使得用户们能够创造自己的词库,大大增加了软件的生命力。这也是拜开放的架构所赐。

写到这里,我想到了 Eclipse,同样也是一个插件式的 IDE。我本人不使用 Java,所以对 Eclipse 也不是很了解,不过从《程序员》我还是能看出,Eclipse 很成功,原因也是在于它先进的理念和开放的架构。似乎在这个时代,软件只有开放了才会有生命力。

我在想,其实一个计算机系统本身就是一个插件系统,操作系统就是主程序,而用户程序就是符合操作系统提供的接口的子程序。Windows 和 Linux 的不同在于,Windows 的主程序是封闭的,由 Microsoft 来负责维护,而 Linux 就连它的内核都是开放的。程度上的不同决定了软件本身的性质。

但是,正如我在第二段里面所说,“如果想要改进软件本身的功能,只需要修改主程序即可”。问题是,由谁来修改主程序呢?Babylon 可以由 Babylon Ltd. 来改进它,Linux 由谁来改进?Linus?Ecplise 呢?IBM?开源软件最大的特点在于它不是属于某一个人或某一个组织,它属于任何对它感兴趣的人们。那么,如果 10 个人对它感兴趣,那么软件前进的道路就有 10 条,从这点看,原本开源希望的将众人的力量合起来开发软件,反而分散了软件的开发者们,因为大家都没有一个领头羊。我在想,如果 Linux 从一开始就没有什么 Rad Hat,没有 Fedora,而是把这些公司里的人才们合到一块儿去开发 Linux,那么 Linux 还会是现在的样子吗?

我不反对开源的理念,但我觉得,群龙无首是不行的。

没有评论: