实验室里的开放源码

开放源码在科学计算方面的应用十分广泛,科研工作者往往更喜欢使用具有免费许可以及良好可编程特性的开放源码项目,而不是具有严格知识产权保护措施的商业软件。当然,轻松便捷的集成性以及友善的社区支持等各方面优势,也是促使科学计算向开源领域靠拢的重要因素。

Python语言的科学计算库,最完善的要算SciPy,SciPy旨在实现MATLAB可以完成的所有功能,并且简化与其它应用的集成,同时保持免费自由的许可协议提供给用户调用。用于二维绘图方面的Python函数库还有Matplotlib,它利用Python的数值计算模块Numeric及Numarray帮助用户编程实现高质量的二维图形。同时Matplotlib可以很好的支持TeX 排版命令,用以显示图形中嵌入的数学公式,这一点带给使用Tex进行文章写作的用户很大便利。Python语言生来具有优良的开源传统,其应用也日趋广泛,在浏览Google帮助中心和Job Opportunities页面时,或许会注意到,列出分类信息的业务逻辑会交由static.py和topic.py进行处理,也就是说部分代码是用Python语言完成的。据说Google爬虫程序最初也使用Python编写,如果想一探究竟,可以通过爬虫网站抓取记录进一步分析。

如果习惯使用C++语言,标准库STL(Standard Template Library)和应用广泛的Boost库同样也附带有数学计算的函数。但更多第三方科学计算库赋予了C++卓越的科学计算功能。Ricepig同学推荐的Blitz++库是一个高效的数值计算函数库,其目的是利用C++的模板技术实现同时具有C++的便捷语法和Fortran语言高效执行的数值计算环境。类似的开源项目还有不少,用于处理并行环境下的高性能计算的C++库FreePOOMA、提供各种矩阵运算和线性代数计算的高性能泛型组件库MTL(Matrix Template Library)、源自GNU包含1000多个函数的强大C/C++数值计算库GSL(GNU Scientific Library)、以及应用于计算几何方面的C++库CGAL(Computational Geometry Algorithms Library)和CGAL的Python版本函数库CGAL-PYTHON,无疑都带给有计算需求的用户一笔巨大财富。

有了这些科学计算函数库的帮助,编写与数学计算相关的程序将不再是那么令人头疼的事情,大量现成的优秀算法都可以在函数库中得以参照借鉴。我们所要做的,只是摆脱商业软件条条框框的束缚,善于使用这些天赐利器,得心应手的去打造自己的应用。

转载请注明出处:工作与兴趣记录本 » 实验室里的开放源码

相关文章