自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Dart之于JavaScript正如C#之于C++

譯文
開(kāi)發(fā) 前端 新聞
在今天于丹麥舉行的Web開(kāi)發(fā)者大會(huì)上,來(lái)自谷歌及其旗下Chromium開(kāi)源開(kāi)發(fā)團(tuán)隊(duì)的成員們終于揭開(kāi)了全新語(yǔ)言Dart的神秘面紗,谷歌同時(shí)承諾該語(yǔ)言將為Web編碼工作帶來(lái)全新的構(gòu)造方式。

【51CTO 10月12號(hào)外電頭條】Lars Bak——這位來(lái)自谷歌的工程師曾經(jīng)憑借其V8 JavaScript解釋程序顛覆了火狐瀏覽器的速度神話。如今根據(jù)他的說(shuō)法,谷歌推出的全新Web開(kāi)發(fā)語(yǔ)言Dart很可能與Smalltalk存在著種種相似之處。不過(guò)它似乎同時(shí)也在將Web發(fā)展引向一條與此前截然不同的另類道路。在今天于丹麥舉行的Web開(kāi)發(fā)者大會(huì)上,來(lái)自谷歌及其旗下Chromium開(kāi)源開(kāi)發(fā)團(tuán)隊(duì)的成員們終于揭開(kāi)了全新語(yǔ)言Dart的神秘面紗,谷歌同時(shí)承諾該語(yǔ)言將為Web編碼工作帶來(lái)全新的構(gòu)造方式。

要讓Dart正常運(yùn)作,我們需要部署一套全新的虛擬機(jī),這種要求無(wú)形中使其與Java、Adobe Flash以及微軟Silverlight天然形成了競(jìng)爭(zhēng)關(guān)系。不過(guò)從體系結(jié)構(gòu)角度而言,Dart就目前來(lái)看將更多地依托于瀏覽器。

谷歌的計(jì)劃是意欲將Dart虛擬機(jī)打造為對(duì)瀏覽器現(xiàn)有JavaScript引擎的一種補(bǔ)充。換句話來(lái)說(shuō),它將把Dart代碼加以重組并生成功能相同的JavaScript代碼。盡管谷歌一直在回避討論Dart嵌入全部瀏覽器之中的可能性,但在今早發(fā)布的博文中,Bak明確指出在將Dart虛擬機(jī)整合到谷歌Chrome瀏覽器方面,“我們已經(jīng)有計(jì)劃探索這一方案。”

終于,我們迎來(lái)了類

Dart語(yǔ)言存在的意義是為JavaScript提供輔助功能,因?yàn)楹笳唠S著時(shí)間的推移,其在“開(kāi)放式Web”中的分布式應(yīng)用程序方面已經(jīng)無(wú)法勝任功能上的核心角色。比起結(jié)構(gòu)化更徹底、面向?qū)ο筇匦愿鞔_的C#及Java,JavaScript工作起來(lái)總會(huì)帶來(lái)一些無(wú)法清除的累贅因素。而與諸如Python、Ruby以及D之類更為智能化的動(dòng)態(tài)語(yǔ)言相比,JavaScript又顯得比較啰嗦,無(wú)法迅速切入主題。

隨著Dart語(yǔ)言首部教程的問(wèn)世,Bak及其架構(gòu)團(tuán)隊(duì)以JavaScript的基礎(chǔ)為起點(diǎn),向其中加入了大量關(guān)鍵性Java要素,并通過(guò)對(duì)翻譯程序潛在條件的改進(jìn)大大優(yōu)化了語(yǔ)言的整體簡(jiǎn)潔性。

