動態語言和虛擬機實現, 暨介紹一下我設計的一個新型的動態語言(2)

正式有了虛擬機這個中間態, 很多事情就方便很多了. 我們要看到這一點, 另外, 也要看到不夠好的地方 .

比如這個虛擬機本身就是有待商榷的. 我們討論一下java的虛擬機有一種字節碼,. .NET平臺的虛擬機有一個il, il非常強大, 看着有統一一切的聲勢. 這兩種字節碼, 都是對傳統機器代碼的一種抽象,
大家有興趣的話, 可以 反編譯一下看看. 都是類似彙編的一種平板式的代碼, 通過call, jump來實現函數調用, 代碼跳轉. 這些jump, 對程序員來說是隱藏的. 所以實際沒有什麼問題, 不過實現虛擬機的時候, 仍舊是要做jump這件事情來做到跳轉.

而實際上, 代碼並非是平板一塊, 代碼是一種樹狀結構.



用跳轉來實現樹狀結構是一種比較傳統的辦法, 也比較直接簡單. 不過, 事情發展到現在. 我看了一些scheme的lisp語法, S-EXP 的理論, 我覺得, 虛擬機可以做的更加微內核, 高性能, 高擴展.

就是用S-EXP的方式來組織虛擬機, 將會做到一個更加微內核, 從而得到更高的性能, 同時還得到了很高的擴展性. 正如lisp的介紹裏說的, 連+-*/都不是語言本身的. 理論上而言, 呵呵.
另外, 也有一些額外的好處, 就是S-EXP的中間代碼. 記住, 不是bytecode, 在載入的時候, 會有非常高的速度.

當然, 我們在這裏絕不是再去實現一個scheme或者lisp, 據說性能上比較差的. 我們要做的事情, 是對scheme進行一些改造提取, 在表現層, 我選擇python的一些改造.

scheme+python, 這個組合, 絕對能夠大放異彩.

我在後續的文章裏面會記錄我在實現這個虛擬機的一些思路和準備工作.
呵呵, 作爲一個專業的程序員, 我們不能太着急寫代碼的. 需要把設計做好, 理論指導實踐, 永遠是真理啊..>







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