从软件开发者的角度看开源软件


如下观点纯属我的观点,且基本集中C/C++相关的开源软件,仅供参考:
简而言之,从软件开发者的角度来看,从开源软件中汲取的更多应该是这些软件的开发者的智慧。
1. 软件体系结构
   OpenOffice、Eclipse、NetBeans等大规模软件,设计了很是精巧的、易扩展/集成的体系结构,凝聚了大量优秀架构师的智慧。
2. 先进的软件技术/框架
   Mozilla实现的界面描述语言&框架XUL、Chrome提供的高效JavaScript引擎V八、Apache的XML引擎Xerces、QEMU的动态指令转换引擎、ICE的网络通讯引擎、Pin的指令注入技术,不胜枚举。
3. 优秀的库
   Boost、Loki、blitz++、ACE ...
4. 具体的算法实现等
   这类开源软件的应用实在是不胜枚举,下面举一例来讲明:
   有一同窗在用C#写一程序的时候(赚钱养家不易呀),遇到一bug,我帮忙debug了一下下,发现是编码转换的问题,经过调用Win32 API MultiByteToWideChar解决了这一问题。后面问题又来了,同窗说有些机器上用户的权限设置致使C#程序不能调用Win32 API!(晕,全用C/C++不就得了吗?!)他想本身实现MultiByteToWideChar,我迅速在大脑里进行了深度优先搜索...嗯!ReactOS里(Windows的开源实现)必定有MultiByteToWideChar的实现代码。调出SourceInsight,找到ReactOS源码中的MultiByteToWideChar,提取出代码交给同窗,done!看看MultiByteToWideChar的代码实现不复杂,如何转换成C#就不劳俺大驾:)
  此外,还有7zip的压缩算法...