成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Scala的優點與缺陷:深沉而有趣的繼承者

譯文
開發 后端
自從Twitter開始采用Scala做后臺開發以來,Scala編程語言便開始吸引眾多開發者的目光了。本文對Scala的優點以及現存的一些不足做了一番總結,并認為Scala非常適合Java王位繼承者這一角色。

【51CTO精選譯文】一段時間以來,Java 是唯一運行在 JVM 上的語言。而 Scala 最近因用于擴展 Twitter 后臺(詳情可參考51CTO之前發布的《一位Twitter工程師的Scala探秘之旅》)而吸引了眾多目光。與許多運行在 JVM 上的語言不同,如 Groovy、Jruby 和 Jython,Scala 它是靜態類型的。這表示,與 Java 和 C# 類似,類型必須在編譯時是已知的。通常,人們介紹 Scala 時會說它即是面向對象的(OO)又是函數式的(functional)。雖然這種說法是正確的(并且令人畏懼,很多人對于這些詞匯很不爽),但并沒有抓住 Scala 的重點。

以下 Scala 的各種特性能夠為你帶來最直接的好處:

兼容 Java。這點很明顯(其他 200 多種 JVM 上的語言也兼容 Java),但它是如此重要的一個功能,因此不可小視。它意味著 Scala 可以使用所有 Java 庫和框架愛。這也是對那些投資該技術的人員和公司的表達敬意。

聯合編譯(Joint Compilation)。這表示與 Groovy 類似,Scala 類被編譯為 Java 類,因此可以在 Java 項目中使用(甚至在他們被定義的同一項目中的 java 類 使用)。即使你的團隊覺得完全轉向 Scala,對于通過 JSR 223 整合動態語言,這依然很有用。

類型推斷(Type Inference)。如果編譯器能猜到類型(通常它可以做到),你就不必告訴它。這使得 Scala 代碼具有動態語言的簡潔性,而同時保持類型安全。

隱式轉換(Implicit conversion),使 Scala 具有類型安全性,正如擴展方法(extension method)之于 C#,開放類(open class)之于 ruby。即:向你未曾定義的類型添加方法(如字符串、列表、整數)。這是使得 Scala 符合 DSL(特定領域語言)模型的特性之一。

鼓勵使用對象不變性,并且容易實現。Scala 甚至提供了內置的不變對象垃圾收集器。對于Scala有這樣一種說法:“每當提到不變性時,有人就會開始擔心性能的問題,對于某些情況,這種擔憂并非毫無來由,但對于 Scala,最終結果卻與這一擔憂相反。不可變的數據結構相對于可變的數據結構,更有助于獲得較高的效率。其原因之一在于強大的垃圾收集器(garbage collector),與 JVM 中的垃圾收集器類似。”

自動生成 Getter 和 Setter,如果你不需要(比如你只需 Setter),你必須顯示地將他們私有化(private)。這不是問題,因為通常情況都需要。

Scala 具有第一等級(first-order)函數并通過 iterable trait 實現了枚舉協議(enumeration protocol),這有助于讓代碼更加干凈、更加簡潔,并能夠帶來其他一些好處。

Actor 編程模式讓高度并行應用程序的開發更加簡單。

不必顯示抓取或拋出(try-catch)異常。可以認為使用已檢查異常(checked exception)的害處多于好處。

有關Scala更多的好處,可以參考51CTO之前發布的Ruby高手點評Scala編程語言十大絕招一文。不過,單單這些特性就已足夠——足夠令 Scala 成為一個非常有趣的語言,足夠讓 JRuby 創建者之一 Charles Nutter 宣稱它就是 Java 王位的合法繼承人,甚至足夠讓 Groovy 的創建人 James Stracha 以及 Java 的創建人 James Gosling 為其背書。盡管如此,Scala 是一個具有深度的語言,還有幾項高級特性,可以讓開發者更具生產力。但在掌握基本知識之前就學習這些功能會讓人感覺非常困難,如果沒有很好的支持文檔(比如 IBM、 Aritma、Jonas Bonér、Daniel Spiewak、Sven Efftinge 以及官方和其他網站提供的資料)會更加困難。不過,這不僅僅是令人興奮,在你需要時,它確實可以用來進一步挖掘更具深度的一些概念。

51CTO編輯推薦:Scala編程語言專題

即使 Scala 具有學術性的根源(正如在它的論文網頁上顯示的那樣,以及它涉及的某些高深概念),它已成功應用在企業項目上,除 Twitter 之外,還有西門子、法國電力集團(électricité de France)和 WattzOn 網站。

在所有這些優點之外,Scala 的確還存在一些粗糙的地方。雖然很多正在努力解決這些弱點,但近期內它們還是有影響的:

