R語言的前世今生


最近因病休養在家,另外也算是正式的離開Snack Studio.終於有了大把可以自由支配的時間.可以自主的安排.最近閑暇的時間總算是惡補了不少前段時間行業沒有時間關注的新事物.看着行業里引領潮流的東西,除非為數不多的天才能夠創造得出,估計大多數人跟我一樣,看着這些目不接暇的潮流總是覺得多少有些不知所措.但這並不妨礙從一個學習者的角度來了解這些新東西.類似本篇即將要談到的R語言.

當一旦涉及一個新的領域.或一門新的語言.總是很容易陷入一些具體細節中而無法從更高的角度看到一門語言形成的背后的行業的背景、以及解決現實中存在的問題和適用的場景 以及未來的發展趨勢.這點的缺乏也會導致我們看不清設計一門新的語言的作者的初衷是什么?類似我最近實踐R語言時.當我很快實現一個簡單的Demo原型后.雖然有些成就感但依然還是一知半解.所以本篇不談R的技術細節.就來聊聊R語言背后的一些故事.

R語言是什么?

R是一種適用於統計分析計算和圖像處理的語言.受S語言和Scheme語言影響發展而來.早期R是基於S語言的一個GNU項目,所以也可以當作S語言的一種實現,通常用S語言編寫的代碼都可以不作任何修改的在R環境下運行。R的語法是來自Scheme.

R語言如何而來的?

R本來是由來自新西蘭奧克蘭大學Ross IhakaRobert Gentleman開發.[因兩人名字都是以R 開頭 所以也因此形象稱為R]

RS-365Robert_Gentleman2

PS:[左為Ross Ihaka 右為Robert Gentleman]

其實在最早的時候,R語言還沒有發明之前.Ross Ihaka從一本書中了解到了Scheme語言.Ross 對Scheme非常感興趣.大約與此同時,他正好獲得一版新S語言[后面說明]的源代碼.此時他注意到Scheme和S語言二者之間的異同點,后來Ross開始准備用Shceme向別人演示詞法作用域.但由於手邊沒有Scheme的書,就采用S語言來演示結果卻失敗了.由此讓他萌生了改進S語言的想法.

在相當長的一段時間之后.Ross Ihaka[鏈接為個人站點]和Robert Gentlemen[鏈接為個人站點]在奧克大學成了同事.他們都對統計計算十分感興趣.而且試圖為他們的實驗室尋找一個更好的軟件.因為在商業軟件中一直找不到他們想要的這是Ross 聯想到當初S語言后自己一直一直想改進S語言的想法.於是他們決定基於此自己開發一種語言.這就是兩人合作后才產生R語言.

可以說S語言就是R的father.S語言時一門用來數據分析和圖形化的高級語言.早在1998年美國計算機協會ACM就授予了S語言的主要設計者John M.chambers“軟件系統獎”用來表彰S取得的成就.這是迄今為止眾多統計軟件中“唯一”被ACM授獎的統計系統。當時ACM是這樣評價S語言的: 永久地改變了人們分析、可視化、處理數據的方式; 是一個優雅的、被廣泛接受的、不朽的軟件系統。

歷年ACM授予軟件系統獎的列表,這些優秀的軟件系統與我們的生活息息相關:

1983年,Unix

1986年,TeX

1989年,PostScript

1991年,TCP/IP

1995年,World-Wid-Web

1997年,Tcl/Tk

1998年,S

1999年,The Apache Group

2002年,Java

而Scheme語言時LISP語言一個方言或者可以說成是一個變種.與其他LISP不同的是Scheme是可以編譯成機器碼的.Scheme誕生於1975年的MIT,對於這個有着近30年歷史的編程語言來說.在國外得到廣泛應用.就像國內的C++/Java那樣收到商業領域的青睞.Scheme的主要特征是可以像操作數據一樣操作函數調用.其主要目的是訓練人的機器化思維.以其簡潔的語言環境和大量的腦力思考而著稱.而后期演化的R正式參考了Scheme的語法.

在1993年.Ross和Robert將R的部分二進制文件放到卡耐基.梅隆大學統計系的Statlib中.並在S語言的新聞列表上發布了一個公告.隨后有人開始下載使用並提出一些反饋.其中以蘇黎世理工學院的MartinM最為突出,Martin在郵件中極力勸說兩位原作者公布源代碼.讓R成為自由軟件.終於在Martin勸說下於1995年6月R預言的源代碼正式發布到自由軟件協會的FTP上.

同年S語言的許可證被MathSoft公司買斷,S-PLUS成為其公司的主打數據分析產品。由於S-PLUS繼承了S語言的優秀血統,所以被世界各國的統計學家廣泛使用.

隨着R語言的進一步開發.程序版本的歸檔又成了一個問題.維也納工業大學的Kurt Hornik承擔了這個任務.在維也納建立了R程序的歸檔.這使得程序版本的發布變得更加規范.同時世界各地也出現了R程序的鏡像.類似Statlib等.

隨着時間推移.於1997年中期R核心團隊正式成立. 包含11位早起成員.包括現在R語言版本依然還是由“R開發核心團隊”負責開發.截止到目前我在寫這篇文章時也就是2013年的現在.R核心團隊已經達到20人.成員主要來自世界各地的大學如牛津大學.加拿大西安大略大學等.也有來自企業的成員.比如AT&T實驗室的Simon Urbanek等.由於R語言自身擴展性非常強.隨着發展和使用使用人數增多.因此也吸引了大量用戶編寫的自定義的函數包供更多人使用.這些附件包可以沖世界各地的CRAM鏡像上下載.

