偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

JavaScript會(huì)是Web開發(fā)的未來嗎?

開發(fā) 開發(fā)工具
事情要從JavaScript說起,這個(gè)曾經(jīng)的屌絲經(jīng)過多年的奮戰(zhàn),成功逆襲,成為前端之王。

[[268977]]

 1

事情要從JavaScript說起,這個(gè)曾經(jīng)的屌絲經(jīng)過多年的奮戰(zhàn),成功逆襲,成為前端之王。

這奮斗的路上,Applet, Flash, Sliverlight 等無(wú)數(shù)火熱的技術(shù)成為冤魂。

Java經(jīng)常扼腕嘆息:“真是可惜了我的Applet,要不然前后端編程都用Java,程序員就不用那么辛苦了。”

JavaScript對(duì)這種說法嗤之以鼻:“技術(shù)被廠商鎖定,內(nèi)容無(wú)法被搜索引擎搜索,程序員用你才叫見鬼。”

話雖這么說,JavaScript對(duì)自己的認(rèn)識(shí)也很深刻, 優(yōu)勢(shì)就是看起來簡(jiǎn)單,寫點(diǎn)兒簡(jiǎn)單程序就很容易上手,可是一旦深入開發(fā), 兩大硬傷就暴露出來。

一個(gè)是語(yǔ)法設(shè)計(jì),詭異的作用域,混亂的類型轉(zhuǎn)換, 蹩腳的‘面向?qū)ο?rsquo;,引起了很多語(yǔ)言的鄙視。還有一個(gè)是性能,在瀏覽器端的解釋執(zhí)行,能快到哪里去?

2

針對(duì)第一個(gè)問題,JavaScript想了很多辦法,不斷地改進(jìn),不過新版本得考慮向后兼容,兼容之前那混亂的設(shè)計(jì),這不能不說是一個(gè)巨大的包袱。

人類想到,既然這么難改,能不能開辟一條新路,把它當(dāng)成一種“低級(jí)”語(yǔ)言呢?

JavaScript雖然不情愿,但還是有人這么干了, 微軟搞了一個(gè)TypeScript,Jeremy Ashkenas發(fā)明了CoffeeScript,它們或者支持靜態(tài)類型,或者語(yǔ)法更加優(yōu)雅漂亮, 運(yùn)行的時(shí)候,把它們轉(zhuǎn)化成JavaScript就OK了,啥都不耽誤。

 

JavaScript發(fā)現(xiàn)自己成為了瀏覽器中的“匯編語(yǔ)言”!

可是JavaScript作為前端之王,積累了海量的類庫(kù)和工具鏈,想用新語(yǔ)言去完全重寫是很難的, 程序員的慣性也很大,沒有強(qiáng)烈的理由,沒人愿意學(xué)習(xí)新的語(yǔ)言,JavaScript湊合著也能用,ECMAScript 不是在不斷發(fā)展嗎?

更重要的是, **Script,最終還是要以JavaScript來運(yùn)行,速度還是上不去。

3

Node.js的橫空出世,幫助JavaScript入侵了后端開發(fā)的領(lǐng)地,讓Java十分頭疼,不是說JavaScript性能不行嗎?!

秘密在于Google的V8 引擎,其中有一項(xiàng)JIT技術(shù),可以在運(yùn)行時(shí)把一些熱點(diǎn)JS代碼翻譯成本地的機(jī)器碼來執(zhí)行,性能可不就蹭蹭上去了?

可是這種技術(shù)也不是萬(wàn)能的,由于JavaScript的動(dòng)態(tài)性,即使是強(qiáng)如V8引擎也會(huì)遇到麻煩。

