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