实验室中的开放源码


发布日期 : 2013-09-24 05:20:00 UTC

访问量: 249 次浏览

科学和工程实验室长期以来一直依靠专用产品进行日常数据 分析工作。现在,许多实验室转而使用开放源码产品和开发 语言,以获得传统产品无法向他们提供的特殊技术优势。科 学家和工程师们习惯使用诸如 The MathWorks 的 MATLAB、 Wolfram Research 的 Mathematica 或 SAS Institute 的 SAS/IML 之类的专用产品来收集、处理和报告研究数据。尽管 从软件角度上,将这些产品集中用于一个更大的“商业智能” 或“分析学”种类是很诱人的,但它们各自专注地服务于专 门的科学实验室市场 — 并拥有非常高程度的客户满意度。

这些应用程序在财务上和技术上都已经取得了成功。例如, MathWorks 仍在大量雇佣程序员,而 Mathematica在其符号 计算器的每个版本中都添加大量有趣的增强功能,包括“以 文档为中心的接口”及其“算法知识库”。 但是,这些应用 程序遇到了新一代的竞争对手。尤其是,在许多领域中,对开 放源码软件的信任正稳步提高。本文说明了为什么会发生这 种情况,及其结果对您自己的工作有什么影响。

开放源码的优势

科学家及其内部开发人员转向开放源码软件的主要原因如下:

  • 免费许可
  • 简易的许可证费用管理
  • 更佳的大规模可编程性
  • 更轻松的集成
  • 更佳的性能
  • 开发便利
  • 知识产权
  • 更佳的支持

“免费”产品有着显而易见的吸引力 — 但这种吸引力可能不象 表面上看起来那样重要。相当多的用户说他们可以承受诸如 IML 和 MATLAB 之类产品的价格;这些软件工作良好,他们乐意支付 许可证费用,这种费用只占软件提供的价值的很小一部分。一些 用户甚至声称对软件价格不关心,因为他们将这个金额打入了研 究经费。 但是,免费许可提供了灵活性。研究人员可能会访问同 事的实验室并希望在主机硬件上迅速完成一个作业。当软件是基于 开放源码时,只要进行下载即可。即使专用产品的文档有时 也是受限的;关于 Research Systems Software 的交互式数据语 言(Interactive Data Language,IDL),Anansi Spaceworks 的 CTO Terry Hancock 说:“我得到完整的 API 副本都有困难。” 但是,使用开放源码,不必安排采购订单、寻求授权,否则多少要和 相关的财务上的官僚机构打交道。用户欣赏这一点。有些管理员会 告诉您,他们用来配置和维护笨拙的专用许可证管理器的成本比许 可证费用本身更高。 对于学生,免费软件的门槛也很适中。学生 当然述说他们更愿意使用不花费自己任何费用的软件。另一方面, 供应商通常对学生提供折扣,而且采购价格确实挡住了下一批预期 用户的观点很难证实。

可编程性

众所周知的是商业产品能够非常方便地进行常用数据操作,因此 它们能获得成功。它们可以轻松地存储来自仪器的数据、使数据 可浏览、对它排序、为它绘图以及将它包含到报表中。此类操作的 准则是,易于掌握并允许忙于负责其自己的数据处理的科学家将 精力集中于科学而不是计算技术。 但是,同样是这些产品,作为 计算对象存在一些缺陷。它们的基础语言不能完全支持更新的、 具有更强表达能力的语法(包括面向对象编程和函数型编程)。 尽管这些工具适合于迅速地合作完成重要的计算,但当大型团队 使用它们从事长期项目时,它们却变得很笨拙。在许多实验室中, 难以实现代码重用,因此剪切和粘贴的工作量很大。 当然,团队 协作始终是个挑战。开放源码能够做得更好吗? 在许多情况下,可以。例如,位于奥尔良的 Centre de Biophysique Moleculaire 的高级研究员 Konrad Hinsen认为:MATLAB“没有超 出函数级别的结构化代码(例如,没有模块),而且根本就没有可 定义的数据结构。不可能构建抽象……Matlab 是 Fortran的交互 式等价物:一切都是矩阵”。 象 Python 或 Ruby 这样的开放源 码开发语言,使用内置面向对象和模块封装弥补了这种数据结构方 面的缺乏。

William Kleb 是美国国家航空和航天局兰利研究中心(NASA Langley Research Center)的计算方法开发领导。可重用性对他 特别重要。他是一位专门研究“高热”(大于 5马赫)飞行的航空 工程师,几年前,他就开始仔细地研究使用计算机的更佳方法。 Kleb说:“我们已经厌倦了不断地剪贴代码,因为它已经变得很 脆弱了。我们还开始认识到,作为团队从事单段软件开发时,我们 的团队显得很笨拙。因此,我们转向了软件工程/开发社区,以寻 求最佳实践。” 结果如何?Kleb 说:“现在,我们正在使用Ruby 来创建用来支持一些我们的 XP(极端编程)实践(如自动化接受测 试和单元测试)的定制工具。我们还设法为 Ruby 强大的文档编制 工具 Rdoc编写了 Fortran 95 接口,以提供自动化 API 文档编制。 我们还将 Ruby 用于 Fortran代码生成、条件编译,并将它用作将 各种代码元素合并到有关各种学科的黏合剂。我们正在向着用 Ruby 封装几乎所有的 Fortran 事务的目标前进。” 这些区别很 重要。即使对于并无软件背景的科学家,可编程性也很重要。每个 使用工程工具箱的开发人员都会进行抽象;但唯一的问题是工具箱 对这种操作的支持好到什么程度。此外, 有些商业产品(包括 Mathematica)以拥有良好设计的语言而自豪。 但是,总的来说,开放源码语言,包括象 Sather、R 和 J这样晦涩 的语言,都强调了进行长期维护和重用不可或缺的抽象表达能力。

