1. 程式人生 > >機器學習新星:Scala 優於 Java 的五大理由!

機器學習新星:Scala 優於 Java 的五大理由!

Java 在程式猿江湖的霸主地位已經很多年沒有受到挑戰了。

作為一門主流程式語言,在所有領域的普及率、職業選擇、業界傾向榜單中,Java 即使不在榜首,也位於前列。即便是 Python 為王的機器學習領域,Java 的普及程度也穩居第二、三位,僅有 R 語言可與之相比。Java 能有如此巨大的成功,跟它的靈活多功能,以及處理複雜任務的能力是分不開的。但有沒有比 Java 更好的選擇呢?

就雷鋒網所知,在資深程式猿眼中,能替代 Java、並且能做得比它更好的只有 Scala。這篇文章並不是對 Scala 平白無故的吹捧文,而是基於:

  • 大家知道 Scala 在業內的口碑不錯;

  • 作為一個後起之秀,它解決了 Java 普遍存在的許多問題;

  • 另一方面, Scala 的效能比 Java 更加強大;

  • 上期盤點中,我們還發現,在機器學習領域,2014 年後 Scala 在美國的招聘需求出現井噴,是發展最快的機器學習開發語言(詳見 Python、R、Java、 C++ 等:從業界反饋看機器學習語言趨勢)。

但是,作為一門新興語言,國內對於 Scala 的認識較少。下面,來看看國外移動遊戲開發商 Nimblechapps 的創始人兼 CEO Keval Padia,總結的 Scala 優於 Java 的五大理由:

1. 更快地投放市場

如果你是一個業餘開發者,不存在專案市場、成本方面的考慮,對這一條 Scala 的優點或許你並不感冒。但對於所有領工資的開發者,必須要在規定時間內把產品投放市場。這是一個沒有爭議的、Scala 優於 Java 的領域。

對於 Scala,OO(面向物件)模式在執行程式碼時的限制並不存在。在這一模式之外,還能為演算法加入函數語言程式設計。這使得原本兩個世界——面嚮物件語言和函式式語言的優點能被結合起來。這產生的結果是具有非凡表達力的細節和簡潔明瞭的程式碼——經常只有幾行。更少的程式碼行數在所有方面都提高了速度,不管是測試還是開發。

2. 避免死鎖(deadlock)

作為一名碼農,你也許經常在程式設計中遇到出現死鎖的情況。最可怕的空指標異常(null pointer exception)以及其它變種,就是很好的例子

Scala 能提供一個直截了當的解決方案嗎?不能。但它提供了一些能事先避免死鎖的、十分有效的選擇。

當你開始用 Scala 寫程式碼,你一定會注意到空指標異常出現的次數比 Java 大幅減少。

3. 更好的寫程式碼輸出

首先,函數語言程式設計能幫助你的 app 提高穩定性,並且帶走很多本無意產生的副產品。當你從可變資料結構( mutable data structures)轉移至所謂的函式式模式,你會保證更高的安全性、穩定性。

第二點,沒有標點的程式碼會變成更強。Scala 的程式碼支援混合能力和多種繼承(inheritanCES)這會幫助你找出程式碼中的漏洞、缺陷。更乾淨、強大的程式碼幫助開發者提升終端應用的安全和表現。

4. 第三方 API 儲備

所有開發者都需要為 app 加入功能。如今,這有兩種方式:白手起家從頭寫程式碼,或者從第三方應用中移植過來。現在程式架構師都需要走過這個關鍵路口——決定到底是自己開發整個功能,還是直接拿來一個外掛。

但其實還有第三種方式:Scala 提供了一個更強大的解決方案:它搭載了多種寶貴的內建功能。由於這一點,你對自己的應用有遠遠更好的控制力。Scala 簡單、直接的程式碼也能夠提升載入速度。

5. 非同步處理

不同於 Java,Scala 為傳遞非同步行為(asynchronous behavior)而設計。未來就緒(future readiness)在 Java 的缺失,導致了一系列限制了應用功能的妥協。但就像其他網路開發框架一樣,Scala 中的非同步行為提供了非常舒服、自然的程式碼。

看了這五大優點,你是否已經準備拿 Scala 試試手了呢?但雷鋒網要提醒讀者們,不要期望太高。比如說,它在國內的大環境並不理想,使用 Scala 的人太少,工作機會比國外少得多。對於個體而言,它也並不適合每個人。大牛 David Pollak 曾經表示:“對於50%的Java開發者,學習Scala的難度高於它帶來的便捷。”在早年的部落格中,他反覆強調 Scala 是一個面向聰明人的語言,是一個給熱愛寫程式碼的人充分發揮自己才能的平臺。

換句話說,Scala 難以在大眾開發者群體之間推廣。但近兩三年來,全世界已經目睹美國掀起的 Scala 風潮。雖然作為遊戲公司的 CEO,Keval PadiaScala 只是從手機端 app 開發的角度看待 Scala;但在機器學習領域,Scala 也已獲得相當多自認天賦不凡的極客作為擁躉。www.2017j.cn