国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

地表最強程序員,再次出手了!

0
分享至

Linus Torvalds是個非常厲害的程序員,因為他有兩個名揚天下的作品:Linux和Git。

如果單論技術(shù)能力,有一個人,也許比Linus更強。

我在看他主頁項目列表的時候,感覺頭都炸了。

他開發(fā)了著名的模擬器QEMU和音視頻處理庫FFmpeg,僅僅是這兩項就超越絕大部分程序員了,他還寫過C編譯器,OpenGL實現(xiàn),LTE軟基站,JS引擎,讓Linux在瀏覽器中跑起來,甚至還創(chuàng)造了計算圓周率的世界紀錄......

也就是說,這位老兄在操作系統(tǒng)、模擬器、多媒體、計算機圖形學、編譯器、編程語言、通信、甚至數(shù)學等領域跳來跳去,一年開發(fā)一個我一輩子都寫不出的軟件!

他寫的程序還總是比別的程序小幾個數(shù)量級,快幾個數(shù)量級!

這也太變態(tài)了吧?!

不得不承認,這個世界上真的有天才的存在。

他就是法國程序員Fabrice Bellard。


Bellard還有個重要的特點,寫了一個厲害軟件,開創(chuàng)了一個領域,就把工作交給社區(qū)維護,自己拍拍屁股走人,挑戰(zhàn)另外一個難題。

這不,最近Fabrice Bellard又出手了,這次他帶來了一個叫做MicroQuickJS的開源項目。

這也是個JavaScript引擎,不過面向的是嵌入式設備。

我去項目主頁看了一下,好家伙,MicroQuickJS引擎運行時僅需10K的內(nèi)存就可以編譯和運行JavaScript程序,在這么小的空間下,運行速度還接近QuickJS (這也是Bellard寫的另外一個輕量級的JS引擎)。

才10K! 想想Node.js,想想Chrome V8,再想想Electron,這種極致的優(yōu)化能力實在是可怕。

怪不得Redis之父antirez說:如果這東西2010年就出現(xiàn)了,Redis的腳本語言就不會是Lua,而是JavaScript!


為什么 MicroQuickJS 可以這么???

因為它不是在“移植 JavaScript”,而是在“重新定義 JavaScript 在嵌入式設備上該是什么樣子”。

1. 只支持 ES5 的一個“精簡版”

MicroQuickJS 支持的不是我們熟悉的那個“什么都能寫”的 JavaScript,而是一個被刻意約束過的版本。

舉幾個例子你就能理解它的取舍邏輯:

- 只支持 strict mode,不再兼容歷史包袱,行為更簡單、更可預測,也更容易優(yōu)化。

- 數(shù)組不允許有“空洞”也就是說,不存在 arr[100] = 1,前面 99 個元素卻不存在的情況。這樣數(shù)組就可以用更緊湊的方式存儲,而不是像散彈槍一樣到處打洞。

- 不支持直接 eval,eval 會讓代碼在運行時突然“變身”,對內(nèi)存管理和優(yōu)化來說是噩夢。直接砍掉,整個引擎都清爽了。

- 日期只支持 Date.now(),不搞復雜的時區(qū)、格式化、歷史包袱,只提供“當前時間戳”這個嵌入式最常用的功能。

- 字符串大小寫轉(zhuǎn)換只支持 ASCII, 不支持完整 Unicode 的大小寫映射,換來的是代碼量和內(nèi)存占用的大幅下降。

這些限制看起來有點“怪”,但你會發(fā)現(xiàn)它們都有一個共同目標: 確定、簡單、省內(nèi)存。

2. 垃圾回收:不聰明,但非常狠

在內(nèi)存只有幾十 KB 的環(huán)境里,內(nèi)存碎片比“內(nèi)存不夠”更致命。

MicroQuickJS 的垃圾回收策略非常直接:追蹤式+壓縮式GC。

第一層:追蹤式 GC

它從一組“根對象”開始,把所有還能被訪問到的對象標記出來,剩下的一次性全清。

不需要在每個對象上維護引用計數(shù),不用擔心循環(huán)引用。

每個對象可以做得非常小,只需要幾個 bit 的標記信息

第二層:壓縮 GC

更狠的是:活下來的對象也不會原地不動。在回收過程中,它會把所有存活對象重新排列、擠到一塊連續(xù)的內(nèi)存區(qū)域里。

內(nèi)存不再被切成一地碎片,后續(xù)分配變得非常簡單,對小內(nèi)存設備極其友好

MicroQuickJS 完全不用系統(tǒng)的 malloc,而是自己實現(xiàn)了一套內(nèi)存分配器,這在嵌入式世界里非常重要,因為你永遠不知道系統(tǒng)自帶的分配器會偷偷浪費多少內(nèi)存。

