0

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 的五大理由:

Nimblechapps 的 logo
如果你是一個業余開發者,不存在項目市場、成本方面的考慮,對這一條 Scala 的優點或許你并不感冒。但對于所有領工資的開發者,必須要在規定時間內把產品投放市場。這是一個沒有爭議的、Scala 優于 Java 的領域。對于 Scala,OO(面向對象)模式在執行代碼時的限制并不存在。在這一模式之外,還能為算法加入函數式編程。這使得原本兩個世界——面向對象語言和函數式語言的優點能被結合起來。這產生的結果是具有非凡表達力的細節和簡潔明了的代碼——經常只有幾行。更少的代碼行數在所有方面都提高了速度,不管是測試還是開發。
作為一名碼農,你也許經常在編程中遇到出現死鎖的情況。最可怕的空指針異常(null pointer exception)以及其它變種,就是很好的例子
Scala 能提供一個直截了當的解決方案嗎?不能。但它提供了一些能事先避免死鎖的、十分有效的選擇。當你開始用 Scala 寫代碼,你一定會注意到空指針異常出現的次數比 Java 大幅減少。
首先,函數式編程能幫助你的 app 提高穩定性,并且帶走很多本無意產生的副產品。當你從可變數據結構( mutable data structures)轉移至所謂的函數式模式,你會保證更高的安全性、穩定性。
第二點,沒有標點的代碼會變成更強。Scala 的代碼支持混合能力和多種繼承(inheritances)這會幫助你找出代碼中的漏洞、缺陷。更干凈、強大的代碼幫助開發者提升終端應用的安全和表現。
所有開發者都需要為 app 加入功能。如今,這有兩種方式:白手起家從頭寫代碼,或者從第三方應用中移植過來。現在程序架構師都需要走過這個關鍵路口——決定到底是自己開發整個功能,還是直接拿來一個插件。
但其實還有第三種方式:Scala 提供了一個更強大的解決方案:它搭載了多種寶貴的內置功能。由于這一點,你對自己的應用有遠遠更好的控制力。Scala 簡單、直接的代碼也能夠提升載入速度。
不同于 Java,Scala 為傳遞異步行為(asynchronous behavior)而設計。未來就緒(future readiness)在 Java 的缺失,導致了一系列限制了應用功能的妥協。但就像其他網絡開發框架一樣,Scala 中的異步行為提供了非常舒服、自然的代碼。

看了這五大優點,你是否已經準備拿 Scala 試試手了呢?但雷鋒網要提醒讀者們,不要期望太高。比如說,它在國內的大環境并不理想,使用 Scala 的人太少,工作機會比國外少得多。對于個體而言,它也并不適合每個人。大牛 David Pollak 曾經表示:“對于50%的Java開發者,學習Scala的難度高于它帶來的便捷。”在早年的博客中,他反復強調 Scala 是一個面向聰明人的語言,是一個給熱愛寫代碼的人充分發揮自己才能的平臺。
換句話說,Scala 難以在大眾開發者群體之間推廣。但近兩三年來,全世界已經目睹美國掀起的 Scala 風潮。雖然作為游戲公司的 CEO,Keval PadiaScala 只是從手機端 app 開發的角度看待 Scala;但在機器學習領域,Scala 也已獲得相當多自認天賦不凡的極客作為擁躉。
至于在將來,Scala 能否在國內高端開發者社區對 Java 形成沖擊,雷鋒網將拭目以待。
via jaxenter
相關文章:
Python、R、Java、 C++ 等:從業界反饋看機器學習語言趨勢
雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知。