譯者序
算上這本《自制編譯器》,圖靈的“自制”系列應該已經有6本了。從CPU到操作系統,從編譯器到編程語言,再到搜索引擎等具體的應用,儼然已經可以自制一套完整的計算機體系了。
“自制”系列圖書都是從日本引進并翻譯出版的,本人也有幸讀過其中幾本。可能有很多讀者和曾經的我一樣對“自制”抱有疑惑:“在時間就是金錢、時間就是生命的IT行業,為什么會存在這樣的自制風潮?為什么要自制呢?CPU可以用Intel、AMD,操作系統已經有了Windows、Linux,搜索引擎已經有了Google、Yahoo,編程語言及其對應的編譯器、解釋器更是已經百花齊放、百家爭鳴……”直到翻譯完本書,我才逐漸體會到自制是最好的結合實踐學習的方式之一。拿來的始終是別人的,要吃透某項技術、打破技術壟斷,最好的方法就是自制。并且從某種程度上來說,自制也是一種創新,可能下一個Google或Linux就孕育在某次自制之中。
自制編譯器的目的是了解當前實用的編程語言、編譯器和OS的相關知識,絕對不能閉門造車。因此作者使用的C?語言是C語言的子集,實現了包括指針運算在內的C語言的主要部分,通過自制一個C?語言的編譯器,能夠讓我們了解C語言程序編譯、運行背后的細節;OS選用Linux,能夠讓我們知曉Linux上的鏈接、加載和程序庫;匯編部分采用最常見的x86系統架構。作者自制的編譯器cbc能夠運行在x86架構的任何發行版本的Linux上,編譯C?代碼并生成可執行的ELF文件。
作者青木先生在致謝中提到了Linux和GNU工具等開源軟件的開發者。這也是本書的另一大特色:充分利用開源軟件和工具。從GCC到GNU Assembler再到JavaCC以及Linux,并非每一行代碼都是自己寫的才算自制,根據自己的設計合理有效地利用開源軟件,既可以讓我們更快地看到自制的成果,又能向優秀的開源軟件學習。如果要深入學習、研究,那么開源軟件的源代碼以及活躍的社區等都是非常有幫助的。而如果把自制的軟件也作為開源軟件上傳到Github上供大家使用,并根據其他開發者提出的Pull Request不斷改進軟件,那就更好了。
最后我要由衷地感謝本書的另一位譯者絕云老師以及圖靈的編輯。還要特別感謝我的外公,一位畢生耕耘于教育出版行業的老編輯。自己能有幸參加翻譯,和從小對出版工作的耳聞目染是密不可分的。
嚴圣逸
2016年4月于上海
- Go Web編程
- MATLAB 2020 從入門到精通
- 微信公眾平臺開發:從零基礎到ThinkPHP5高性能框架實踐
- Mathematica Data Analysis
- Learning Unity 2D Game Development by Example
- Unity 2D Game Development Cookbook
- Visual Basic程序設計教程
- Learning Material Design
- Unity 2018 Augmented Reality Projects
- 從零開始學Android開發
- Learning iOS Security
- Learning Grunt
- 邊玩邊學Scratch3.0少兒趣味編程
- Java高手是怎樣煉成的:原理、方法與實踐
- HTML5 WebSocket權威指南