人們經(jīng)常會(huì)舉這么一個(gè)例子:

  1. function add(x,y){ 
  2. return x + y; 

如果用add(1,2) 來調(diào)用, V8的JIT知道這個(gè)參數(shù)是int類型,會(huì)把這個(gè)函數(shù)編譯成本地的代碼, 參數(shù)是int型的。

由于變成了機(jī)器碼,執(zhí)行起來飛快。

 

然后人們又用 add("hello","world")來調(diào)用, V8發(fā)現(xiàn),之前編譯好的int類型的本地代碼就無(wú)法使用了,還得重新編譯成字符串參數(shù)的, 這速度一下子就降下來了。

JavaScript有點(diǎn)納悶:這性能真的那么重要嗎? 我現(xiàn)在的速度應(yīng)對(duì)前端編程不是綽綽有余?大不了我不往服務(wù)器端發(fā)展就是了!

人類的欲望是無(wú)止境的,在瀏覽器中不僅僅要做簡(jiǎn)單的計(jì)算,他們還想用大型設(shè)計(jì)軟件,用虛擬現(xiàn)實(shí),玩游戲...... 這計(jì)算量JS是應(yīng)付不過來的。

4

JavaScript性能的壓榨已經(jīng)到了極致,路已經(jīng)走到了盡頭。

前面是一座高山,想要翻過去必須發(fā)明發(fā)明新的工具。

微軟,Google, Apple這些大佬他們舉行了一次多方會(huì)談,各方就關(guān)注的問題深入地交換了意見,對(duì)各方多年來的努力表示欣賞和贊許。

大家一致表示:早就看JavaScript這小子不順眼了,一定想辦法把它“干掉”。為了取得最大的共識(shí),會(huì)談并沒有定義一套新的運(yùn)行在瀏覽器中的高級(jí)語(yǔ)言,相反,大佬們定義了一套Web時(shí)代的匯編語(yǔ)言。

其他語(yǔ)言,不管你是C++, C, Rust, Java, 只要能編譯成這個(gè)Web匯編,都可以在瀏覽器中執(zhí)行。

 

(注:Web匯編其實(shí)就是 WebAssembly這門技術(shù))

這個(gè)Web匯編的思路很有意思,它本質(zhì)上是一套需要虛擬機(jī)來執(zhí)行的字節(jié)碼,當(dāng)然是靜態(tài)類型的。

例如:這個(gè)求階乘的函數(shù),經(jīng)過編譯以后,字節(jié)碼會(huì)是這樣:

 

(點(diǎn)擊看大圖,來源:https://www.slideshare.net/jayphelps/webassembly-demystified)

Java 一看到這個(gè)方案,立刻哭暈在廁所!這和自己的Java字節(jié)碼多像啊!

看看這i32.sub, i32.mul ,一個(gè)做減法,一個(gè)做乘法,但是沒有操作數(shù)跟在后邊,操作數(shù)肯定保存在棧上, 所以這肯定是一套基于棧的虛擬機(jī)!

早知如此,何必當(dāng)初,用我的Java ByteCode, 用我的JVM, 用我的Applet多好!

繞了一圈,又回到了原點(diǎn) ! 這IT大佬的政治斗爭(zhēng)真TNND坑死人啊。

JavaScript看到這個(gè)方案也是吃了一驚,后端的老家伙們亡我之心不死,釜底抽薪,想對(duì)我實(shí)施一次珍珠港偷襲!

要不我也編譯成這"Web匯編",和他們平起平坐,同臺(tái)競(jìng)技?但是我是動(dòng)態(tài)語(yǔ)言,類型需要在運(yùn)行時(shí)確定,沒法事先編譯啊。

不過,用C/C++這種“低級(jí)”語(yǔ)言寫前端代碼,操作DOM, CSS,還不是又臭又長(zhǎng),這不是搞笑嗎?!

確實(shí)是這樣,這Web匯編并不能干掉JavaScript,語(yǔ)言之間需要協(xié)作。

Web匯編主要解決性能問題, C/C++可以寫出高性能的“Web匯編”,來實(shí)現(xiàn)圖片/視頻編輯, 游戲,流媒體,虛擬現(xiàn)實(shí),CAD軟件,可視化,仿真等代碼庫(kù),然后讓JavaScript調(diào)用就行了, 各取所需。

JavaScript還是前端之王,不可替代。

【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過作者微信公眾號(hào)coderising獲取授權(quán)】 

戳這里,看該作者更多好文

 

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2023-09-25 15:30:14

云原生云計(jì)算

2023-05-06 14:37:25

物聯(lián)網(wǎng)

2013-06-07 17:22:39

數(shù)據(jù)中心架構(gòu)數(shù)據(jù)中心

2013-11-28 09:43:46

JavaScriptWeb

2023-10-08 13:13:00

無(wú)代碼編程

2011-12-08 20:09:12

App

2013-05-22 15:43:39

谷歌web組件web開發(fā)

2021-09-29 09:11:01

人工智能工業(yè)網(wǎng)絡(luò)安全

2022-02-25 13:24:24

云計(jì)算云服務(wù)商遷移

2022-11-29 17:08:03

開發(fā)Web客戶端

2012-04-11 09:46:40

Web App

2019-02-11 13:57:26

比特幣網(wǎng)絡(luò)加密貨幣

2022-09-14 09:13:02

ASGIPythonWeb

2024-11-22 08:28:43

2023-06-13 17:34:45

人工智能智能樓宇

2011-02-21 09:10:42

WebHTML 5JavaScript

2023-07-04 07:31:12

JavaScriptWeb

2022-06-21 14:14:06

DevOpsNoOps

2016-05-24 16:19:58

公有云私有云混合云

2021-04-15 14:56:21

云計(jì)算去中心化
點(diǎn)贊
收藏

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