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

JavaScript會是Web開發的未來嗎?

開發 開發工具
事情要從JavaScript說起,這個曾經的屌絲經過多年的奮戰,成功逆襲,成為前端之王。

[[268977]]

 1

事情要從JavaScript說起,這個曾經的屌絲經過多年的奮戰,成功逆襲,成為前端之王。

這奮斗的路上,Applet, Flash, Sliverlight 等無數火熱的技術成為冤魂。

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

JavaScript對這種說法嗤之以鼻:“技術被廠商鎖定,內容無法被搜索引擎搜索,程序員用你才叫見鬼。”

話雖這么說,JavaScript對自己的認識也很深刻, 優勢就是看起來簡單,寫點兒簡單程序就很容易上手,可是一旦深入開發, 兩大硬傷就暴露出來。

一個是語法設計,詭異的作用域,混亂的類型轉換, 蹩腳的‘面向對象’,引起了很多語言的鄙視。還有一個是性能,在瀏覽器端的解釋執行,能快到哪里去?

2

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

人類想到,既然這么難改,能不能開辟一條新路,把它當成一種“低級”語言呢?

JavaScript雖然不情愿,但還是有人這么干了, 微軟搞了一個TypeScript,Jeremy Ashkenas發明了CoffeeScript,它們或者支持靜態類型,或者語法更加優雅漂亮, 運行的時候,把它們轉化成JavaScript就OK了,啥都不耽誤。

 

JavaScript發現自己成為了瀏覽器中的“匯編語言”!

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

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

3

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

秘密在于Google的V8 引擎,其中有一項JIT技術,可以在運行時把一些熱點JS代碼翻譯成本地的機器碼來執行,性能可不就蹭蹭上去了?

可是這種技術也不是萬能的,由于JavaScript的動態性,即使是強如V8引擎也會遇到麻煩。

人們經常會舉這么一個例子:

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

如果用add(1,2) 來調用, V8的JIT知道這個參數是int類型,會把這個函數編譯成本地的代碼, 參數是int型的。

由于變成了機器碼,執行起來飛快。

 

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

JavaScript有點納悶:這性能真的那么重要嗎? 我現在的速度應對前端編程不是綽綽有余?大不了我不往服務器端發展就是了!

人類的欲望是無止境的,在瀏覽器中不僅僅要做簡單的計算,他們還想用大型設計軟件,用虛擬現實,玩游戲...... 這計算量JS是應付不過來的。

4

JavaScript性能的壓榨已經到了極致,路已經走到了盡頭。

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

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

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

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

 

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

這個Web匯編的思路很有意思,它本質上是一套需要虛擬機來執行的字節碼,當然是靜態類型的。

例如:這個求階乘的函數,經過編譯以后,字節碼會是這樣:

 

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

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

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

早知如此,何必當初,用我的Java ByteCode, 用我的JVM, 用我的Applet多好!

繞了一圈,又回到了原點 ! 這IT大佬的政治斗爭真TNND坑死人啊。

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

要不我也編譯成這"Web匯編",和他們平起平坐,同臺競技?但是我是動態語言,類型需要在運行時確定,沒法事先編譯啊。

不過,用C/C++這種“低級”語言寫前端代碼,操作DOM, CSS,還不是又臭又長,這不是搞笑嗎?!

確實是這樣,這Web匯編并不能干掉JavaScript,語言之間需要協作。

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

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

【本文為51CTO專欄作者“劉欣”的原創稿件,轉載請通過作者微信公眾號coderising獲取授權】 

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

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2023-09-25 15:30:14

云原生云計算

2023-05-06 14:37:25

物聯網

2013-06-07 17:22:39

數據中心架構數據中心

2013-11-28 09:43:46

JavaScriptWeb

2023-10-08 13:13:00

無代碼編程

2011-12-08 20:09:12

App

2013-05-22 15:43:39

谷歌web組件web開發

2021-09-29 09:11:01

人工智能工業網絡安全

2022-02-25 13:24:24

云計算云服務商遷移

2022-11-29 17:08:03

開發Web客戶端

2012-04-11 09:46:40

Web App

2022-09-14 09:13:02

ASGIPythonWeb

2019-02-11 13:57:26

比特幣網絡加密貨幣

2024-11-22 08:28:43

2023-06-13 17:34:45

人工智能智能樓宇

2023-07-04 07:31:12

JavaScriptWeb

2011-02-21 09:10:42

WebHTML 5JavaScript

2016-11-23 18:10:34

云計算

2021-05-08 13:11:58

物聯網IOT物聯網技術

2021-04-15 14:56:21

云計算去中心化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一在线 | 野狼在线社区2017入口 | 国产色婷婷久久99精品91 | 欧美11一13sex性hd | 神马久久久久久久久久 | 91在线看网站 | 在线欧美一区二区 | 成年人免费网站 | 91精品亚洲 | 日韩在线精品视频 | 欧美一区在线视频 | 欧美色999| 欧美日韩成人一区二区 | 欧美色综合网 | 精品欧美乱码久久久久久 | 成人免费激情视频 | 久久精品国产久精国产 | 久久亚洲一区二区三区四区 | www.天天操.com | 国产在线播 | 亚洲欧美日韩网站 | 国产精品色哟哟网站 | 国产精品伦一区二区三级视频 | 国产日韩欧美另类 | 午夜影院视频 | 久久国产精品无码网站 | 91精品国产乱码久久久久久久久 | 久久一区视频 | 成人三级av | 免费毛片网站在线观看 | 成人av影院| 97久久精品午夜一区二区 | 亚洲综合一区二区三区 | 色在线免费 | av在线天天| 成人毛片在线观看 | 黄色免费网站在线看 | 黄色在线免费观看视频网站 | 亚洲美女视频 | 超碰成人在线观看 | 久久久免费 |