Sunday, January 11, 2009

经典书收集 (持续更新)

  1. Computer Foundamental

    • The Art of Computer Programming  作者: Donald E. Knuth
      这个不用多说什么了.

    • Introduction to Algorithms  作者: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein
      传说中的MIT教材. 传说中的CLRS.

    • Computer Systems: A Programmer's Perspective  作者: Randal E. Bryant and David R. O'Hallaron
      想从一个初级程序员晋升为高级程序员吗? 请看这本书.

    • Programming Pearls  作者: Jon Bentley
      编程猪与鸡, :)

    • Hacker's Delight  作者: Henry S. Warren
      我看到的第一本Amazon五星书籍, 涉及很多位运算. Amazon上有人戏称这本书是"The Art of Computer Programming, Volume 0: Bit Manipulation".

    • Introduction to the Theory of Computation  作者: Michael Sipser

  2. Mathematics

    • What Is Mathematics? An Elementary Approach to Ideas and Methods  作者: the late Richard Courant, Herbert Robbins, and Ian Stewart

    • Discrete Mathematics and Its Applications  作者: Kenneth Rosen

    • Probability and Statistics  作者: Morris H. DeGroot and Mark J. Schervish

    • Concrete Mathematics: A Foundation for Computer Science  作者: Ronald L. Graham, Donald E. Knuth, and Oren Patashnik

  3. Operating System
  4. 在操作系统原理领域有两本书被公认为经典, 一本是Tanenbaum的《Modern Operating Systems》, 另一本是Abraham Silberschatz, Peter B. Galvin以及Greg Gagne的《Operating System Concepts》. 这里之所以提出来, 是因为我最初学习操作系统时在选书上走了一点"弯路". 后一本我没看过, 不便评论, 但Tanenbaum的那本我想应该提醒一下各位. 首先, 如果你是一个操作系统的初学者, 那我极不推荐你看第一本. 纵观操作系统的书籍, 那些最典型, 同时也是最基础的知识, 比如process, memory, I/O, file system, 是肯定会包含的. Tanenbaum的那本也不例外, 但在某些概念上的阐述就不是很清晰了, 会让初学者感到没有解释清楚, 也许是大牛觉得那些都是很简单的东西, 不用说的太详细. 此外书中的一些术语也不同于国内以及其它国外教材, 比如process control block, 在这本书中却叫做process table. 恐怕《Modern Operating Systems》书中的最大亮点是占了全书近1/3篇幅的关于Linux, Windows Vista以及Symbian (这里是以第三版为例, 其它版本可能不同) 的分析与介绍, 但在我看来这有点鸡肋, 毕竟关于上述三种操作系统的分析都有很不错的对应的书籍, 区区100来页怎能很好地理解一个完整的操作系统呢? 不过, 最后一章中作者讲述的作为一个操作系统设计者应该注意的地方还是值得一读的. 所以没有必要拘泥于权威, 我推荐初学者看下面这本书, 至少在我看来也是很不错的, Amazon上虽然褒贬不一, 但只有真正看了才能知晓其中的好坏.

    • Operating Systems: Internals and Design Principles  作者: William Stallings

  5. UNIX/Linux

    • Advanced Programming in the UNIX Environment  作者: W. Richard Stevens and Stephen A. Rago
      UNIX的圣经.

    • The Art of Unix Programming  作者: Eric Steven Raymond
      讲述UNIX哲学.

    • UNIX Network Programming, Volume 1: The Sockets Networking API  作者: W. Richard Stevens, Bill Fenner, and Andrew M. Rudoff

    • Understanding the Linux Kernel  作者: Daniel P. Bovet and Marco Cesati Ph.D.

  6. Network

    • 计算机网络  编著者: 谢希仁
      这是我推荐的为数不多的国内出版的书籍, 推荐的理由很简单, 适合初学者, 文字清晰易懂, 能让你在最短的时间内了解计算机网络的全貌, 为以后更深入的学习做好铺垫.

    • Computer Networks  作者: Andrew S. Tanenbaum
      这是一本巨细无遗的书籍, 可以让你从里到外, 非常透彻地了解计算机网络, 很适合于那些已经具有计算机网络基础的人用来深入学习.

    • TCP/IP Illustrated, Volume 1: The Protocols  作者: W. Richard Stevens

    • TCP/IP Illustrated, Volume 2: The Implementation  作者: Gary R. Wright and W. Richard Stevens

  7. Database

    • Fundamentals of Database Systems  作者: Ramez Elmasri and Shamkant B. Navathe

  8. Compiler

    • Compilers: Principles, Techniques, and Tools  作者: Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman
      传说中的龙书.

  9. Software Engineering

    • The Mythical Man-Month: Essays on Software Engineering  作者: Frederick P. Brooks

    • Code Complete: A Practical Handbook of Software Construction  作者: Steve McConnell

    • The Pragmatic Programmer: From Journeyman to Master  作者: Andrew Hunt

    • Design Patterns: Elements of Reusable Object-Oriented Software  作者: Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides

  10. Assembly

    • 80X86 IBM PC and Compatible Computers: Assembly Language, Design, and Interfacing  作者: Muhammad Ali Mazidi and Janice Gillispie-Mazidi

  11. C

    • The C Programming Language  作者: Brian W. Kernighan and Dennis M. Ritchie
      传说中的K&R.

    • C Traps and Pitfalls  作者: Andrew Koenig

  12. C++

    • The C++ Programming Language  作者: Bjarne Stroustrup
      C++之父大作. 这本书不是很适合初学者, 如果你不了解C++, 那么你在看这本书的前几节时会感到异常难懂, 甚至会因为缺乏耐心而放弃. 不过这绝对是C++的圣经.

    • C++ Primer  作者: Stanley B. Lippman, Josée Lajoie, and Barbara E. Moo
      适合初学者, 浅显, 讲解透彻, 入门好教材.

    • C++ Templates: The Complete Guide  作者: David Vandevoorde

    • C++ Coding Standards: 101 Rules, Guidelines, and Best Practices  作者: Herb Sutter

    • Effective C++: 55 Specific Ways to Improve Your Programs and Designs  作者: Scott Meyers

    • Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions  作者: Herb Sutter

    • Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library  作者: Scott Meyers

    • Programming: Principles and Practice Using C++  作者: Bjarne Stroustrup

  13. Java

    • Core Java  作者: Cay S. Horstmann and Gary Cornell

    • Thinking in Java  作者: Bruce Eckel

  14. JavaScript

    • JavaScript: The Definitive Guide  作者: David Flanagan
      一本全面介绍JavaScript的书, 你可以从中学到很多基础, 同时这本书也可以作为一本reference.

  15. Shell Script


  16. Version Control

    • Version Control with Subversion  作者: C Pilato, Ben Collins-Sussman, and Brian Fitzpatrick
      作者在网上放了免费的版本, 参见我的另一篇日志: 学习了SVN

    • Pro Git  作者: Scott Chacon

No comments:

Post a Comment