如何在大腦中模擬代碼運行

如何在大腦中模擬代碼運行
昨天,終於在筆記本上安裝好了ubuntu,這次沒有使用虛擬機。這樣,可以在ubuntu中使用圖形界面相關功能了。在win10下通過wsl使用ubuntu,不能使用圖形界面,感覺功能很受限。
心裏一想起這事,就覺得很興奮。
但睡在牀上,不想起牀,於是就把自己讀過的代碼在大腦中進行回憶。
我比較喜歡的是oz寫的grep程序,因爲有一本書《精通正則表達式》,這本書,講得很透,我當時就有了讀正則表達式源碼的想法。
再想起grep.c調regex.c文件中,的程序。
在regex.c中實現了,把正則表達式先翻譯中中間僞碼,再後再用中間僞碼去進行匹配。匹配的過程是貪心法。像'a[1=9]*b'去匹配'ax1987b'時,[1-9]*能匹配完'1987b',但'b'無法匹配,於是要回退。我再想regex.c中那個remactch是如何實現的,我不記得代碼的具體邏輯,但想個大概,心裏覺得無比充實。
接着就想gawk1.10,因爲這個程序同樣矮小精悍,awk1.c,awk2.c,awk3.c,awk.y,awk.h,regex.c等幾個核心文件。其中awk.h中定義了語法樹和變量存儲的一些核心數據結構。而awk.y中,是進行語法分析的bison文件。真正進行邏輯處理的,就是awk1.c,awk2.c,awk3.c這幾個文件。其中awk1.c建立了一個程序處理的框架。先處理begin塊,再讀入一行,處理,直到處理完文件,最後處理end塊。而具體的處理邏輯在awk2.c的一個函數中。至於awk3.c主要是一些內部函數的實現。
於是,又細細的思考每個文件的內容。心想,這些牛人真厲害,這麼複雜的軟件都能弄出來。
想完gawk1.01,接着想想ruby0.49,因爲ruby049和gawk101很像,真的很像。因此,有了gawk101的經驗,我想分析ruby049不會太難的。而且,我想,matz肯定是深入讀完了gawk的源碼,再改進的。如何做個比較,ruby049和gawk101中的regex.c,regex.h兩個文件會完全一樣。
ruby049目前,我連main函數都沒找到,只找到了個rb_main,那肯定不是C語言的main,可能入口函數是eval.c中的main。
我先不着急找,我已經對array.c,ruby.c這兩個文件有了大致的瞭解。讀源碼時,自己本身對ruby也不熟悉,還要接着學習ruby的使用。因此,源碼一下看不懂,我也不着急。
何況,我會在真實的機器上安裝ubuntu了,我還可以好好的折騰ubuntu操作呢,我想,三星的本子只有4G內存,用ubuntu是夠了。但能否再提升效率?另外,好好的折騰ubuntu,反正搞壞了,就重裝系統。這個想法好。一旦我不怕丟失什麼,失敗成本小,這樣,有敢於折騰了。
在linux上開發,真是很幸福的事。因爲可以讀各種源碼,我現在倒不那麼想買macbook了,等我有錢了,我就再買一臺16G,i7的電腦再安裝ubuntu,我發現ubuntu下面玩,真的很爽。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章