截止當目前.R語言源程序已經更迭了超過了70以上的版本.目前最新版本是3.0.0. 而源程序大小也有1997年R核心團隊成立時的959K增加到今天的51.5M[Windows版本].從版本更新和文件大小來看.R的發展速度的確非常之快.而且整個軟件體系一直都保持者非常小的優勢.這也幾乎是任何一門商業軟件都無法比擬的.

而隨着R語言的發展,其實就在R語言開放源碼的1993年,S語言的許可證被MathSoft公司買斷,S-PLUS成為其公司的主打數據分析產品。由於S-PLUS繼承了S語言的優秀血統,所以被世界各國的統計學家廣泛使用。但好景不長,1997年R語言正式成為GNU項目,大量優秀統計學家加入到R語言開發的行列。隨着R語言的功能逐漸強大,S-PLUS的用戶漸漸地轉到了同承一脈的R語言。S語言的發明人之一——John M. Chambers最后也成為R語言的核心團隊成員。S-PLUS這款優秀的軟件也幾經易手,最后花落TIBCO公司.

現金R的郵件列表依然還是有蘇黎世理工學院的Martin Macher提供支持.這些郵件列表主要包含四大類:R-announce 消息發布、R-help附加包、R-help幫助、R-develR程序的開發.

R除了官方文檔外.還有創辦於2001年的一個刊物R News. 該刊物主要用來介紹R的最新特征.CRAN的動態.附加包的說明短文、編程技巧、手冊和FAQ中沒有介紹的小提示以及R在數據分析中應用實例.自2009年R News更名為The R Journal.

雖然說R語言誕生於新西蘭.但后來的服務器架設到奧地利.而現在Windows 主程序的維護者在加拿大.而windows 附加包維護者在德國.Mac os版本維護者在美國.郵件列表維護者在瑞士..就是這樣的一個形式松散卻有着共同目標的群體.數十年間以志願者的身份堅持不懈的推送R語言的發展.眾多統計學或相關領域的程序員也貢獻自己的力量.講大量統計方法以附加包的形式發布出來.使其他不擅長變成的用戶也可以以最快的速度運用上最新的統計方法.而封閉源代碼的商業源代碼則很難有此這樣推送力量.R語言發展到今天正式開源社區不斷推送下 組建完善並得到進一步發展. 並成就了R語言的今天.

其實R語言早已是又來已久.如果算上第一個正式版本.可見它的出現儼然比Java還要早.R確切的說是一門用於統計計算和作圖的語言,它不單是一門語言,更是一個數據計算與分析的環境。統計計算領域有三大工具:SAS、SPSS、S,R正是受S語言和Scheme語言影響發展而來。其最主要的特點是免費、開源、各種各樣的模塊十分齊全,在R的綜合檔案網絡CRAN中,提供了大量的第三方功能包,其內容涵蓋了從統計計算到機器學習,從金融分析到生物信息,從社會網絡分析到自然語言處理,從各種數據庫各種語言接口到高性能計算模型,可以說無所不包,無所不容,這也是為什么R正在獲得越來越多各行各業的從業人員喜愛的一個重要原因.

而現在隨着數據呈現幾何數量級的增加.數據挖掘需求的增長而使R日益得到普及.它雖源於S但其發展卻遠遠地超過了S.google首席經濟學家Hal Varian說:”R的最讓人驚艷之處在於你可以通過修改它來做所有的事情,而你已經擁有大量可用的工具包,這無疑讓你是站在巨人的肩膀上工作。”R語言也在目前機器學習、統計計算、高性能計算得到廣泛應用.大數據產品銷售商,比如數據倉庫與 Hadoop 數據過濾器有其喜歡R語言.R 進過調整,以便 Hadoop 集群的每個節點都可以對 Hadoop 集群上存儲在 Hadoop 分布式文件系統中的數據進行本地 R 分析,並對這些計算的結果進行整合,類似 MapReduce 對非結構化數據的操作.

在2012年初Oracle 也加入了 R 語言行列.推出Advanced Analytics 工具,作為 Oracle 數據庫與 R 分析引擎之間的橋接.Advanced Analytics 是 Oracle 在其 11g R2 數據庫中部署的 Data Mining 附件。當 R 程序員需要運行統計例程時,他們可以在數據挖掘工具箱中調用等同的 SQL 函數,並在該數據庫中運行。如果沒有這樣的 SQL 函數,遍歷數據庫節點(如果為集群)的嵌入式 R 引擎將運行 R 例程,收集匯總數據並作為結果將其返回 R 控制台。

另外,Oracle為其Big Data Appliance提供了一個名為 R Connector for Hadoop 工具,這是一個在 racle Exa x86 集群上運行的 Cloudera CDH3 Hadoop 境。該連接器可讓 R 控制台與在Big Data Appliance 運行的Hadoop 分布式文件系統和NoSQL 數據庫進行通信。

隨着big data 大數據時代來臨.R語言起源統計分析.現在服務於數據.未來也會逐漸隨着數據分布滲透到各個行業…


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM