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

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

地表最強(qiáng)程序員,再次出手了!

0
分享至

Linus Torvalds是個(gè)非常厲害的程序員,因?yàn)樗袃蓚€(gè)名揚(yáng)天下的作品:Linux和Git。

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

我在看他主頁項(xiàng)目列表的時(shí)候,感覺頭都炸了。

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

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

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

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

不得不承認(rèn),這個(gè)世界上真的有天才的存在。

他就是法國程序員Fabrice Bellard。


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

這不,最近Fabrice Bellard又出手了,這次他帶來了一個(gè)叫做MicroQuickJS的開源項(xiàng)目。

這也是個(gè)JavaScript引擎,不過面向的是嵌入式設(shè)備。

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

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

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


為什么 MicroQuickJS 可以這么?。?/p>

因?yàn)樗皇窃凇耙浦?JavaScript”,而是在“重新定義 JavaScript 在嵌入式設(shè)備上該是什么樣子”。

1. 只支持 ES5 的一個(gè)“精簡(jiǎn)版”

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

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

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

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

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

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

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

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

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

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

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

第一層:追蹤式 GC

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

不需要在每個(gè)對(duì)象上維護(hù)引用計(jì)數(shù),不用擔(dān)心循環(huán)引用。

每個(gè)對(duì)象可以做得非常小,只需要幾個(gè) bit 的標(biāo)記信息

第二層:壓縮 GC

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

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

MicroQuickJS 完全不用系統(tǒng)的 malloc,而是自己實(shí)現(xiàn)了一套內(nèi)存分配器,這在嵌入式世界里非常重要,因?yàn)槟阌肋h(yuǎn)不知道系統(tǒng)自帶的分配器會(huì)偷偷浪費(fèi)多少內(nèi)存。

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

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

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

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

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

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

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

4. 標(biāo)準(zhǔn)庫直接“焊死”在 ROM 里

在很多 JS 引擎中,啟動(dòng)時(shí)要?jiǎng)?chuàng)建 Object、Array、Math 等一大堆對(duì)象,這些對(duì)象會(huì)常駐內(nèi)存,占用 RAM。

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

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

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

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


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

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

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

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

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

我想Bellard之所以看起來像“一群人”,并不是因?yàn)樗徽鎸?shí),而是因?yàn)槲覀冊(cè)缫蚜?xí)慣了工業(yè)化軟件生產(chǎn),卻突然遇到了一個(gè)仍然生活在“個(gè)人英雄時(shí)代”的程序員。

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

這樣的人實(shí)在是太罕見,實(shí)在是太神奇了!

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

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.

相關(guān)推薦
熱點(diǎn)推薦
出手扣下兩批軍火,又一個(gè)歐洲國家,加入制裁以色列的行列中

出手扣下兩批軍火,又一個(gè)歐洲國家,加入制裁以色列的行列中

空天力量
2026-04-20 17:09:18
19歲女孩挪用自家1700萬當(dāng)“榜一大姐” 親爹帶女兒自首:坐牢才有可能追回錢款

19歲女孩挪用自家1700萬當(dāng)“榜一大姐” 親爹帶女兒自首:坐牢才有可能追回錢款

封面新聞
2026-04-20 17:48:14
普通家庭千萬不要買“小聯(lián)排別墅”,看著很高級(jí),住著卻難受!

普通家庭千萬不要買“小聯(lián)排別墅”,看著很高級(jí),住著卻難受!

裝修秀
2026-04-20 10:50:03
胡錫進(jìn)以安全代言沃爾沃,是整個(gè)社會(huì)的恥辱

胡錫進(jìn)以安全代言沃爾沃,是整個(gè)社會(huì)的恥辱

黔有虎
2026-04-19 17:34:12
曝勇士將盡快確定主帥人選!若科爾最終離任 球隊(duì)將全面重組

曝勇士將盡快確定主帥人選!若科爾最終離任 球隊(duì)將全面重組

羅說NBA
2026-04-20 20:40:29
海外版“砍一刀”被美國消費(fèi)者瘋狂吐槽:這質(zhì)量就是中國制造?

海外版“砍一刀”被美國消費(fèi)者瘋狂吐槽:這質(zhì)量就是中國制造?

可達(dá)鴨面面觀
2026-04-20 16:18:29
澆小麥的地下水變成血紅色,誰來守護(hù)我們的生存底線?

澆小麥的地下水變成血紅色,誰來守護(hù)我們的生存底線?

記錄劉杰
2026-04-19 21:39:47
人民日?qǐng)?bào)聯(lián)合工信部緊急預(yù)警:全體iPhone用戶,請(qǐng)立刻升級(jí)系統(tǒng)!

人民日?qǐng)?bào)聯(lián)合工信部緊急預(yù)警:全體iPhone用戶,請(qǐng)立刻升級(jí)系統(tǒng)!

小柱解說游戲
2026-04-19 20:52:59
伊朗剛說不談,美國立即開打

伊朗剛說不談,美國立即開打