對(duì)于JavaScript而言,實(shí)際上存在著一些能夠使其更偏面向?qū)ο蟮念惡瘮?shù),而這些類函數(shù)所使用的正是關(guān)鍵字函數(shù)。我們可以對(duì)那些恰好具備屬性的函數(shù)進(jìn)行聲明,而該函數(shù)將作為一種類函數(shù)嵌入其中。不過(guò)這種處理方式的問(wèn)題在于,該類函數(shù)本身并沒(méi)有得到重復(fù)調(diào)用,而是每次都以重新創(chuàng)建的形式出現(xiàn),因此將該類函數(shù)以綁定的方式添加至函數(shù)原型中才是上佳的解決辦法。當(dāng)然,我們也可以對(duì)通用實(shí)例進(jìn)行加值以實(shí)現(xiàn)對(duì)某種對(duì)象的聲明,這可能需要利用常量對(duì)內(nèi)部結(jié)構(gòu)加以定義。接下來(lái),從常量中選取一個(gè),進(jìn)而為函數(shù)賦值的做法也就使得該函數(shù)在某種意義上具備了變量值。或者我們也可以對(duì)加值進(jìn)行聲明,并使用整個(gè)函數(shù)的結(jié)果為其賦值,這就相當(dāng)于假設(shè)該函數(shù)是對(duì)象的惟一組成部分。

以上方法都不是特別理想。在V8以及Mozilla出品的TraceMonkey這些最新一代JavaScript引擎中,大部分的工作負(fù)載都是在將那些由不理想的指令所帶來(lái)的“垃圾代碼”轉(zhuǎn)化為少些混亂、多些嚴(yán)謹(jǐn)?shù)挠行虼a。

所以從理論角度出發(fā),運(yùn)行有Dart虛擬機(jī)的瀏覽器也許可以擺脫性能表現(xiàn)低下的噩夢(mèng),因?yàn)镴S翻譯程序所要處理的代碼已經(jīng)更為有序且易于理解。當(dāng)然這只是理論。

Dart重新將類的概念以Java程序員們最為熟悉的方式引入。其中幾項(xiàng)調(diào)整使得定義工作更為簡(jiǎn)潔;舉例來(lái)說(shuō),反向指針可能會(huì)被用于成員函數(shù)的聲明(例如用 Ball.throw (this.distance)代替 Ball.throw (distance); this.distance = distance;)。而接口也將為那些通用于多個(gè)類的屬性及函數(shù)提供支持;一個(gè)類啟用一個(gè)接口,這不正是大家一直以來(lái)所期望的結(jié)果么。

至今仍不明確:事件的觸發(fā)

對(duì)那些始終關(guān)注Dart項(xiàng)目的JS開(kāi)發(fā)人員們來(lái)說(shuō),其中一大戲劇性結(jié)構(gòu)變化也許會(huì)激起他們的廣泛反對(duì)。JavaScript函數(shù)通常是被粘貼于整個(gè)頁(yè)面當(dāng)中的,而且盡管其中某部分充當(dāng)?shù)氖莔ain()函數(shù),大多數(shù)函數(shù)仍然是由瀏覽器事件所觸發(fā),包括window.onload。而在Dart中,每個(gè) <script>元素本身都是個(gè)自成一體的環(huán)境。類成員以及變量在默認(rèn)情況下都是公有的(在Dart語(yǔ)言中沒(méi)有“public”這一關(guān)鍵字),盡管Dart的本意并不是將公有屬性推廣到整個(gè)頁(yè)面——而只是在腳本內(nèi)部。

“在JavaScript當(dāng)中,跨多個(gè)腳本標(biāo)簽的聲明都在同一個(gè)命名空間內(nèi)被結(jié)合在一起,”Sigmund Cherem與Vijay Menon今早在文章中聲稱。“但在Dart中,同一個(gè)腳本標(biāo)簽中的代碼無(wú)法直接訪問(wèn)被定義在另一個(gè)標(biāo)簽中的代碼。如果某個(gè)腳本需要讀取來(lái)自不同URL的代碼,它必須通過(guò)#import方能實(shí)現(xiàn)。每個(gè)腳本標(biāo)簽要想運(yùn)行都必須定義自己的main()接入點(diǎn)才行。

