機器學習新星: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 的領域。
2. 避免死鎖(deadlock)
作為一名碼農,你也許經常在程式設計中遇到出現死鎖的情況。最可怕的空指標異常(null pointer exception)以及其它變種,就是很好的例子
Scala 能提供一個直截了當的解決方案嗎?不能。但它提供了一些能事先避免死鎖的、十分有效的選擇。
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