R語言是一種利基語言, 除了研究學者和資料科學家, 大部分的開發者對於這種動態語言都持欣賞的態度。 當然, 對於一個1993年首次開發的程式設計語言來說, R語言使用者通過三百多萬其實也沒有太了不起。
沒錯兒,
R的年齡確實不算太小,
但是由於缺乏JIT,
所以R通常會很慢。
R也是記憶體佔用者,
這是因為它有較大的物件,
大量分配,
並且有一個不移動的垃圾收集器。
此外,
R具有複雜的語義,
這使得本科生和研究生很難在資料科學實驗室中學習它。
作為一個"必須維護的遺留軟體", R還必須發展以迎接新的挑戰。
FastR
那麼, R語言應該如何發展呢?
其中一種方法是通過FastR專案, 重新考慮如何實現R。 這個虛擬機器利用了測試技術, 在Truffle的基礎上在Java中實現了R。 FastR高效、相容、支援多種語言。
R既不是最快也不是最高效的程式設計語言。 FastR通過對Truffle框架提供的動態優化特性的廣泛使用,
Truffle框架還允許FastR解決語言不相容問題。
R功能強大且靈活,
但常常與其他語言(如Java、Fortran和C/ c++)的介面創建產生顯著的開銷。
這是由不同語言使用的不同執行策略造成的,
例如,
編譯與解釋,
以及不相容的內部資料表示。
我們如何解決這種基本的不匹配呢?Truffle框架將必要的多種語言直接構建到運行時。 因此, FastR使用這種基礎結構, 可以支援多種語言透明、無縫地交互。 無論語言邊界如何, 多語言應用程式的所有部分都可以由同一個編譯器編譯, 也可以同時執行和調試。
另外, 添加JIT編譯器只能説明解決速度問題。
如何使用FastR
FastR目前有兩種形式:
預先構建的二進位檔案,
GitHub上的原始程式碼版本。 此選項不包含Ruby或JavaScript。
FastR的最終目標是成為R的直接替代品, 不過現在還在進行中, 如果想要瞭解更多FastR的資訊, 或者想要做一些貢獻的朋友, 可以查看下面的連結:https://github.com/oracle/fastr。