下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
论坛 >编程语言 >R是最值得学习的编程语言

R是最值得学习的编程语言

隔壁家的老王发布于 2016-02-18 15:49查看:654回复:3

1我的编程背景


本人程序员、架构师,从编程入门到今天,一直深信着Java是改变世界的语言,Java已经做到了,而且一直很辉煌。但当Java的世界越来越大,变得无所不能的时候,反而不够专业,给了其他语言发展的机会。


本次要比较要5种编程语言(NODE,LUA,Python,Ruby,R),这些都是非常优秀的,在特定领域发展壮大的语言。


我已使用Java语言 11年,R语言 3年,Node 1年,对于本次问题 “哪个语言在2014年的应用前景会更好?”,我选择R语言。


2为什么我会选择R?


我会从下面的几个方面,来说明我选择R的原因。


R的基因

R的发展

R的社区和资源

R的哲学

R的使用者

R的语法

R的思维模式

R解决的问题

R的不足


1) R的基因


R是统计学家发明的语言,天生具有统计的基因。


从我开始学习R语言,我就开始了知识的跨界思考。统计基于概率论,概率论又基于数学,用计算机的方式编程,解决某个领域的实际问题。简单一算,4个学科知识的交集,决定着我们解决问题的能力。统计的基因,让R语言与众不同!


2)R的发展


R一直在小众领域成长着,最早也只有统计学家在用,主要用R来代替SAS做统计计算。时代在进步,随着大数据的爆发,R终于在这一波浪潮中,被工业界所发现。然后,有越来越多的工程背景的人加入到这个圈子,对R计算引擎,R的性能,R的各种程序包进行改进和升级,让R获得了新生。


我们现在用到的R语言软件,已经越来越接近工业软件的标准了。由工程师推动的R的发展速度,远远地超过了由统计学家推动的步伐。随着人们对数据分析要求的进一步增加,R会以更快的脚步继续发展,将成为免费的、开源的、数据分析软件的代名词。


3) R的社区和资源


R的发展,离不开R的社区支持。当然,我不得不承认R的官方社区,从Web页上看起来太简陋了,稍微调整一下CSS样式表,都会比现在好看很多。也许这种简单、无修饰也是统计学家的基因吧。


在R的社区中,我们可以下载到R语言软件,R的第三方软件包,和R的其他支持软件。可以找到开发者论坛,R-Journal列表,软件包列表,R语言图书列表,R用户组等的信息,同其他语言的社区资源一样丰富。


R是自由软件,开发者可以开发自己的软件包,封装自己的功能,然后在CRAN上面发布。截止到2014年2月,共有5236个R包在CRAN上面发布。


可能很多人会说只有5236个包,数量太少了。这是因为CRAN是需要提交申请的,R语言小组审核,检查后再会发布的出来。而且审核非常严格的,高质量是发布一个新的R包基本要求。由于CRAN过于严格的审查,让很多的开发者选择在RForge上发布,还有些R包是基于Github发布的,我也在github上面发布了自己的R包:https://github.com/bsspirit/chinaWeather。


  • R官方地址:http://www.r-project.org/

  • R开发者论坛:http://r.789695.n4.nabble.com/

  • CRAN:http://cran.rstudio.com/

  • RForge:https://r-forge.r-project.org/


4)R的哲学


每种语言都有自己的设计理念和哲学,而我体会的R的哲学,就是“静下心做事情”。


R不需要很长的代码,R也不需要设计模式。一个函数调用,传几个参数,就能实现一个复杂的统计模型。我们需要思考,用什么模型,传什么参数,而不是怎么进行程序设计。


我们可能会用R实现 “从一个数学公式,变成一个统计模型” 的过程,我们也可能会考虑 “如何让一个分类器结果更准确”,但我们不会思考 “时间复杂度是多少,空间复杂度是多少”。


R的哲学,可以让你把数学和统计学的知识,变成计算模型,这也是R的基因所决定的。


5)R的使用者


R语言早期主要是学术界统计学家在用,在各种不同的领域,包括统计分析,应用数学,计量经济,金融分析,财经分析,人文科学,数据挖掘,人工智能,生物信息学,生物制药,全球地理科学,数据可视化等等。


近些年来,由互联网引发的大数据革命,才让工业界的人,开始认识R,加入R。当越来越多的有工程背景的人,加入到R语言使用者的队伍后,R才开始像着全领域发展,逐步实现工业化的要求。


  • RevolutionAnalytics公司的RHadoop产品,让R可以直接调用Hadoop集群资源

  • RStudio公司的RStudio产品,给了我们对于编辑软件新的认识

RMySQL, ROracle, RJDBC 打通了R和数据库访问通道

  • rmongodb, rredis, RHive, rhbase, RCassandra 打通过R和NoSQL的访问通道

  • Rmpi, snow 打通了单机多核并行计算的通道

  • Rserve,rwebsocket 打通了R语言的跨平台通信的通道

  • R不仅是学术界的语言,更将成为工业界必备的语言。


6)R的语法


R是面向对象语言,语法如同Python。但R的语法很自由,很多函数的名字,看起来都是那么随意,这也是R的哲学的一部分吧!


看到这样的赋值语法,有其他语言基础的程序员,肯定会崩溃的。

> a<-c(1,2,3,4)->b

> a

[1] 1 2 3 4

> b

[1] 1 2 3 4

随机取正态分布N(0,1)的10个数,又是这么的简单。

> rnorm(10)

[1] -0.694541401  1.877780959 -0.178608091  0.004362026

[5]  0.836891967  1.794961298  0.115284187  0.155175219

[9]  0.464028612 -0.842569561

用R画鸢尾花的数据集的散点图,非常好的可视化效果


> data(iris) #加载数据集

> head(iris) #查看前6行数据集

 Sepal.Length Sepal.Width Petal.Length Petal.Width Species

1          5.1         3.5          1.4         0.2  setosa

2          4.9         3.0          1.4         0.2  setosa

3          4.7         3.2          1.3         0.2  setosa

4          4.6         3.1          1.5         0.2  setosa

5          5.0         3.6          1.4         0.2  setosa

6          5.4         3.9          1.7         0.4  setosa


收藏(0)0
查看评分情况

全部评分

此主贴暂时没有点赞评分

总计:0

回复分享

版主推荐

    共有3条评论

    • 课课家运营团队
    • 酸酸~甜甜
    • Mr ken
    • YUI
    • cappuccino
    • mr jack
    • IT宅男
    • Mright
    • 课课家技术团队1
    • 选择版块:

    • 标题:

    • 内容

    • 验证码:

    • 标题:

    • 内容

    • 选择版块:

    移动帖子x

    移动到: