粗略讀完了本書,說實話比我想象的好。之前在學校就把基礎部分(1-10章)過了一遍,回家之后比較懶,但終於看完了,代碼也很好,可惜很多自己都沒親手敲。從消化程度來說,打算回學校之前再精讀一遍,並敲完說有代碼,因為確實值得學習!!
看完之后感覺以下幾點印象尤為深刻:
完全注重實戰
我一直不贊同完全脫離理論去實戰,因為上學期已經修完了編譯原理,所以我現在急需的就是一本純實踐的書,而這本書就是。就算介紹理論也完全是為了講解代碼!
涉及諸多語言特性
說實話,在借這本書的時候。我以為本書涉及的編譯器(准確說是解釋器)甚至沒有下學期課設的編譯器那么復雜,當時膚淺的認為就是寫一個弱類型的語言而已。看完本書之后,發現:函數、面向對象、閉包、優化、數組、中間代碼.......真是大開眼界!閉包甚至之前都沒怎么接觸。總之,就憑這一點,讀完本書的收獲就已經遠遠超出了我的預期!
啟發性的討論
本書多次拿Stone語言(本書開發的語言)和Ruby語言作比較(可能因為Ruby正是日本人發明的),也談及了JavaScript語言的一些特性,還有C語言,這些討論相當具有啟發性!有一種溫故而知新的感覺,又有一直橫看成嶺側成峰的味道(從另一個角度再認識學過的語言)。
代碼優雅、注釋詳實
就算不看本書的源代碼,對着書敲都能正確運行。因為作者借助於自己設計GluonJ使得修改代碼十分容易。而我同期在看的另一本書《瘋狂Java實戰演義》就十分混亂,僅僅對着書根本敲不出可以運行的程序!每一章結束后都能立即看見效果,並且每一章互不影響。說實話,這本書的代碼是我見過設計最優良的之一(印象中另一本《30天自制操作系統》也是日本人寫的.......)。
易於實現
之前也看過一些《自制編程語言》、《自制編譯器》但都借助了lex/yacc或者JavaCC無形中增加了成本,反正我多少有些排斥,在這方面《自己動手寫編譯器、鏈接器》一書也很不錯,全C語言,可惜代碼不那么優雅(但真的很有深度),需要極大的耐性!(尚在學習)
一箭雙雕
本書采用Java實現,而正好自己也需要此類較大型的項目練手(Java進階水平),所以除了編譯器的實踐,本書還是一次Java/設計模式的實踐。除了學到編譯器的知識,還對如何使用Java以及設計模式有了跟深刻的認識。
值得再次學習
之前看到一個說法就是提高編程能力的一個階段就是對着優秀源碼敲,感覺這個如果是一個GitHub項目,star絕對輕松破千。此外對於本書的內容,也感覺自己只學到了那表面的80%還有最精華的20%沒領悟透。所以,在回顧我理論知識后,極其有必要在從頭到尾學習一遍本書,並敲完每一行代碼。邁向高手的必經之路!