新民周刊
2026-04-20 11:37:54
伊朗萬噸大船沖向美軍封鎖線,特朗普暴怒!美官員直接點(diǎn)中國的名

伊朗萬噸大船沖向美軍封鎖線,特朗普暴怒!美官員直接點(diǎn)中國的名

二大爺觀世界
2026-04-20 20:36:50
親戚一家五口旅游要求接待,咋拒絕?網(wǎng)友:直接表達(dá)的態(tài)度

親戚一家五口旅游要求接待,咋拒絕?網(wǎng)友:直接表達(dá)的態(tài)度

帶你感受人間冷暖
2026-04-19 23:11:39
以軍:打死阿里·里達(dá)·阿巴斯

以軍:打死阿里·里達(dá)·阿巴斯

南方都市報(bào)
2026-04-19 21:17:31
黑粉攻擊何潤東風(fēng)波升級(jí)!博主怒撕:蹭熱度該適可而止,又老又丑

黑粉攻擊何潤東風(fēng)波升級(jí)!博主怒撕:蹭熱度該適可而止,又老又丑

小徐講八卦
2026-04-19 15:19:03
古裝劇都是騙人的:真實(shí)的古代百姓餐桌,現(xiàn)代人看一眼就想吐

古裝劇都是騙人的:真實(shí)的古代百姓餐桌,現(xiàn)代人看一眼就想吐

富貴說
2026-04-19 14:52:13
彭總在哈軍工用餐時(shí),一學(xué)員同坐,責(zé)問陳賡:他有什么資格坐這?

彭總在哈軍工用餐時(shí),一學(xué)員同坐,責(zé)問陳賡:他有什么資格坐這?

小莜讀史
2026-04-20 15:17:58
深圳大梅沙公園通報(bào)“水陸兩棲車發(fā)生側(cè)翻”:遇險(xiǎn)游客未受傷,項(xiàng)目立即停運(yùn)

深圳大梅沙公園通報(bào)“水陸兩棲車發(fā)生側(cè)翻”:遇險(xiǎn)游客未受傷,項(xiàng)目立即停運(yùn)

澎湃新聞
2026-04-20 19:38:36
睡一覺5萬沒了!全國多地爆發(fā)新型盜刷,睡前必查手機(jī)這4處

睡一覺5萬沒了!全國多地爆發(fā)新型盜刷,睡前必查手機(jī)這4處

洞見小能手
2026-04-20 16:03:26
海嘯抵達(dá)日本!日媒:請(qǐng)回想2011年大地震,立即逃生!

海嘯抵達(dá)日本!日媒:請(qǐng)回想2011年大地震,立即逃生!

揚(yáng)子晚報(bào)
2026-04-20 16:37:00
日本一觀光直升機(jī)墜入火山口,2名中國臺(tái)灣游客與1名日本機(jī)長失蹤已3月,日媒稱生還可能性極低,擬動(dòng)用無人機(jī)重機(jī)具進(jìn)入火口作業(yè)

日本一觀光直升機(jī)墜入火山口,2名中國臺(tái)灣游客與1名日本機(jī)長失蹤已3月,日媒稱生還可能性極低,擬動(dòng)用無人機(jī)重機(jī)具進(jìn)入火口作業(yè)

大風(fēng)新聞
2026-04-20 15:11:31
巴鐵1.3萬中械師進(jìn)沙特,阿聯(lián)酋提1500億進(jìn)京,中東變天了

巴鐵1.3萬中械師進(jìn)沙特,阿聯(lián)酋提1500億進(jìn)京,中東變天了

戰(zhàn)爭(zhēng)史
2026-04-20 11:04:19
2026-04-20 21:51:00
碼農(nóng)翻身 incentive-icons
碼農(nóng)翻身
有趣且硬核的技術(shù)文章
252文章數(shù) 645關(guān)注度
往期回顧 全部

科技要聞

HUAWEI Pura X Max發(fā)布 售價(jià)10999元起

頭條要聞

保價(jià)2000元機(jī)蓋運(yùn)輸中損壞 德邦僅愿以1300元回購

頭條要聞

保價(jià)2000元機(jī)蓋運(yùn)輸中損壞 德邦僅愿以1300元回購

體育要聞

阿森納已拼盡全力,但你早干嘛去了...

娛樂要聞

《八千里路云和月》田家泰暗殺

財(cái)經(jīng)要聞

利潤暴跌7成,字節(jié)到底在做什么

汽車要聞

把天門山搬進(jìn)廠?開仰望U8沖上45度坡的那刻 我腿軟了

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

游戲
手機(jī)
本地
公開課
軍事航空

《風(fēng)啟之旅》Steam在線峰值是《碧海黑帆》85倍

手機(jī)要聞

OPPO Find X9s Pro/X9 Ultra爆料匯總,新機(jī)明天見

本地新聞

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

公開課

李玫瑾:為什么性格比能力更重要?

軍事要聞

特朗普:美艦向伊朗貨船開火炸出個(gè)洞

無障礙瀏覽 進(jìn)入關(guān)懷版