◆剛剛起步的 IDE 支持。正如 Lift 的作者所言,Scala 的 IDE 支持,雖然進行了很多開發,還沒有做到 Java 那種地步。重構支持、代碼完整以及單元測試整合都很差。更不必說大多數框架支持工具不能很好地與 Scala 兼容。由于 IDE 能夠幫助人們學習這種語言,這可能嚇退那些新手。另一方面,Martin Folwer 認為這種 IDE 狀況是相對的,一種讓你更具生產力的語言足以彌補缺乏高級工具的弱點。

◆大多數 IDE 不支持聯合編譯。同樣,當 Scala 更加普及之后,這一點會有所改變。

◆類的不變性并非真的不變性,因為引用對象自身可能不是不變的。并且目前沒有方法可以確保整個對象圖譜是不變的。

◆讓 JSR 223 完美地兼容 Scala 非常困難。但另一方面,取得足夠好的兼容還是相當容易的。

◆Scala 不支持元編程(metaprogramming)。通過將其與動態語言結合,如 Ruby,可以繞過這個問題,但如果你是元編程的重度使用者,使用一個完全不同的語言是一種較好的解決辦法(Fan 是另一個運行在 JVM 上的靜態類型語言,與 Scala 類似,但支持元編程)。

◆使用 Java 資源的框架,如客戶端 GWT,不能很好地兼容 Scala(雖然有人已經在服務器端讓 Scala 與 GWT 兼容)。不過,有一個項目正在進行,將能夠使 Scala 轉化為 Java 資源。

◆語法和某些概念與 Java 有點不同,比如:顛倒的類型聲明順序、使用下劃線而不是通配符、星號和缺省值,太多種類的空概念(nothing)、沒有靜態方法(你需要使用單例對象 singleton object 作為替代)。文檔對這些問題有很好的解釋,但是,請留意,這不是 Java 代碼到 Scala 代碼的自動轉換。

正如 Joe Amstrong 所說,隨著 CPU 變得更加廉價,具有越來越多的內核,開發者能夠更加簡便地使用多核 CPU 的語言需求,將會不斷增加。Scala 恰好滿足了這種需求,而同時 Java 的開發停滯不前,糾纏于廣泛部署所帶來的問題,以及未來有多開放的不確定性和某些主要貢獻者的政治問題。根據這種情況來看,Scala 非常適合 Java 王位繼承者這一角色。

【編輯推薦】

  1. Scala編程語言
  2. Scala和Erlang,以及多核主導的未來
  3. 一位Twitter工程師的Scala探秘之旅
  4. Ruby高手點評Scala編程語言十大絕招
  5. Groovy創始人:Java面臨終結 Scala將取而代之
責任編輯:yangsai 來源: 51CTO.com
相關推薦

2023-02-28 20:23:15

NodejsRequest測試

2020-10-31 17:33:18

Scala語言函數

2015-06-24 10:13:38

LinuxLinux終端彩蛋

2015-08-03 17:06:49

IEEdge瀏覽器

2023-04-11 22:08:56

2010-08-18 08:53:53

Scala

2009-07-22 09:02:45

Scala組合繼承

2013-05-03 17:24:43

JollaSailfishMeeGO

2013-08-20 09:23:06

Scala遞歸

2009-09-07 18:14:55

Scala開發環境

2009-10-19 10:13:42

LinuxBash命令提示行

2024-10-07 09:13:45

MESIIoT工業物聯網

2010-08-24 10:26:47

DIV+CSS

2011-03-22 08:44:20

Android 3.0

2009-12-07 10:42:04

開發者T恤

2010-08-16 13:39:18

DIV+CSS

2009-12-09 09:15:47

從Java走進ScalTwitter API

2022-02-13 23:42:02

人工智能微表情表情識別

2021-11-26 14:28:48

以太坊比特幣加密貨幣

2009-06-17 13:26:06

scala繼承模型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜电影网 | 亚洲一区二区三区免费观看 | 中文久久 | av天天干| 青青久草| 日韩一区二区在线观看视频 | 中日韩av | xxx.在线观看 | 最新av中文字幕 | 91影院在线观看 | 在线欧美视频 | 日韩不卡一区二区三区 | 欧美日韩不卡合集视频 | 精品日韩一区二区 | 日韩精品一区二区三区中文在线 | 成人国产在线视频 | www97影院| 日韩一级在线 | 久久国产麻豆 | 久久毛片网站 | 欧美综合自拍 | 久久久亚洲| 精品日韩一区 | 国产精品高清一区二区三区 | 精品一区二区在线视频 | 国产做爰 | 亚州午夜精品 | 91精品国产91久久久久久吃药 | 在线观看精品视频网站 | 毛片网站在线观看视频 | 久久精品黄色 | 国产欧美日韩 | 一区二区三区在线免费观看 | 亚洲午夜在线 | 久久亚洲欧美日韩精品专区 | 午夜国产一级 | 日韩视频一区二区 | 亚洲成人高清 | 久久99精品久久久久久 | 精品欧美激情在线观看 | 久久久久久国模大尺度人体 |