為什么要學習Scala

      網友投稿 885 2025-04-04

      為什么還需要一個新的語言呢?我們希望程序更簡潔,更易讀,更不容易出錯,充分利用現代處理器的多核特性,可以相對容易地實現分布式應用。

      專家推薦

      Groovy創始人James Strachan曾經說過:

      我認為將來可能替代Java的就是Scala 。它實在太讓我印象深刻了。我甚至可以誠實地說,如果有人在2003年把那本《Programming in Scala》拿給我看了的話,那我根本就不會再去發明Groovy了。

      JavaOne會議期間,在一個參加的講座中有人向Java之父James Gosling提了一個有意思的問題:

      除了Java之外,你現在還使用JVM上的那些語言?"

      Java之父的回答很迅速同時也很讓人意外

      Scala

      編程范式

      Scala和其他很多語言根本的區別就是它融合了面向對象和函數式編程這兩種編程范式。

      Scala是一個面向對象的。和Java有primitive type不同,Scala所有東西都是對象。你可以使用所有熟悉的面向對象的編程范式和和模式。不僅如此,Scala對于面向對象有不少創新的貢獻。例如Scala中特質(trait)的概念。它類似于Java中的接口(Interface),但是可以具有方法實現和字段。一個對象可以混入(mixin)多個特質。它比多繼承(比如C++) 更加靈活,同時也沒有多繼承中二義性的問題。

      Scala是函數式的。函數式編程不是一個新的概念,50年代的Lisp就是函數式編程的始祖。此后,又有Scheme,Haskell,F#等后來者。但是函數式編程一直十分小眾,直到最近幾年才突然流行。下面簡單介紹一下函數式編程的基本概念,和其流行的原因。

      在函數式編程中,函數是一等公民。和int,string一樣,你可以將函數作為參數傳遞給另一個函數,將函數作為返回值。這樣做的一個好處是程序更加簡潔易讀。另外,函數可以事先定義,稍后觸發。這也是目前最為流行的事件驅動(event driven)或者反應式(reactive)編程的基本應用場景。

      在函數式編程中,數據的操作是將輸入映射為輸出,而不改變任何輸入。這樣immutable的方法杜絕了side effect。如果你讀過Effective Java,應該記得很多地方討論過immutable的好處。在函數式編程的世界里,immutablity是默認的。當然,很多時候這樣的方式會帶來數據的拷貝和浪費。然而,隨著計算和存儲能力的不斷提高,immutable編程的優勢會逐步凸顯。此外,和一些純函數的語言不同,Scala也允許mutable的值,使得編程十分靈活。

      具體特性

      Scala可以和Java很好的銜接。Scala可以使用所有的Java庫,同時對于一些Java類做了無縫的擴展。例如你可以使用str.toInt而不是Integer.parseInt(str)。

      Scala更加簡潔。一個方面它盡量避免使用Java中的重復代碼,比如無窮無盡的get和set。另一方面,豐富的庫函數和函數式編程的結合,使得很多操作的實現異常簡練。比如,要檢驗一個名字中是否含有大寫字母,只需要一行代碼

      val?nameHasUpperCase?=?name.exists(_.isUpper)

      Scala是靜態類型的語言。具備所有靜態類型的優勢如編譯時類型檢查,安全重構,代碼即文檔。另一方便,Scala同時在你不給出類型時,可以“聰明”地猜測類型。一定程度上具備動態類型語言的靈活性。

      應用趨勢

      Scala是個通用的編程語言。目前其Web Framework Play已經在很多企業得到應用。Scala的Akka也被不少企業應用于大型分布式應用的開發。大數據領域的新星Spark就是用Scala編寫的。Twitter內部應用大量使用Scala。在國內,使用Scala的公司還不是很多。但可以預見,Scala將會越來越流行。雖然Java 8的一些新特性和Scala很相似,但也有它的局限。這一點,我以后會詳細講解。

      不可否認,Scala的學習曲線相對比較陡。往往有很多方法來解決一個問題。如果沒有充分理解和合理使用,Scala編寫的程序也會不倫不類。我希望通過一個系列,由淺入深,來講解Scala。

      https://www.jianshu.com/p/9cb4795b8e86

      為什么要學習Scala

      Scala Java

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel圖表制作怎么顯示兩個Y坐標軸 顯示兩個Y坐標軸方法介紹
      下一篇:怎樣取消wps保護表格模式(wps表格怎么取消保護模式)
      相關文章
      久久国产精品亚洲一区二区| 亚洲综合久久夜AV | 亚洲午夜国产精品无码老牛影视 | 亚洲欧美日韩中文字幕一区二区三区 | 亚洲欧洲精品成人久久曰影片| 亚洲精品无码久久久久APP| 亚洲六月丁香婷婷综合| 日本亚洲精品色婷婷在线影院| 久久久久se色偷偷亚洲精品av| 亚洲一区二区三区久久| 亚洲国产精品综合久久2007| 亚洲一区二区三区在线网站| 亚洲夂夂婷婷色拍WW47| 亚洲乱码av中文一区二区| 亚洲经典千人经典日产| 无码亚洲成a人在线观看| 国产成人久久精品亚洲小说| 午夜亚洲福利在线老司机| 亚洲国产成人久久精品99| 亚洲色偷偷狠狠综合网| 亚洲日韩av无码| 亚洲国产香蕉碰碰人人| 亚洲综合激情九月婷婷| 亚洲欧洲日产国码www| 亚洲乱码中文论理电影| 亚洲性色AV日韩在线观看| 亚洲av无码专区在线电影天堂| 国产成人高清亚洲一区久久| 亚洲日本一区二区一本一道| 国产亚洲精品精华液| 亚洲色图在线播放| 亚洲成AV人片久久| 亚洲私人无码综合久久网| 色偷偷亚洲第一综合| 久久久久亚洲爆乳少妇无| 亚洲VA中文字幕无码毛片| 亚洲精彩视频在线观看| 亚洲综合色丁香婷婷六月图片| 美国毛片亚洲社区在线观看| 久久久久亚洲AV无码专区网站| 久久夜色精品国产嚕嚕亚洲av|