3. 用“變態(tài)”的方式表示 JS 的值和對象

這里是 Bellard 真正“炫技”的地方。

在 MicroQuickJS 里,一個值(數(shù)字、字符串、對象、函數(shù)等)統(tǒng)統(tǒng)只有一個 CPU 字長。

在 32 位系統(tǒng)上,就是 32 位,這意味著:所有值都能直接放進寄存器,傳參、賦值、判斷都極其簡單,內(nèi)存布局非常規(guī)整。

對象被壓縮到了極限,一個 JavaScript 對象,最少只占 3 個 CPU 字,在 32 位系統(tǒng)上就是 12 字節(jié),這已經(jīng)是能做到的極限了,只夠存對象的基本類型信息和指向?qū)傩员淼闹羔槨?/p>

屬性本身也不便宜,每個屬性至少 3 個 CPU 字,所以“隨便給對象亂加屬性”在嵌入式里是很奢侈的事。這也解釋了為什么語言層面要對動態(tài)性做那么多限制。

字符串也不走尋常路,內(nèi)部存儲用的是 UTF-8(更省空間),對外仍然表現(xiàn)為 JavaScript 熟悉的 UTF-16 語義,也就是說,存的時候省,語義上不破壞 JS 的規(guī)則。

4. 標準庫直接“焊死”在 ROM 里

在很多 JS 引擎中,啟動時要創(chuàng)建 Object、Array、Math 等一大堆對象,這些對象會常駐內(nèi)存,占用 RAM。

MicroQuickJS 直接換了個思路: 編譯時就把這些標準庫對象生成好,以只讀數(shù)據(jù)的形式,固化進程序鏡像,放在 ROM 里。

運行時不需要再創(chuàng)建,只要引用即可,啟動極快,RAM 占用極低。

總之,在嵌入式世界里,JavaScript 不再是“越全越好”,而是“剛剛好,能用就行”。

杰夫·阿特伍德(Jeff Atwood)說過,“任何可以用 JavaScript 編寫的應用程序,最終都會用 JavaScript 編寫”。


這句話現(xiàn)在也適用于嵌入式系統(tǒng)了!

也許在不就以后,我們就能在傳感器、智能家居設備和可穿戴設備上看到JavaScript。

回到作者Bellard,他為人非常低調(diào),不拋頭露面,不寫文章,不寫書。

在互聯(lián)網(wǎng)上幾乎找不到對他直接的,深度采訪,只能找到他的一些只言片語,例如:“我經(jīng)常會厭倦一直做同樣的事情,所以我會時不時地改變一下方向。”

由于他在如此多的領域,做出了常人根本無法企及的,不可思議的成就,有人甚至懷疑他就不是一個特定的人,而是一群人以這個id來發(fā)表軟件。

我想Bellard之所以看起來像“一群人”,并不是因為他不真實,而是因為我們早已習慣了工業(yè)化軟件生產(chǎn),卻突然遇到了一個仍然生活在“個人英雄時代”的程序員。

在今天這個時代,大多數(shù)重要軟件都需要龐大的團隊、路線圖、測試、運營;而 Bellard 的作品,總是像從真空中掉下來一樣:沒有預熱、沒有宏大宣言,代碼一放出來,世界就不得不承認:規(guī)則被改寫了。

這樣的人實在是太罕見,實在是太神奇了!

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
37歲福原愛宣布三胎出生:母子健康平安,產(chǎn)后照曝光,前夫已祝福

37歲福原愛宣布三胎出生:母子健康平安,產(chǎn)后照曝光,前夫已祝福

開開森森
2026-04-19 07:41:03
福建艦或在年底“畢業(yè)”,中方話里的弦外之音,美國人最好仔細聽

福建艦或在年底“畢業(yè)”,中方話里的弦外之音,美國人最好仔細聽

成視Talk
2026-04-20 09:50:45
73歲天賜父親訴說太辛苦,大女兒來家里帶妹妹,太暖心了

73歲天賜父親訴說太辛苦,大女兒來家里帶妹妹,太暖心了

童叔不飆車
2026-04-19 11:09:23
港獨、罵中國人,如今卻還想來內(nèi)地撈金,這3位香港明星令人作嘔

港獨、罵中國人,如今卻還想來內(nèi)地撈金,這3位香港明星令人作嘔

驕陽之夏明
2026-04-15 16:44:42
以牙還牙!日本戰(zhàn)艦橫穿臺海第2天,東部戰(zhàn)區(qū)出動戰(zhàn)巡東海

以牙還牙!日本戰(zhàn)艦橫穿臺海第2天,東部戰(zhàn)區(qū)出動戰(zhàn)巡東海

阿芒娛樂說
2026-04-19 02:29:16
新中國對外輸出革命史:上萬知青奔赴緬甸,結(jié)局如何?

