居然从上到下都看完了。我来补充几句,或者是我自己的理解吧,不对之处再在所难免,恳请指正(我的GPL)。
1) 关于中文“免费软件”这个翻译,这是一个诟病了。想必大家都知道英文原来叫做“Free software“.他的解释是“不受限制地自由使用、复制、研究、修改和分发的软件”,我觉得一个比较妥当的翻译应该是“自由软件”,大多数“Free software”是免费使用的,R是一个例子。所以说用中文"免费"这个词来讨论R和SAS是没有意义的。
2)关于稳健性而言(我采用前面胡江堂的说法)。质疑所有的开源软件缺乏稳健性是欠妥当的,我们也不用举很多老掉牙的例子。以R为例,但是“R is free software and comes with ABSOLUTELY NO WARRANTY.”这句话是必须的,应为他是GPL协议的一部分。举一个不是很恰当的例子,两个很健康的人,比如同卵双胞胎,他们一个人买了健康保险,记做A,一个人没有,而被贴了一个标签“本人随时暴露在生病风险中”,记做B。我们不能由此怀疑B的健康状况。
3)说到稳健性细节,我们拿同样的代码结构做同样的事情,R出错了,但是Matlab没有,SAS也没有,我就遇到好多这样的事情,于是我们说R缺乏稳健性。对R来说这是不公平的。怎么解释这一个现象呢,很简单,Matlab和SAS的工程师作了很多Error Catch的工作。虽然我不是计算机出身,但还是知道检查一个脚本语言的稳健性应该是检查内存溢出之类的。我们前面说的不过是编译环境的容错能力,不过我们不得不承认,R的gui界面比较简陋。这是绝大多数自由软件的通病。这对初学者而言确实比较重要。一个有趣的例子,有几十年统计编程普林斯顿的Chris Sims教授以前是Matlab的忠实用户,有一天他给MathWork写信,能不能将他现在Academic license用于其他用途,人家没理他,老头子生气了,就转向了R,而且写了很多很好很高效的函数。举这个例子无非是想说我们担心R的稳定性是杞人忧天,与其如此,还不如多花点时间钻研一下数据结构。
4)对于大数据处理能力,这个完全是硬件决定的。和R没有任何关系,就像SAS9.2声称的一样。我可以举一个例子,在Berkeley的Yu, Bin教授讲,他们作气象的预报,气象卫星数据是以T为单位的,而且以几何级数增长,他们的主要工具是R。我们仔细看R手册会发现,对于Window操作系统,现在的R有一定的内存限制,这个是由两个原因决定的,部分R函数是用32位的Fortran写的。还有在CRAN的Windows二进制R包的编译器是用MinGW编译的,而64位的MinGW还不够完善。如果你能够自己编译源码,这些问题完全是可以避免的。
4)并行计算。任何一个脚本语言都有并行计算的能力。R作并行计算的需要一个消息传递机制,现在流行的有MPI。但是MPI不是R的一部分,要做到并行计算,就需要将这两个结合起来。Matlab有自己的Parallel Computing Toolbox。R也有SNOW。我们所做的就是将这两件东西组合起来。2009年,著名的萨博汽车(SAAB)要倒闭了,因为通用汽车要倒闭了。于是,愚人节那天有一家报纸娱乐大家说,如果有一天宜家(IKEA)把萨博收购了,一定会很好玩。而且好多人的回应是 "A lot of fun!"
4)怎么选择?坦率的讲,如果我是老师,我给本科生推荐,我依然推荐SAS, Matlab。原因很简单,他们要去找工作,这也是很多高校这么做的。但是对于一个研究者而言,我推荐R。没有金刚钻,不揽瓷器活。其实对价格而言,大家好像对商业软件的漫天要价已经习以为常了,毕竟科研就是一个很砸钱的活。而且我觉得我们现在宣传R以免费作为侧重点来宣传不是长远之计。
5)最后,举个例子我来说一下我为什么喜欢R。去年秋天,Matlab的首席工程师来欧洲,我去参加他们一个5-6人的小型研讨会,他问我:你对Matlab有什么不满意的,我就抱怨说你们那个帮助太差劲了,我要看个简单回归函数的用法,好家伙,你先给我来3-4页的Introduction. 你是一个卖软件的,教我怎么用统计方法,这不是。。。于是他们在2008b版本改进了帮助,添加了一个缩略版的帮助。可是依然不是我想要的function-prameter-usage-example类型。顺便说一句,MathWork是一个小公司,全球包括销售不到300人,你知道R有多少contributors吗?还有一件商业软件让我很伤心的事情。最近在做模拟,我的程序都是用Matlab2008b调试的。Cluster的Matlab是2006b。于是出现了严重的函数不兼容问题。其实这个早不是商业软件的秘密了。于是系里只好再花钱更新软件。Matlab SAS,你们有福了。(我是不是像个愤青?)
6)还有纠正一句胡江堂的话,“你可以proc setinit;run;一下,查看机器装了多少SAS产品,大多是一般人一辈子也用不到的。在安装时大伙可以只勾选几个常用的模块。”这句话是有问题的。不是我想选几个模块就安装几个模块,而是我买了几个模块才能安装几个模块。
1) 关于中文“免费软件”这个翻译,这是一个诟病了。想必大家都知道英文原来叫做“Free software“.他的解释是“不受限制地自由使用、复制、研究、修改和分发的软件”,我觉得一个比较妥当的翻译应该是“自由软件”,大多数“Free software”是免费使用的,R是一个例子。所以说用中文"免费"这个词来讨论R和SAS是没有意义的。
2)关于稳健性而言(我采用前面胡江堂的说法)。质疑所有的开源软件缺乏稳健性是欠妥当的,我们也不用举很多老掉牙的例子。以R为例,但是“R is free software and comes with ABSOLUTELY NO WARRANTY.”这句话是必须的,应为他是GPL协议的一部分。举一个不是很恰当的例子,两个很健康的人,比如同卵双胞胎,他们一个人买了健康保险,记做A,一个人没有,而被贴了一个标签“本人随时暴露在生病风险中”,记做B。我们不能由此怀疑B的健康状况。
3)说到稳健性细节,我们拿同样的代码结构做同样的事情,R出错了,但是Matlab没有,SAS也没有,我就遇到好多这样的事情,于是我们说R缺乏稳健性。对R来说这是不公平的。怎么解释这一个现象呢,很简单,Matlab和SAS的工程师作了很多Error Catch的工作。虽然我不是计算机出身,但还是知道检查一个脚本语言的稳健性应该是检查内存溢出之类的。我们前面说的不过是编译环境的容错能力,不过我们不得不承认,R的gui界面比较简陋。这是绝大多数自由软件的通病。这对初学者而言确实比较重要。一个有趣的例子,有几十年统计编程普林斯顿的Chris Sims教授以前是Matlab的忠实用户,有一天他给MathWork写信,能不能将他现在Academic license用于其他用途,人家没理他,老头子生气了,就转向了R,而且写了很多很好很高效的函数。举这个例子无非是想说我们担心R的稳定性是杞人忧天,与其如此,还不如多花点时间钻研一下数据结构。
4)对于大数据处理能力,这个完全是硬件决定的。和R没有任何关系,就像SAS9.2声称的一样。我可以举一个例子,在Berkeley的Yu, Bin教授讲,他们作气象的预报,气象卫星数据是以T为单位的,而且以几何级数增长,他们的主要工具是R。我们仔细看R手册会发现,对于Window操作系统,现在的R有一定的内存限制,这个是由两个原因决定的,部分R函数是用32位的Fortran写的。还有在CRAN的Windows二进制R包的编译器是用MinGW编译的,而64位的MinGW还不够完善。如果你能够自己编译源码,这些问题完全是可以避免的。
4)并行计算。任何一个脚本语言都有并行计算的能力。R作并行计算的需要一个消息传递机制,现在流行的有MPI。但是MPI不是R的一部分,要做到并行计算,就需要将这两个结合起来。Matlab有自己的Parallel Computing Toolbox。R也有SNOW。我们所做的就是将这两件东西组合起来。2009年,著名的萨博汽车(SAAB)要倒闭了,因为通用汽车要倒闭了。于是,愚人节那天有一家报纸娱乐大家说,如果有一天宜家(IKEA)把萨博收购了,一定会很好玩。而且好多人的回应是 "A lot of fun!"
4)怎么选择?坦率的讲,如果我是老师,我给本科生推荐,我依然推荐SAS, Matlab。原因很简单,他们要去找工作,这也是很多高校这么做的。但是对于一个研究者而言,我推荐R。没有金刚钻,不揽瓷器活。其实对价格而言,大家好像对商业软件的漫天要价已经习以为常了,毕竟科研就是一个很砸钱的活。而且我觉得我们现在宣传R以免费作为侧重点来宣传不是长远之计。
5)最后,举个例子我来说一下我为什么喜欢R。去年秋天,Matlab的首席工程师来欧洲,我去参加他们一个5-6人的小型研讨会,他问我:你对Matlab有什么不满意的,我就抱怨说你们那个帮助太差劲了,我要看个简单回归函数的用法,好家伙,你先给我来3-4页的Introduction. 你是一个卖软件的,教我怎么用统计方法,这不是。。。于是他们在2008b版本改进了帮助,添加了一个缩略版的帮助。可是依然不是我想要的function-prameter-usage-example类型。顺便说一句,MathWork是一个小公司,全球包括销售不到300人,你知道R有多少contributors吗?还有一件商业软件让我很伤心的事情。最近在做模拟,我的程序都是用Matlab2008b调试的。Cluster的Matlab是2006b。于是出现了严重的函数不兼容问题。其实这个早不是商业软件的秘密了。于是系里只好再花钱更新软件。Matlab SAS,你们有福了。(我是不是像个愤青?)
6)还有纠正一句胡江堂的话,“你可以proc setinit;run;一下,查看机器装了多少SAS产品,大多是一般人一辈子也用不到的。在安装时大伙可以只勾选几个常用的模块。”这句话是有问题的。不是我想选几个模块就安装几个模块,而是我买了几个模块才能安装几个模块。