BBS水木清华站∶精华区

 
                            龙 ? 小 熊 ? 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 

BBS水木清华站∶精华区