新中國對外輸出革命史:上萬知青奔赴緬甸,結(jié)局如何?

談史論天地
2026-04-18 14:30:03
吳邦國的狂草技藝,讓書壇驚嘆不已!

吳邦國的狂草技藝,讓書壇驚嘆不已!

書畫相約
2026-04-07 07:08:05
尹正自曝把摩托車全賣了:“車牌漲價了,賺翻了,我愛摩托車”

尹正自曝把摩托車全賣了:“車牌漲價了,賺翻了,我愛摩托車”

悅君兮君不知
2026-04-18 22:21:30
開走第2輛保時捷!萊巴金娜橫掃復仇,奪賽季第2冠+生涯第13冠

開走第2輛保時捷!萊巴金娜橫掃復仇,奪賽季第2冠+生涯第13冠

全景體育V
2026-04-19 21:21:01
最后48小時,賴清德將登機離臺,大陸斬釘截鐵,蕭旭岑捅破窗戶紙

最后48小時,賴清德將登機離臺,大陸斬釘截鐵,蕭旭岑捅破窗戶紙

共工之錨
2026-04-20 08:54:25
我是天津人,全家一起來了趟上海,確實有點想不明白這四件事

我是天津人,全家一起來了趟上海,確實有點想不明白這四件事

王姐懶人家常菜
2026-04-20 03:27:17
為啥淘寶,拼多多幾塊錢的東西還能包郵?看完你就明白了!

為啥淘寶,拼多多幾塊錢的東西還能包郵?看完你就明白了!

呼呼歷史論
2026-04-10 21:17:24
張婉婷直播對齊溪開火那幾句話信息量炸了!齊溪七年不生另有隱情

張婉婷直播對齊溪開火那幾句話信息量炸了!齊溪七年不生另有隱情

小娛樂悠悠
2026-04-17 11:38:27
專家呼吁:馬上停用5種調(diào)味醬,它是腸癌催化劑!再下飯也別沾

專家呼吁:馬上停用5種調(diào)味醬,它是腸癌催化劑!再下飯也別沾

路醫(yī)生健康科普
2026-04-18 16:18:55
張豆豆曝孫楊干涉自己交友:他被好幾個朋友重創(chuàng)過

張豆豆曝孫楊干涉自己交友:他被好幾個朋友重創(chuàng)過

懂球帝
2026-04-17 10:55:07
醫(yī)生坦言:男性一旦徹底戒煙,過不了半年,身體會收獲4個改變

醫(yī)生坦言:男性一旦徹底戒煙,過不了半年,身體會收獲4個改變

陳醫(yī)生健康雜談
2026-04-20 09:24:41
網(wǎng)傳“雷軍被堵車里維權(quán)”,小米徐潔云回應

網(wǎng)傳“雷軍被堵車里維權(quán)”,小米徐潔云回應

新浪財經(jīng)
2026-04-20 00:33:19
潛伏在中國高層的大間諜,遍布軍界政界,簡直令人唏噓

潛伏在中國高層的大間諜,遍布軍界政界,簡直令人唏噓

咸説歷史
2026-04-14 14:21:44
伊朗宣布對所有商船開放霍爾木茲海峽

伊朗宣布對所有商船開放霍爾木茲海峽

環(huán)球網(wǎng)資訊
2026-04-17 21:29:34
重磅突破!以色列科學家:吸100%純氧3個月,生理倒拔20歲

重磅突破!以色列科學家:吸100%純氧3個月,生理倒拔20歲

劉曠
2026-04-19 15:27:33
2026-04-20 10:52:49
碼農(nóng)翻身 incentive-icons
碼農(nóng)翻身
有趣且硬核的技術(shù)文章
252文章數(shù) 645關注度
往期回顧 全部

科技要聞

藍色起源一級火箭完美回收 客戶衛(wèi)星未入軌

頭條要聞

失蹤女老板被找到 嫌犯曾改名整容還催警察"還我清白"

頭條要聞

失蹤女老板被找到 嫌犯曾改名整容還催警察"還我清白"

體育要聞

七大獎項候選官宣!文班或全票DPOY

娛樂要聞

章子怡!增重20斤素顏拍新片

財經(jīng)要聞

月之暗面IPO迷局

汽車要聞

外觀非常驚艷 全新一代寶馬6系有望回歸

態(tài)度原創(chuàng)

時尚
本地
游戲
旅游
教育

今年最流行的衣服竟然是它?高級又氣質(zhì)!

本地新聞

12噸巧克力有難,全網(wǎng)化身超級偵探添亂

大司馬稱不想再玩《PUBG》:打的菜還總被噴!

旅游要聞

去藝術(shù)現(xiàn)場,赴一次深度游

教育要聞

給孩子最深的滋養(yǎng):一半愛護,一半需要

無障礙瀏覽 進入關懷版