Wednesday, November 18, 2009


- Andrew Tannenbaum's book

- Modern Operating Systems (3rd Edition) by Andrew S. Tanenbaum (Hardcover - Dec 21, 2007)

- Operating Systems Design and Implementation (3rd Edition) by Andrew S. Tanenbaum and Albert S. Woodhull (Hardcover - Jan 14, 2006)

- Structured Computer Organization (5th Edition) by Andrew S. Tanenbaum

- The Linux Programmer's Toolbox (Paperback) ~ John Fusco

- Introduction to Algorithms, Third Edition by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein (Hardcover - Sep 30, 2009)

- code complete

- The Pragmatic Programmer: From Journeyman to Master (Paperback) by Andrew Hunt (Author), David Thomas (Author)

- Structure and Interpretation of Computer Programs, Second Edition (Hardcover)

- C Programming: A Modern Approach, 2nd Edition (Paperback) K. N. King

- Code: The Hidden Language of Computer Hardware and Software by Charles Petzold

- A Practical Introduction to Computer Architecture (Texts in Computer Science) by Daniel Page

- The Jargon File - The New Hacker's Dictionary

- Pragmatic Programmer

- Clean Code: A Handbook of Agile Software Craftsmanship (Paperback)

- High Performance MySQL: Optimization, Backups, Replication, and More (Paperback)

- High Performance Web Sites: Essential Knowledge for Front-End Engineers

- Building Scalable Web Sites: Building, scaling, and optimizing the next generation of web applications

- Leading Programmers Explain How They Think

- 腦力密集產業的人才管理之道 Peopleware: Productive

- Code Reading: The Open Source Perspective (v. 1)
- Code Quality: The Open Source Perspective

至此,讀者或會發現,trace 別人的 code 往往必需了解作者的習慣和技巧。所幸好用的習慣的技術,會被大多數人接受、採用。也因此,要想 trace 別人的 code ,自己本身也需要有一定的 coding 的技術,並透過閱讀別人的 code ,累積一些大多數常用的技巧和習慣。幾年前有一本書,名為 Code Reading (by by Diomidis Spinellis)。這本書應該加入這些材料才對。


Personally, Structure and Interpretation of Computer Programs is by far the most influential programming book I have ever read.

Some classics like Code Complete, Refactoring and Design Patterns teach you the effective working habits and the painstaking details of the trade. Others, like Peopleware, Psychology of Computer Programming and The Mythical Man-Month delve into the psychosocial aspects of software development. Numerous others deal with algorithms. These books all have their place.

SICP, however, is in a different league. It is a book that will enlighten you. It will evoke in you a passion for writing beautiful programs. Moreover, it will teach you to recognize and appreciate that very beauty. It will leave you with a state of awe and an unquenchable thirst to learn more. Other books may make you a better programmer; this book will make you a programmer.

And in the meanwhile, you will learn a thing or two about functional programming (side effects won't be introduced until chapter three), lazy evaluation, metaprogramming (well, metalinguistic abstraction), virtual machines, interpreters, and compilers.

Some think that SICP is not a beginner's book. Personally, I probably wouldn't have appreciated the book in full without having some programming experience under my belt, but I would definitely recommend it for a beginner. The book is, after all, written for the famous 6.001, the introductory programming course at MIT. It may require an intellectual effort (especially if you do the exercises - and you should), but the reward is well worth the price.

No comments: