实验室中的开放源码

2018-12-12 作者: xuzhiping 浏览: 550 次

摘要: 科学和工程实验室长期以来一直依靠专用产品进行日常数据 分析工作。现在,许多实验室转而使用开放源码产品和开发 语言,以获得传统产品无法向他们提供的特殊技术优势。科 学家和工程师们习惯使用诸如 The MathWorks 的 MATLAB、Wolfram Rese....

科学和工程实验室长期以来一直依靠专用产品进行日常数据 分析工作。现在,许多实验室转而使用开放源码产品和开发 语言,以获得传统产品无法向他们提供的特殊技术优势。科 学家和工程师们习惯使用诸如 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 这样的商业软件包的接口。 正在忍受不合适软件的科 学和工程团队不必等待产品供应商解决其问题。

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

随机推荐

Copyright © 2014-2019 OSGeo中国中心 吉ICP备05002032号

Powered by TorCMS