2014最值得學習的語言—必須是R

瞭解啥會是前沿。

前言

以下5種語言 NODE、LUA、Python、Ruby、R ,哪個在2014年的應用前景會更好?

我毫不猶豫的選擇R。R不僅是2014年,也是以後更長一段時間的主角。

目錄

  1. 我的編程背景
  2. 爲什麼我會選擇R?
  3. R的應用前景
  4. 時代賦予R的任務
  5. 作者介紹

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。

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的哲學的一部分吧!

看到這樣的賦值語法,有其他語言基礎的程序員,肯定會崩潰的。

  1. > a<-c(1,2,3,4)->
  2. > a 
  3. [1] 1 2 3 4 
  4. > b 
  5. [1] 1 2 3 4 

隨機取正態分佈N(0,1)的10個數,又是這麼的簡單。

  1. > rnorm(10) 
  2.  [1] -0.694541401  1.877780959 -0.178608091  0.004362026 
  3.  [5]  0.836891967  1.794961298  0.115284187  0.155175219 
  4.  [9]  0.464028612 -0.842569561 

用R畫鳶尾花的數據集的散點圖,非常好的可視化效果

  1. > data(iris) #加載數據集 
  2. > head(iris) #查看前6行數據集 
  3.   Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
  4. 1          5.1         3.5          1.4         0.2  setosa 
  5. 2          4.9         3.0          1.4         0.2  setosa 
  6. 3          4.7         3.2          1.3         0.2  setosa 
  7. 4          4.6         3.1          1.5         0.2  setosa 
  8. 5          5.0         3.6          1.4         0.2  setosa 
  9. 6          5.4         3.9          1.7         0.4  setosa 
  10.  
  11. > plot(iris) #畫圖 

用R畫鳶尾花的數據集的散點圖

正是因爲R自由哲學,讓R的語法獨特而簡潔,我已經喜歡上這種哲學了。

7). R的思維模式

R語言讓我跳出了原有思維定式。使用R語言,我們應該從統計學的角度想問題,而不是計算機的思維模式。

R語言是直接面向數據的語言。在我們的日常生活中,無論做什麼事情都會產生數據,上網有瀏覽數據,買東西有消費數據,就算什麼都不幹,也會受大氣PM2.5的影響。利用R語言,我可以直接分析這些數據。

面向什麼業務,就分析什麼數據,不需要從產品經理向程序員的角色轉換,不需要考慮有什麼功能,更不需要考慮程序設計的事。

跳出程序員的思維模式,你所能認知的東西會更多,找到更適合自己的定位。

8). R解決的問題

當數據成爲生產資料的時候,R就是爲人們能運用生產資料創造價值的生產工具,R語言主要解決的是數據的問題。

在很長期的歷史時期,人類產生的數據都沒有自互聯網誕生以來產生的數據多;當Hadoop幫助人們解決了大數據存儲的問題後,如何發現數據的價值,成爲當前最火的話題。R語言的統計分析能力,就是數據分析最好的工具。

所以,R要解決的問題,就是大數據時代的問題,是時代賦予的任務。

9). R的不足

前面說了太多R的優點了,R也有很多不足之處。

  • R語言是統計學家編寫的軟件,並不如軟件工程師編寫的軟件那麼健壯。
  • R語言軟件的性能,存在一些問題。
  • R語言很自由,語法命名不太規範,需要花時間熟悉。
  • R語言結合了很多數學、概率、統計的基礎知識,學起來有一定門檻。

R的這些不足,都是可以克服的。當有更多的工程背景的人加入的時候,R語言會比現在更強大,幫助使用者創造更多的價值。

3. R的應用前景

R可以做所有SAS做的事情。

R應用最熱門的領域:

  • 統計分析:包括統計分佈,假設檢驗,統計建模
  • 金融分析:量化策略,投資組合,風險控制,時間序列,波動率
  • 數據挖掘:數據挖掘算法,數據建模,機器學習
  • 互聯網:推薦系統,消費預測,社交網絡
  • 生物信息學:DNA分析,物種分析
  • 生物製藥:生存分析,製藥過程管理
  • 全球地理科學:天氣,氣候,遙感數據
  • 數據可視化:靜態圖,可交互的動態圖,社交圖,地圖,熱圖,與各種Javascript庫的集成

我在博客中已經寫了很多篇關於R語言應用的文章,包括上面所列出的除生物以外的熱門領域。R有着非常廣闊的應用前景,而且R也將成爲新一代的最有能力創造價值的工具。

4. 時代賦予R的任務

R語言是在大數據時代被工業界瞭解和認識的語言,R語言被時代賦予了,挖掘數據價值,發現數據規律,創造數據財富的任務。

R語言也是幫助人們發揮智慧和創造力的最好的生產工具,我們不僅要學好R語言,還要用好R語言,爲社會注入更多的創新的生產力。

所以,通過上面的幾節內容所有的文字描述,我認爲“R是最值得學習的編程語言”。不論你還在讀書,還是已經工作,掌握R語言這個工具,找最適合自己的位置,前途將無限量。

最後總結:在這5種語言中,R是最特殊的,R被賦予了與其他語言不同的使命。R的基因決定了,R將成爲2014年,也可能是以後更長一段時間的主角。

5. 作者介紹

張丹,程序員、架構師,創業者。我的博客: http://blog.fens.me

從程序員開始,到架構師一路走來,經歷過太多的系統和應用。做過手機遊戲,寫過編程工具;做過大型Web應用系統,寫過公司內部CRM;做過SOA 的系統集成,寫過基於Hadoop的大數據工具;做過外包,做過電商,做過團購,做過支付,做過SNS,也做過移動SNS。以前只用Java,然後學了 PHP,現在用R和Node。最後跳出IT圈,進入金融圈,研發量化交易軟件。

注:我正在寫一本關於R語言的圖書,本篇文章會作爲圖書的開篇文章。

R是最值得學習的編程語言

這裏是中國礦業大學CSDN社團,如果你有什麼好的原創,或者轉載+你的評論,可以投稿給我們,發送郵件到[email protected],PS:這可是內部評價標準之一哦~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章