china140106的个人博客分享 http://blog.sciencenet.cn/u/china140106

博文

自由软件在科研中的运用

已有 3496 次阅读 2016-5-19 14:22 |个人分类:杂谈|系统分类:观点评述

研究工具对于科学研究来说是非常重要的。例如在光速测定中,伽利略虽然提出了光速有限的思想,但由于没有合适的工具,无法验证其思想。而从罗默到迈克尔逊,随着测量工具的不断发展,促使光速的测定越来越精确,也使人们对光的本性有了更深入的认识。研究工具的发展也可以对理论成果进行修正。例如在迈克尔逊-莫雷实验中,利用光的干涉效应制作了一个极其精密的干涉仪,可以测量极其微小的长度差,并在此基础上,得出了光速不变的结论,从而促使爱因斯坦发表了著名的狭义相对论。同时这个原理也被用于引力波的测定,从而促成了引力波的发现。

随着信息时代的到来,数据的体积及形式都在迅速增加,在很多情况下,进行手工计算和管理已经不现实,必须借助于各式各样的软件来辅助科研。例如,操作系统的发明使人们可以更方便地协调各种硬件资源;数据库的发明使人们可以方便地管理和分析大量的数据;各种计算软件的出现方便人们利用各种算法对数据进行多种多样的分析。因此软件已成为当前各类科研活动中必不可少的一类工具,而由于科研活动的特殊性,自由软件在其中又具有更为重要的作用。

1 自由软件在科研中的作用

1.1 自由软件的由来

和硬件不同,软件的复制几乎没有成本。例如,制作一枚螺丝钉需要消耗一定的自然资源和人力资源,而要制作另一枚同样的螺丝钉则几乎需要消耗同样多的资源。但对于软件来说,情况迥异。虽然在制作第一套软件时需要消耗一定的资源,但复制第二套时则几乎不消耗资源,即软件的制作成本主要集中在第一套软件的制作过程中。因此,为从软件制作上获益,版权保护就显得极为重要。

在计算机发展的初期,软件很不成熟,程序员之间的软件交流几乎不涉及版权保护问题。但随着软件的发展,成熟的软件越来越多,应用越来越广,也吸引了很多人对其进行版权保护以获利。虽然获取商业利益无可厚非,但早期对过多的基础软件进行版权保护并不利于软件本身的发展。软件的制作主要决定于程序员的编程能力,而编程能力很大程度要依赖于程序员的创新能力。如果编程语言是免费的,则这种创新能力会很快地转化为软件产品,从而快速地促进软件的不断发展。但如果编程语言都被版权保护进行了限制,则由于额外成本的增加,则会对创新能力的转化产生不利的影响。

为改变这种状况,Richard Stallman在1983年发起了一个自由软件运动,即GNU Project,并在1985年建立了自由软件基金会以支持该项目。该项目致力于使计算机用户能够使用自由软件来自由地控制自己的计算机。在该项目中,自由软件被认为应该赋予用户自由运行、复制、传播、研究和修改软件的权力。和一般的私有版权(copyright)相对应,这种权利被命名为公有版权(copyleft)。在这里需要强调的是,虽然在英语里,自由和免费都一个单词(free),但免费软件不等于自由软件。免费软件只是可以免费使用,但如果不公开源代码或不允许自由复制和修改代码,则不是自由软件。

1.2 自由软件对科研的影响

科研是一种具有创新性的活动,也就意味着经常会遇到以前没有遇到过的问题。而在解决这些问题的时候,往往需要利用之前没有用到的办法,并制作之前没有用过的工具。对于私有软件来说,由于用户不能自由修改这个软件,当然无法在此基础上构建一个新的工具,而对于自由软件来说,则不存在这个问题。例如,对于SPSS统计软件来说,用户不可能画一个软件中没有的统计图,而对于R语言来说,这就不是一个问题。

这种自由在数据分析领域尤其重要。在数据分析领域中,各种新算法层出不穷,而商业软件更注重稳定性,往往无法及时更新算法程序,此时必须要求科研工作者自己能够根据算法原理编制算法程序。而在编制程序的过程,则往往需要自由软件的支持。同时这些由自由软件编写的算法程序,由于复制成本极低,才有可能得到快速传播,促进新算法的应用,并可以对其及时进行各种修正。例如,在CRAN和Bioconductor中,有很多共享的R语言包提供相关研究使用,其中有很多包在不断更新以修正各种错误。而这种情况很难在SAS这种商业软件中出现。

2 常用自由软件介绍

2.1 Linux

Richard Stallman发起的GNU Project,其目的是建立一个可以使用户自由控制自己的计算机的操作系统。为达到这个目的,GNU Project开发了很多软件来实现各种功能,但在其早期的发展中一直缺少最核心的一个部分。直到1991年Linus Torvalds开发了一个类Unix的操作系统核心,即Linux kernel(https://kernel.org),才解决这个问题。自由软件基金会称这个以linux kernel为基础的软件系统为GNU/Linux。

但Linux kernel作为一个操作系统核心,也可以结合其他来源的软件以构成多种多样的操作系统,即不同的Linux发行版。日常所称的的Linux系统即指的是这些不同的发行版。在DistroWatch网站(http://distrowatch.com/)上对当前比较活跃的基于Linux kernel或FreeBSD的开源操作系统进行了排名,其中绝大多数都是Linux发行版。

在当前各种Linux发行版中,Debian系统(http://www.debian.org/)具有非常重要的地位。该系统稳定性非常好,但对于新手来说使用难度较大,因此很多Linux发行版在Debian的基础上做了易用性的改进,其中最著名的就是Ubuntu系统(http://www.ubuntu.com)。Ubuntu系统自12.04版之后,其易用性和稳定性都得到了很大的提高,极大地促进了Linux的传播。在该系统的基础上,又出现了Kubuntu、Lubuntu、Mint等发行版。

此外,Red Hat Enterprise Linux(RHEL)是Linux世界里另一个非常重要的发行版。RHEL最大的特点的是,虽然其主要由免费的自由软件组成,但它却是一个商业软件。它证明了免费的自由软件是可以获利的,但并不是通过出售软件本身来获利,而是通过软件更新和技术支持来获利。但它毕竟主要是由自由软件来构成,因此在它的基础上,也有出现了一些各有特色的发行版,如Fedora、CentOS、Scientific Linux等。

除了以上两大类发行版之外,还有很多各有特色的Linux发行版。由于自由软件与生俱来的优势,理论上每个人都可以建立自已的Linux发行版。虽然Linux发行版很多,但目前在个人电脑领域占比仍然很少,不过在服务器领域却Linux发行版占有大部分市场,这可能是因为服务器市场更需要具有创新性的技术以不断提高系统的性能。

2.2 科研中其他常用自由软件

首先,当前科研活动中,数据量的增长越来越快,因此选择一个合适的数据库软件来管理数据是非常有必要的。在关系型数据库软件中最流行的当属MySQL(http://www.mysql.com)。由于其体积小、速度快、总体拥有成本低,因此常常和Linux、Apache和PHP一起用于搭建动态网站和服务器。这四个软件都属于自由软件,由于经常放在一起使用,因此软件之间的兼容性越来越强,经常被统一称为LAMP。由于MySQL在2008年被Sun收购,MySQL的开发者建立了一个MySQL的衍生版MariaDB。但在不断增长的数据中,已经不单纯是数据量的增长,很多情况下需要对不同结构的数据进行管理。为应对这种情况,NoSQL和MongoDB就应运而生。

第二,由于数据量的不断增长及数据结构的复杂化,数据分析时对算法提出了越来越高的要求。为了能够尽快应用最新的算法,则必然要求传播的成本要尽量的低,而自由软件正好符合这个要求。在数据分析领域,当前最流行的计算软件当属R语言。R语言不仅计算方便,而且其绘图能力也很强。当前其流行度在TIOBE编程语言排行榜(http://www.tiobe.com/tiobe_index)上已超过SAS。但R语言偏重于数值计算,对于符号运算则支持不足。为整合现有各种数学软件的优势,SageMath(http://www.sagemath.org)使用Python语言将现有的很多开源数学软件整合在一起,包括 NumPy、SciPy、matplotlib、Sympy、Maxima、GAP、FLINT、R等。到SageMath7.0为止,已经整合了90个软件,基本囊括了数学中的各个领域。

第三,对于科研来说,办公软件也是不可或缺。对于文本编辑来说,LaTeX(https://latex-project.org)标记语言由于能够提供统一模板,而在投稿系统中被大量使用。但对于画图和电子表格来说,LaTeX就不够用了。而LibreOffice(http://zh-cn.libreoffice.org)软件可以提供一个全功能的办公软件。虽然LibreOffice功能强大,但由于种种原因,当前其格式和MS Office的兼容性仍然不够好,因此在很多场合其应用受到了一定的限制。

以上本文对科研活动中常用的一些自由软件进行了简单介绍。总的来说,这些软件功能并不比商业软件差,但由于种种原因,当前国内大多数人对这些软件接触太少,因此当前还难以成为主流。


当前国际上自由软件的发展较快,而且近几年越来越受到大家的重视,但非常可惜的时,在这个环境里,很难看到国人的身影。其原因可能有以下几个方面。一是过去若干年的时间里,盗版windows泛滥,导致自由软件的土壤被破坏掉了。自由软件是相对于私有软件而言的,私有软件对自由软件来说,是一种压力,也是一种动力。私有软件的存在才会凸显自由软件的价值,而如果没有任何版权保护,则不存在私有软件,也就无所谓自由软件。二是当前科技导向过于重视理论成果,而轻视了产品制造,由此导致国内工科教育普遍下滑。而自由软件的发展对理论和实践两方面的创新能力都要求较高,但在当前这个大背景下,当然很难指望能制造出好的产品。三是国内经济发展水平仍然不够,对于大多数人来说,维持生活还是人生头等大事。而自由软件的发展显然需要一个更高的思想境界。
虽然由于种种原因,当前还很少有国人认真对待自由软件,但随着时代的进步,自由软件也有可能会在不久的将来激发国人更大的热情。



https://blog.sciencenet.cn/blog-722297-978351.html

上一篇:Foxit Reader 更新 Linux 版本
收藏 IP: 202.207.193.*| 热度|

1 梅志平

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-23 20:21

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部