absmiddle 龍 / 小熊 / K&R


[資訊人園地] 龍 ? 小 熊 ? K&R ? by 穆信成 理工術語本來就多,電腦術語更多。電腦科學領域的許多經典書籍,由於常常 被提到、問到,久而久之,就有了一些簡稱、暱稱。提到我們的C 語言課本,很少 人中規中矩的說「The C ProgrammingLanguage」的,都說「K&R」。在comp.lang. scheme 裡面你不說〞SICP〞而說〞Structure and Interpretation of....〞的全 名就等於告訴人家「我是新來的」。什麼是「龍書」?什麼是「小熊書」?不知道 這些暱稱(或著該算是「黑話」?),你就落伍囉! K&R 這本The C Programming Language相信大家再也熟悉不過了。英文書常用 作者的姓氏加以稱呼,由C語言的設計者Brian W Kernighan 和 Dennis M Ritchie寫的這本書通常被稱作 K&R。這本書被視為 C 語言的聖經,所以 大家也喊它〞C Bible〞。 這本書不但是教 C 語言的課本,也是 C 語 言的定義,但也因此這本書並不好讀。當作課本很好,對於其他書籍語焉 不詳的部份可以在這裡找到明確的定義;對於要自修的讀者而言,讀這本 書就比較辛苦了。 順便一提這本書的序言:「C 是個小語言,但是在許多場合下,他可以表 現得和一些大語言一樣的好」。 龍書 Dragon book 有兩本,第一本由 Alfred V. Aho 和 Jeffrey D. Ullman 所著。這本 Principles of Compiler Design, 封面上畫著一隻紅色的, 西洋式的龍,上面寫著「Compiler設計的複雜性」,另外有一個鐵甲武士 正和它交戰,身上寫著「理論和發展工具」, 因而這本書被稱為 dragon book。 推出後反應良好。 數年後, 為了跟上 compiler 領域在這幾年間的進步, 他們兩人再加上 Ravi Sethi 又為 dragon book 出了續集 Compiler Design : Prin- ciples, Techniques, and Tools。 不僅 compiler 領域內這本書被奉為 經典,幾乎只要在和 compiler 相關的許許多多主題扯上一點關連的文件 中,包括系統程式,資料結構,正規語言等等,談到深處後可能就會要你 去參考這本 dragon book。 打棒球的人 同樣是 Ullman 的書,Principles of Database and Knowledge-Base Systems。 OS 動物園 Abraham Silberschatz 和 Peter Galvin 的Operating System Con- cepts, 在封面上用不同的動物表示不同的 OS. OS/MVS 是一隻大雷 龍,VMS 是一隻三角龍,MULTICS 則是暴龍。在這些遠古 OS 之後的 有用犀牛代表的 UNIX, 用一隻直立奔跑的蜥蜴代表的 Mach, 和畫成 老虎的 OS/2。至於 MS-DOS.... 是一隻不知道是狗還是狼的動物... 圓柱 稍稍翻閱 Computer Architecture: a Quantitative Approach, 很快就 會感覺到這本 John L.Hennessy & David A.Patterson 所著, 封面畫著 圓柱的書無疑的是計算機結構的鉅作。如同它的標題所示,這本書強調的 是硬體設計需要有數字的分析,而不是憑直覺。這本書指出了許多設計上 常見的的陷阱和謬誤,對計算機結構設計界震撼不小。同樣的作者後來出 了一本架構類似, 較簡單的入門書, 就是現在系上計算機組織課所用的 Computer Organization & Design. 小熊書 Ravi Sethi的這本Programming Languages, Concepts and Constructs是 programming language 領域的有名著作, 封面畫著一隻小熊站在床邊玩 電腦。 Foundations of Computer Science 很難得能有像 Ullman 和 Aho 等人這樣的大師合作, 來寫電腦科學概論 的書。這本書的讀者設定在初學電腦科學的學生,內容就是幾個重要的基 礎電腦科學領域,有基本的演算法,資料結構,離散數學,甚至數位系統 ,很適合在計概課當課本用。 猜猜這本書的封面是什麼樣子?中間是一隻大烏龜,四隻腳踩在四隻大象 背上––以前的神話相信世界是由這樣的大烏龜和四隻大象支撐起來的。 烏龜背上撐的是什麼呢?是一頭龍,一隻小熊,一隻三角龍,一根圓柱, 和一個打棒球的人。:) 紫皮書 在Scheme語言(一種類似LISP的語言)的領域內, 這本 Harold Abelson, Gerald J. Sussman 和 Julie Sussman 的 Structure and Interpre- tation of Computer Programs 是另一本聖經,有著好多個暱稱。按照書 名字首簡稱為〞SICP〞; 由於書皮是紫色的, 所以被簡稱為〞Purple Book〞; 由於這本書重要, 乾脆有人叫他「 The Book」! 夠狂吧。在 news groups 的 comp.lang.scheme中,你說「我在 The Book(大寫)中 讀到了....」,大家就知道是這本書了。 SICP以Scheme語言為工具,目的卻是教程式設計的觀念和原則。讀者可以 完全不懂電腦。這本書被入門者推崇著的同時,也被選作麻省理工學院的 電腦概論課教材,給許多完全不懂電腦的學生讀,可說是很難得的。內容 包括了程序抽象,資料抽象,物件導向,資料流向程式設計等等。如果嫌 課堂上的程式設計教得太死板,非常建議你一讀。 藍皮書 記得 Smalltalk 這個語言嗎? Smalltalk 原本想設計成一個簡單得可以 用來教小孩子寫程式的語言。 在八年的發展後,Xerox終於決定正式把這 個語言公開,因而造成了這一系列書籍的誕生。這本 〞Smalltalk-80 -- The Language and Its Implementation〞 由 Adele Goldberg 和 David Robson 所著,被稱為 Blue Book。和 K&R 一樣,這本書不但是課本,也 是 Smalltalk 語言的定義。 可以想見,這本書一定同樣的重要,但也同 樣的不容易讀,在讀這本書之前最好找一些介紹性的書籍當先修。 橘皮書 Smalltalk-80 -- The Interactive Programming Environment, Small- talk系列的第二本,Goldberg著。 介紹如何使用Smalltalk的程式設計環 境。 綠皮書 Glenn Krasner 所著,Smalltalk 系列的第四本,給要實作 Smalltalk的 發展者看的。 Smalltalk系列計劃中的第三本本原應該描述Smalltalk應用程式的圖形界 面和互動環境,然而並沒有成書,使得這方面缺乏正式的文件,十分可惜。 這是我目前所收集到的資料了。聽說 UNIX 界還有一本重要的「黃皮書」。有沒有 同學願意補充的呢?:) References [Abelson & Sussman 1985] Abelson, Harold & Sussman, Gerald Jay & Sussman, Julie,1985, "Structure and interpretation of computer programs", Cambridge: MIT [Aho & Sethi & Ullman 1985] Aho, Alfred V. & Sethi, Ravi & Ullman, Jeffrey D., 1985, "Compilers : principles, techniques, and tools", S.l. Addison-Wesley [Aho & Ullman 1992] Aho, Alfred V. & Ullman, Jeffrey D., 1992, "Foundations of computer science", New York: Computer Science Press [Goldberg & Robson 1983] Goldberg, Adele & Robson, David, 1983, "Smalltalk-80 : the language and its implementation", Reading, Mass. Addison-Wesley [Goldberg 1984] Goldberg, Adele, 1984, "Smalltalk-80 : The interactive programming environment", London Addison-Wesley Publishing Center [Kernighan & Ritchie 1988] Kernighan, Brian W. & Ritchie, Dennis M., 1988, "The C programming language", 2nd edition, Englewood Cliffs, N.J., Prentice Hall [Krasner 1983] Krasner, Glenn, 1983, "Smalltalk-80 : bits of history, words of advice", Reading, Mass., Addison-Wesley [Patternson & Hennessy 1990] Patternson, David A. & Hennessy, John L, 1990, "Computer architecture : a quantitative approach", San Mateo, CA, Morgan Kaufmann Publishers, Inc. [Sethi 1989] Sethi, Ravi, 1989, "Programming languages : concepts and constructs", Reading, Mass., Addison-Wesley [Silberschatz & Galvin 1994] Silberschatz, Abraham & Galvin, Peter B., 1994, "Operating system concepts", 4th edition, Reading, Mass., Addison-Wesley [Ullman 1988] Ullman Jerrrey D., 1988, "Principles of database and knowledge - base systems", Rockville, Computer Science Press
上一層目錄