想了解南昌javascript嗎?想了解新手上路學習JavaScript引擎實現(xiàn)——路線圖?? 嗎?......本文帶你一探究竟。
1.新手上路學習JavaScript引擎實現(xiàn)——路線圖
最近在知乎接連看到幾個相關(guān)的問題:如何閱讀 的代碼?新手應(yīng)該如何讀Google V8引擎源代碼?Kinoma XS6 是一款怎樣的 引擎?這些問題都是試圖從閱讀源碼著手去學習引擎的實現(xiàn)的。然而,對新手而言,直接從一個復(fù)雜的實現(xiàn)的源碼著手,不可避免的是事倍功半的做法。要學習引擎的實現(xiàn),就跟學習其它東西一樣,*是循序漸進的來,先打好基礎(chǔ),再去結(jié)合現(xiàn)實學習主流實現(xiàn)。我推薦的學習路線是:臨?。合日覀€比較簡單語言的簡單解釋器實現(xiàn),以它為模子,自己抄一個解釋器出來。這個過程中可以學習到編程語言的解釋器的基本構(gòu)造,特別是其組成部分的劃分,以及這些組成部分在工作流程中各自處于什么位置。整個流程串起來之后,思路就會清晰許多,接下去學習就可以有針對性了。鞏固:臨摹的時候必然只能一個解釋器的各部分的一種特定的簡單實現(xiàn)。然而其背后的原理是怎樣的,同一個組件是否有別的更先進(或不同取舍)的做法,就需要進一步學習了。此時可以針對各部分去讀不同的書,例如編譯原理、GC、對象模型等方面。學習原理,鞏固基礎(chǔ),拓展視野。規(guī)范:到此有足夠基礎(chǔ)可以著手學習/實現(xiàn)真正的引擎了。但在動手之前,應(yīng)該熟讀規(guī)范,了解到底語言所要求的語義是怎樣的,解決“是什么”的問題。覺得新的 2015太復(fù)雜的話,從 5.1學習是個不錯的開始。有個帶注解的 5.1規(guī)范特別適合學習:Annotated 5.1。另外,更喜歡閱讀中文文檔的同學可以看@呂康豪大大在評論區(qū)推薦的 ES5 - HTML5 Chinese Interest Group Wiki,那是他的怨念喔。接軌:把前面學習的知識都結(jié)合起來,按照規(guī)范實現(xiàn)自己的簡單的引擎;或者此時也可以去閱讀現(xiàn)成的比較簡單的引擎的實現(xiàn),但還是自己動手寫過一次能有更深刻的理解。進階:到這個階段,再去閱讀現(xiàn)實中主流的、高性能的引擎的源碼,就可以做到有的放矢了。快速閱讀一下官方文檔,瀏覽一下代碼組織結(jié)構(gòu),就應(yīng)該能大概掌握一個實現(xiàn)的大致架構(gòu)。然后再抓住引擎實現(xiàn)可能存在的重要設(shè)計點去看看,就可以知道這個實現(xiàn)在每個部分都選擇了哪些實現(xiàn)方式。其實就像搭積木一樣,每個部分能有什么選擇都了然于心,這樣再去深入到細節(jié)讀代碼,就可以事半功倍的提取出自己想要知道的信息了。很多時候看目錄結(jié)構(gòu)和源碼文件名就能大概猜到需要的信息在哪個文件里,進去確認一下就好。我推薦這個學習路線,是因為上面的階段我全都走過一遍了,親測有效。國內(nèi)有不少從事引擎研發(fā)的同行們,不知道大家的學習路線又是怎樣的呢?以Kinoma XS6的討論為例,我從看到問題到開始閱讀源碼,到寫完整個回答,總共只用了幾分鐘。這個回答就包含了我在閱讀一個引擎實現(xiàn)時會首先關(guān)注的設(shè)計點,抓住這些點去閱讀源碼就可以很快的了解這個實現(xiàn)的全貌、其大體的設(shè)計思路和取舍方向。換言之,我并不需要為了了解它的概況而需要去從細節(jié)開始學習很多新的知識,而只要在已有知識里印證這個實現(xiàn)在可能的實現(xiàn)方式里到底選擇了哪些。另外也想提一下大大的lv5 引擎(/iv · GitHub)。它的發(fā)展歷程見證了的成長,也跟上面的學習路線中“規(guī)范-接軌-進階”的過程完全吻合——一開始lv5是作者邊讀ES5規(guī)范邊用最直觀的方式把規(guī)范實現(xiàn)出來的。整個流程走通之后,他就開始從開源的主流引擎學習先進的做法,并逐步實現(xiàn)到lv5當中,漸漸將其發(fā)展成一個頗為實在的、現(xiàn)代的實現(xiàn)。我在這里也提到過lv5:準大三,計算機專業(yè)如何確定工作方向? - 的回答我從2012年開始其實也有斷斷續(xù)續(xù)積累一些文字,希望能規(guī)整到一個系統(tǒng)的知識體系下寫成一本書,以便更好的把這些相關(guān)知識傳播給大家。不過目前這個計劃還在早期階段,暫時不接受催稿謝謝…雖然書離成形還尚遠,但我曾經(jīng)試過把積累的內(nèi)容的一部分匯總起來發(fā)出來:[鏈接帖] 各引擎的簡介,及相關(guān)資料/博客收集帖,歡迎大家參考和提建議。這系列帖子已好久沒更新就是了…話說回來,萬事開頭難,按照上面的路線,得找個最初的臨摹對象來學習??梢赃x擇的對象有很多,不過這里我還是想再次推薦『プログラミング言語を作る』(中文版《自制編程語言》)一書。我在這里發(fā)過一個簡介帖:《自制編程語言》集中討論帖其中的Crowbar語言及其解釋器實現(xiàn),就是我想推薦作為入門臨摹的對象。欲知它究竟是怎樣設(shè)計與實現(xiàn),且看下回分曉 ^_^
上述文章了解到關(guān)于新手上路學習JavaScript引擎實現(xiàn)——路線圖?? ,讓我們對南昌javascript 有一個直觀的認知。我們發(fā)現(xiàn),作為一個優(yōu)秀的Java程序員是多么的自豪。