歡迎您光臨本站 註冊首頁

Dart準備好了嗎

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  

  
 一年前,Google發布了一門新的編程語言——Dart,試圖彌補Javascript的不足,Google希望Dart最終能夠取代JavaScript成為Web開發的主流語言。當時,Google只是提供了一些技術預覽,大家的關注主要集中在Dart語言本身,而不是如何用它來做實際開發。原因在於想要成為一門主流的編程語言,Dart需要有一套完成的開發工具包。在Dart一周歲生日之際,Google發布了面向開發人員的Dart SDK第一版,對於Web開發人員來說值得關注。

Dart SDK提供的關鍵特性包括:

  • 更快的Dart虛擬機,甚至在某些測試上超過V8
  • 新的Dart-JavaScript的轉換器,可以生成快速、壓縮的代碼
  • 能夠透明的運行在現代瀏覽器上的HTML庫
  • 與Javascript代碼的交互庫
  • 易用的編輯器
  • 新的打包工具——Pub
  • Dartium——原生支持Dart的Chromium構建(Dartium是集成Dart虛擬機的Chromium瀏覽器,過去要想在瀏覽器中運行Dart代碼,只能將Dart代碼編譯為Javascript,但是現在有了Dartium, Dart代碼可以真正地在瀏覽器里的Dart虛擬機中運行了。 Dartium支持一些的基本開發工具,如調試等。如果你對Dartium開發工具感興趣,可以觀看Seth Ladd博客中關於Dartium中的開發工具的視頻演示。)
  • 伺服器端IO庫
  • 描述Dart語法和新特性的語言規範

Dart語言存在許多出色的特性,其中包括模塊化和可選類型:

  • 模塊化——Dart中的命名空間採用了庫機制,它不同於Java中僅能使用類名來定義方法或變數命名空間。很重要的一點是:Dart中的庫除了包含類之外,還可以包含頂級元素,即類之外的變數和函數。print函數正是一個例子,因為它是無類的頂級函數。庫系統也為名字衝突提供了一種解決方案:庫A可以導入另一個庫B,為了避免A和B間的命名衝突,所有從庫B中導入的名字都會被加上前綴,也就是說,使用#import("foo.dart", "foo") 導入庫后,所有其中的可用元素都會擁有前綴"foo."。

  • 可選類型(Optional Typing)——“可選類型”關鍵在於“可選”。開發人員可以為代碼加上類型標註,但這些標註又對代碼行為根本沒有影響。事實上,Dart中還可以指定一個無意義類型——而同時代碼仍然能夠正常運行。在代碼中擁有類型可以讓各種類型檢查器各司其職。Dart附帶的編輯器中擁有一種類型檢查器,它能夠高亮類型錯誤並將其當做警告。Dart中還有一種檢查模式,在該模式中類型標註可用來檢查代碼,任何違規都會被報告成警告或錯誤。實際上可選類型標註在代碼中會具有類型信息,這些信息對編製文檔會有幫助;使用可選類型不再需要更多的文檔來解釋某個參數必須實現一個特定的方法才可以接受。介面的存在(即帶有方法簽名的方法名稱集合,以及可選類型標註)可以幫助文檔化API。關鍵在於,語言總是動態的而且參數也可以被指定為動態的,也就是Dynamic類型。

針對Dart SDK的發布和Dart的前景,開發社區展開了熱烈的討論,大家發表了各自的看法。

ColinABQ:Dart從一出生就註定是“Javascript的轉換器”和“Javascript代碼的交互庫”,Google知道它面臨多大的障礙,大家認為Dart不可能獲得真正的應用。如果其他轉換器被禁用,那麼Dart也會消失。不過我想知道Dart是否在Google公司內部使用,處理一些開發問題。

Deekthesqueak:我對Web新技術非常感興趣,但是坦白的說,在應用新技術之前,我們需要考慮如何處理低版本的瀏覽器。我們需要想辦法強制用戶升級IE、Chrome、Firefox等等。作為一名曾經為IE 7-9、Firefox和Chrome開發過Web應用的過來人,我不得不考慮最小支持集合,這嚴重影響了應用可以具備的特性。

Dilbert:我認為Dart還沒有準備好。Google需要瀏覽器來支持Dart語言。你不能把內建Dart虛擬機的Chromium構建用於普通的上網,其他瀏覽器廠商還沒有支持Dart,而且Google也是Javascript標準化進程的一員,它還在招聘大量的Javascript開發人員……我認為,Lars Bak想要開發Dart,因此Google投入了相應的資源,這就像Rob Pike和Ken Thompson想要開發Go語言一樣,Google也提供了支持。Google公司的一些員工認為Javacript很糟糕,希望完全拋棄它,但是很顯然更多的人不支持。

Desverger:我個人認為Javascript是一門很糟糕的語言,原因有很多。因此,我會儘力避開web開發。那些從事Web開發的人正是那些真正喜歡Javascript的人。我對Dart了解不多,但是我相信相比Javascript,我會更享受Dart。作為一名開發人員,我希望能夠使用Dart開發網站,應該會滿足我的需求。我猜Dart會吸引更多的人從事Web開發。

PervertRyan:為何我們要花時間學習一種新語言?我們應該做的是為統一的位元組碼和虛擬機制定一個Web標準。只要JVM或者CLR沒有把我們綁定到某一種特定的語言上,我們就可以選擇。Dart可能比Javascript更好(希望如此),但是這並不意味著它就是銀彈。如果我們創建標準化的位元組碼,那麼具體的語言我們就不必關心了。 這就是我想要的。我希望能夠選擇動態類型還是靜態類型,低性能還是高性能。我們已經做了不少Javascript的替代品(CoffeeScript、TypeScript、ScriptSharp、GWT等等),但是它們本質上都利用Javascript作為底層的位元組碼。

xxgreg(回復PervertRyan):位元組碼存在一系列問題——1.驗證,你需要驗證位元組碼是否安全。這個過程會像解析源代碼一樣緩慢。更糟糕的是,難以確保安全。2.缺少AST,虛擬機經常額外的修改源代碼的初始AST,從而可以進行運行時優化。位元組碼經常會導致源代碼中的有用信息丟失。3.尺寸,位元組碼通常不比源代碼小,可能會創建一個壓縮的二進位AST。位元組碼和虛擬機必須經常做出優化決定。對於虛擬機上的所有語言,虛擬機很難公平對待。

cletus:坦白說,我依然看不到Dart的意義,它做出了一些奇怪的選擇,比如可選類型。代碼在伺服器端和客戶端共享是GWT吹噓的想法,但最終失敗。Dart看起來又要重蹈覆轍,我對它的成功不太樂觀。不過從另一方面講,Dart也可能會有不錯的前景,它所包含的不少特性我都很喜歡。我認為Javascript就像是編程語言界的電子郵件——它無處不在,但是大家都覺得它存在問題,而且這些問題的修補特別複雜。

讀者朋友是否看好Dart的前景?歡迎發表自己的看法。



[火星人 ] Dart準備好了嗎已經有424次圍觀

http://coctec.com/news/soft/show-post-71318.html