DomainFinder 应用程序 —一个用于确定和刻画蛋白质中的动 态域的程序在开放源码中,至少有两种显而易见的用于解决科 学问题的不同途径。象 Octave 这样的项目打算在替代 MATLAB时, 大大减少其功能。它们的全部功能都集中于科学数据分析方面。 有几种免费软件包甚至更为专业化:例如,图象压缩和分析工具 (Image Reduction and Analysis Facility (IRAF))在天文学 方面被广泛使用,象人类学、高能物理和基因学这些学科也都有 类似的应用程序。这些应用程序往往有宝贵的预制例程库,但正 如康奈尔大学的 Joe Harrington描述 IRAF 特征时所言,它们 通常都是“糟糕的基础语言”。 其它项目开始使用通用语言, 包括 Perl、Java 和Python,并基于这些语言构建了“垂直的” 工具箱。在这些项目中,SciPy 发展特别快(请参阅 参考资料), 其实际成功的记录在不断上升。SciPy是一个基于 Python 的项目, 它旨在再现 MATLAB 的所有功能,优化其性能并简化与其它软件的 集成,同时仍保持完全免费以及至少和 MATLAB一样易于使用。 在 SciPy 兴趣小组的上届物理学会的六十名与会者中,有来自以 下机构的代表:Cal Tech、国家生物医学计算资金(National Biomedical Computational Resource)、位于劳伦斯利弗莫尔 (Lawrence Livermore)和别处的国家实验室、Lockheed-Martin、 贝勒医科大学(Baylor College of Medicine)、太空望远镜科 学研究院(Space Telescope Science Institute)以及斯坦福线 性加速器中心(Stanford Linear Accelerator Center)。集成了 丰富的专用模块集的完全通用的编程能力,是这些与会者希望获 得的理想产品。

容易的接口

从更大的方面讲,可编程性不仅与开发相关。它也影响天平的 另一端 — 应用程序中的个别语句或命令的级别。商业软件的弱 点之一就是它抵制与其它系统的集成。尽管所有商业产品文档中 记载有到“外来功能”的接口,包括网络数据流入、仪器设备驱 动程序等,但这些接口很难使用。相反,众所周知,开放源码语 言乐于将其自身与其它部分组合到一起。程序员为诸如 Python、 Tcl 和 Perl 之类的通用语言编写了数以千计的扩展。对于许多 组织而言,这是至关重要的。但无论组织如何喜欢商业产品的外 观或库,他们都肯定无法承担将专用外部系统结合到“与世隔绝 的”软件包的高昂代价。开发人员发现用更容易集成的开放源码 工具箱更好。 关于可编程性的最后一个问题是性能;许多研究人 员会告诉您,当对专用软件编制完脚本时,它的执行很糟糕。尽 管特定操作得到了精心的优化,但通用语言特性通常还是很慢。 即使是象 Perl这样的“胶水”或“脚本编制”语言长期以来也以 速度慢而出名,最新发行版中将更强的算法表示和速度优化组合 起来,产生了强大的优势。

更易于调试

迄今为止,关于开放源码的讨论还停留在开放源码软件的次要特 征上。对于一些开发人员而言,开放本身是很重要的特性。 Tom Silva 是从事航天飞机(Space Shuttle)和其它航天项目 研究有丰富经验的顾问。他简单而又令人信服地说:“如果我有 源代码,就可以找出问题。我可以添加使我的生活更轻松的特性。 我可以跟踪代码以理解它 实际上是如何工作的,而不是了解如何 对它编制文档。” 与此相关的是:人们日渐关注依赖商业软件的 科学适用性。通过使用专用库取得一定的结果意味着什么?

当发现或结论依赖于一个由第三方作为商业机密来掌握其细节的 黑箱时,学者该如何记载这个发现或结论呢?

当然,开放源码不受这种负担的困扰。原则上,可以精确地 指定关于开放源码程序的 任何事情。它不隐藏任何机密。 一些研究人员喜欢开放源码的最后一个原因是更强有力的支持。 尽管商业公司雇佣了专业支持人员,但几种开放源码技术可以 使用“基于社区”的在线论坛构成强有力的竞争。

结束语

Harrington“热切地期待着有一天可以扔掉我们使用的那些 高价而又低能的语言”,并转向使用开放源码备选方案,并且 越来越多的研究人员抱有相同态度。但还不止这些。尽管针对 科学家和工程师的专用产品提供了大量价值,但它们也带来极 高的代价 —不仅包括采购价格,而且包括不灵活性、惯有的 低性能和困难的开发所带来的代价。许多用户已经转向开放 源码。结果是,他们立即改进了自己的工作。在这个大趋势中, 存在着几个有趣的局部变化。戏剧性事件席卷了整个生物信息 市场,在那里,贴着高价标签的由风险资本提供资金的产品原 本很常见,但现在构建在 Perl上的免费软件包得到了相当程 度的接受和重视,用诸如 Java、Tcl 和 Python 之类的其它 语言构建的软件包也是如此,但受关注程度比用 Perl构建的 略低些。 在其它学科领域,似乎是那些将新旧技术组合起来 的开发人员取得了最快的进步。Kleb 的小组在基于 Ruby 的 软件包中封装了旧Fortran。有几个组正在使用 Tcl 来改进象 MATLAB 这样的商业软件包的接口。 正在忍受不合适软件的科 学和工程团队不必等待产品供应商解决其问题。

许多项目正在迅速开发各种可以免费使用的解决方案。即使没 有这些方案,具有复制专用价值的元素经验的开放源码开发人 员也正在成倍增加。目前正在完成一些最佳的编码,将使免费 软件和商业软件结合起来,以实现超出任何一方单独能力范围 的成果。