main()函數(shù)是DOMContentLoaded事件的事件句柄。否則我們也不會(huì)看到早期的說(shuō)明文檔中提到任何關(guān)于Dart代碼如何像JavaScript代碼那樣響應(yīng)瀏覽器事件的聲明。如果Dart根本沒(méi)有做出任何變化,那么可以預(yù)見(jiàn)的是在DOM載入前不會(huì)有任何代碼付諸運(yùn)行;main()函數(shù)也就可以直接留空,而讓其它函數(shù)負(fù)責(zé)響應(yīng)事件——這跟原先JavaScript所做的混蛋事完全沒(méi)有區(qū)別。

不過(guò)想想就知道,上述計(jì)劃將會(huì)為多線程處理帶來(lái)相當(dāng)簡(jiǎn)單而直接的處理方法:同一個(gè)頁(yè)面可以擁有多個(gè)腳本,而虛擬機(jī)也能夠使其并行運(yùn)行…再次強(qiáng)調(diào),這只是根據(jù)早期說(shuō)明文檔進(jìn)行的理論層面分析。瀏覽器目前還不具備多線程翻譯程序,而Dart也還沒(méi)有明確指出其JS翻譯程序中擁有如此猛料。綜上所述,斷言Dart能夠調(diào)用這一目前尚不存在的功能實(shí)在是為時(shí)尚早。

然而,從結(jié)構(gòu)角度來(lái)看,Dart已然具備了諸多優(yōu)勢(shì),因此我們有足夠的理由相信它很可能將支持多款瀏覽器,甚至包括IE。目前還有待觀察的是Dart將如何沖擊瀏覽器上的HTML 5應(yīng)用程序或者是“本機(jī)應(yīng)用程序”。我們將繼續(xù)關(guān)注本周從谷歌自家的開(kāi)發(fā)者大會(huì)上所傳出的新消息。

原文鏈接:http://www.readwriteweb.com/hack/2011/10/dart-is-to-javascript-as-c-is.php

【編輯推薦】

  1. Google宣布結(jié)構(gòu)化編程語(yǔ)言Dart的設(shè)計(jì)目標(biāo)
  2. Google的Dart語(yǔ)言真的能取代JavaScript嗎?
  3. Google強(qiáng)推Dart語(yǔ)言替代JavaScript 意欲何為?
  4. 谷歌宣布推出Dart編程新語(yǔ)言
  5. JavaScript大辯論:實(shí)施改進(jìn)還是徹底放棄
責(zé)任編輯:陳貽新 來(lái)源: 51CTO
相關(guān)推薦

2022-02-24 20:25:36

RxJSJQuery前端開(kāi)發(fā)

2016-12-04 16:36:18

NoSQL數(shù)據(jù)庫(kù)大數(shù)據(jù)

2018-05-15 16:13:40

機(jī)器學(xué)習(xí)

2016-01-08 13:07:11

SDN安全SOC安全操作中心

2018-07-09 15:40:04

IOT機(jī)器學(xué)習(xí)應(yīng)用

2022-04-24 16:39:06

數(shù)字化轉(zhuǎn)銀行中臺(tái)

2014-01-13 09:08:50

云計(jì)算云安全

2011-11-28 13:07:45

WindowsPhonAndroid

2014-05-15 11:41:32

2025-02-07 08:32:56

AI場(chǎng)景Oracle

2012-02-02 17:30:42

2020-12-01 14:51:20

邊緣計(jì)算

2009-08-19 10:09:21

C#和C++

2009-08-28 10:14:45

C#內(nèi)存泄露

2019-11-14 16:17:04

區(qū)塊鏈信息安全

2011-05-18 18:05:47

C#C++

2011-05-18 17:56:38

C#C++

2009-08-25 14:42:41

由C++轉(zhuǎn)向C#

2009-08-19 14:26:58

C# JavaScri

2009-09-04 17:34:11

C#CC++
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)