自己動手寫編譯器之序

《自己動手寫編譯器、鏈接器》

因爲工作的關係,我經常和各企業的技術負責人交流。話題談着談着常常會轉到他們目前共同的難題——技術人員招聘。這時不少人都會感慨,中國能做系統軟件開發的技術人員太少,這方面的人太難找了。隨着中國企業的發展,做系統和平臺的需求不斷增加,這種供需矛盾將越來越明顯。
究其原因,很容易想到的是我們的高校教育、課程設置。美國頂尖大學計算機系基礎課程教學裏都非常重視項目實踐,操作系統課往往要真的開發一個像模像樣的操作系統原型,編譯器課也真的要自己設計並實現一門有創新性的小語言……
在計算機科學的各門課程中,編譯器的設計實踐有着特殊的重要性。“龍書”的主要作者、哥倫比亞大學教授Alfred V. Aho曾經列舉過編譯器實踐有諸多好處[1]
 能讓學生領悟到理論與實踐的完美結合。比如編譯原理所涵蓋的正則表達式和自動機,在各種場合的應用是極其廣泛的,對正則的掌握程度,從某種意義上講甚至可以作爲技術人員水平的一種尺度。
 深入探索計算思維的多樣性。與人類語言一樣,不同類型的編程語言其實代表了不同的思維方式。只用過命令式語言的人可能沒有想到,開啓了大數據領域的Map與Reduce,其實在函數式語言是一種非常常見的東西。
的確,深入瞭解編譯器和編譯原理,對於技術人員更好地理解和掌握自己最常用的語言和系統,從而提升自己的內力是有極大好處的。另一方面,隨着DSL(領域特定語言)的流行,需要技術人員開發自己語言的機會也越來越多。
然而,編譯原理是計算機科學裏公認比較難的一門課。雖然目前國外比較重要的編譯理論教材(比如龍書的《編譯原理》、虎書《現代編譯原理》的C語言和Java版本、鯨書《高級編譯器設計與實現》)基本上都有了中文版和英文影印版,但這些書往往更偏重理論,而且門檻較高,不太適合指導一線技術人員實踐和自學。我認識的一位美籍華人技術專家Ronald Mak在Wiley出版過一本基於Java的“Writing Compilers and Interpreters”,比較貼近實踐,但部頭較大,而且沒有看到中文版。
偶然的機會,我得知王博俊在工作之餘,寫了一本以簡化的C語言爲例子講述編譯器和鏈接器實踐的書。瀏覽了初稿之後,感覺全書內容簡明,容易上手,又不失全面和系統,正好彌補了這方面的空白。特向大家推薦。

[1] http://www.cs.columbia.edu/~aho/Talks/10-03-12_SIGCSE.pdf 

CSDN暨《程序員》雜誌總編劉江

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