工作的原因,我们每年都做很多R语言的培训和咨询,也使用R开发我们自己的产品,看到这个话题,说说我的看法。
商业软件:
说买商业软件放心,出问题他们负责,这个并没有依据。你看看Excel的用户条款里有没有一句“你承认所有的软件都有缺陷”?你开始用的时候就接受可能出问题的声明并放弃追责的权利了。而且,如果真要负责的话,就凭WINDOWS95的蓝屏,估计盖茨早就倾家荡产了:) SAS的用户条款我没有看过,不过“所有的软件都有缺陷”是肯定的,让他们为所有BUG买单也不现实。如果有研究过SAS条款的同鞋可以来说说?
其次,商业软件在质量上未必比开源的可靠。这里只是说“未必”,如果能算平均数的话,商业软件的平均质量可能会比开源的高。这也是因为所有的人都可以“制造”开源软件,自然会拉低总体的水平。但是高质量的开源软件说“常见”已经是低估了。Linux, MySQL, Java都是很好的例子。而做软件的同鞋们,特别是用Java的,自然是对开源再熟悉不过了。伦敦证交所从去年起已经迁移到开源的平台上,其他人还担心什么?
担忧:
关于R的商业应用,我的理解,业界的使用最主要的障碍首先是“不熟悉”。就算你说的再好,老板恐怕也不会马上答应使用一个从没听说过的东西吧?如果R语言能像SAS,SPSS这样做专业的市场攻势的话,相信局面早就超过今天几条马路了。
其次,就我了解到的,对R成为阻碍的是R语言(目前)本身的固有缺陷,比如,大数据的处理能力,性能,多线程,多核的应用,第三方包的可靠性等。这些可以是“硬伤”,其中一些已经有解决方案。
再其次,是企业机构已有的技术积累对应用新技术产生阻碍。“技术积累”包括人材,知识,程序(procedures, not programs)等。知识包括文档/程序等。当一个企业已经成功使用SAS十年,有很多实验设计都是基于SAS的实现,所有人都有过硬的SAS技巧,几百个SAS程序都跑得很好,那么使用新技术的成本就会非常高,除非有完全的必要性,是必然不会换的。
要知道在欧洲和美国,R的应用已经是遍地开花了。举例来说,就连最保守的制药业,包括美国FDA,也已经在使用R。比如Novartis, GSK, Roche, Pfizer,这些都是数一数二的制药巨头。但是不要误解,我说的“使用R”并不表示“只使用R”,因为SAS在制药业依然还是很强大的。再比如金融业和保险,在伦敦举行的R用户组,每次都会有金融业的用户参加,R在投资组合上的应用,R和Excel的结合使用都一度是热门话题(也许现在还是);保险业的巨人劳埃德更是把Mango做为为其提供R语言支持服务的preferred partner。同时,这两年也逐渐有企业客户要求Mango帮助他们把已有的SAS或S+程序改写成R的。这就体现了趋势。国内相比之下在这方面的发展还稍的滞后,但从每年R会的情况来看,它的用户群的发展还是很迅速的。这个cos有很大功劳:)
前途:
R是个很有前途的工具。在国外,R在学校和研究机构的普及对目前R的繁荣发展肯定是有巨大的贡献。因为学生总有一天会要工作,而研究机构多数也会与公司有紧密合作。其中一些学生毕业后,可能会被公司已有的环境同化而放弃R,而另一些则有可能促使环境发生改变。两年前GSK有位老兄曾在伦敦的R用户组上做过一个“How I am selling R at GSK”的演讲,就是一个这样的例子。
R本身有很强大的功能,在很多方面并不逊于其它的商业软件,甚至还更强。因此,在很多情景下,它可以取代其它的软件。而且,它不仅强于统计,也强在它同时也是一门可以作为“普通用途(generic use)”的计算机语言。比如,用R处理文本/XML/HTML/HTTP请求都没问题,甚至已经有人开发出了用R作为WEB服务器的软件RApache。这就证明了R的用途的广泛性与无限可能。又由于R语言是开源的,开发者或公司都可以,也更愿意基于R来开发出更有价值的产品,这就表明了R极好的延伸性,在这点上,其他的商业软件的竞争对手只能是望洋兴叹了。当有成千上万的用户使用R,那它的可靠性也会得到更多的验证,最终的结果是,越多的人使用,它就变得越可靠。
随着R越来越多地进入人们的视野,它的用户群发展会越来越快。更多R语言的成功应用也都会逐渐打消人们的疑虑,Mango和Revo都可以提供案例。
R在国内学校的的教学和使用也是越来越多,除了大家都知道的人大,华师大,上海财大,还有不少大家可能没有想到过的学校。最近把R语言列为必须的招聘广告也逐渐多起来,微博上有传播,在各大招聘网站也可以搜到。所以,没有理由为R的前途有什么担心。你唯一需要担心的,可能是当机会来临时,你却还没准备好。
但是,对在学习R的学生来说,必须要明白一件事:R语言只是一门工具,会使用R可能会让你更强大,但不应因会用R而产生任何优越感。让你值得骄傲的,应该是应用工具解决问题的能力,而非工具本身。很多人在学校里用R,工作后会由于环境要求会转向其它工具,而逐渐忘记R;他们会积累其它工具的经验,一样可以为自己创造价值。我知道有些人现在还在用Fortran和Cobol,都是很老的计算机语言,他们的工资比用.Net和Java的还高很多。在学校里,掌握至少两个常用的工具是很必要的,但最重要的还是用工具解决问题的能力。
最后,建议楼主参考一下上面提到的GSK的例子,Andy Nicholls的幻灯片在这里可以找到:http://londonr.org/Agenda.html 另外,如果你能用R做出一些好的例子的话,展示给老板和同事们看,逐渐让他们熟悉R,相信会有帮助的。
暂时想到这么多,有点长,望见谅,欢迎拍砖!