i*****f 发帖数: 578 | 1 这个是根据著名的stackoverflow讨论总结的最具影响力编程书籍。与大家分享。BTW,
其中的CLRS introduction to alg我认为很适合用python.
http://www.internetsecuritydb.com/2011/09/top-ten-most-influent
programming.html
"If you could go back in time and tell yourself to read a specific book
at the beginning of your career as a developer, which book would it be."
Since it was first posed back in 2008, this question has become the
second most popular question of all time on StackOverflow.
Here are the results:
Code Complete (2nd Edition)
By Steve McConnell
Published: July 7, 2004
Publisher: Microsoft Press
Amazon Link: here
Widely considered one of the best practical guides to programming, this
book has been helping developers write better software for more than a
decade. The second edition was updated with leading-edge practices and
hundreds of new code samples, illustrating the art and science of
software construction. Capturing the body of knowledge available from
research, academia, and everyday commercial practice, McConnell
synthesizes the most effective techniques and must-know principles into
clear, pragmatic guidance. No matter what your experience level,
development environment, or project size, this book will inform and
stimulate your thinking, and help you build the highest quality code.
The Pragmatic Programmer: From Journeyman to Master
By Andrew Hunt and David Thomas
Published: October 30, 1999
Publisher: Addison-Wesley Professional
Amazon Link: here
Like any other craft, computer programming has spawned a body of wisdom,
most of which isn't taught at universities or in certification classes.
Most programmers arrive at the so-called tricks of the trade over time,
through independent experimentation. In The Pragmatic Programmer, Andrew
Hunt and David Thomas codify many of the truths they've discovered
during their respective careers as designers of software and writers of
code. The cool thing about this book is that it's great for keeping the
programming process fresh. The book helps you to continue to grow and
clearly comes from people who have been there.
Structure and Interpretation of Computer Programs, Second Edition
By Harold Abelson, Gerald J Sussman and Julie Sussman
Published: August 1, 1996
Publisher: McGraw-Hill Science/Engineering/Math
Amazon Link: here
Teaches readers how to program by employing the tools of abstraction and
modularity. The authors' central philosophy is that programming is the
task of breaking large problems into small ones. You will learn a thing
or two about functional programming, lazy evaluation, metaprogramming
(well, metalinguistic abstraction), virtual machines, interpreters, and
compilers. The book was originally written for the famous 6.001, the
introductory programming course at MIT. It may require an intellectual
effort to read, but the reward is well worth the price.
The C Programming Language (2nd Edition)
By Brian W Kernighan and Dennis M Ritchie
Published: April 1, 1988
Publisher: Prentice Hall
Amazon Link: here
Concise and easy to read, it will teach you three things: the C
programming language, how to think like a programmer, and the C abstract
machine model (what's going on "under the hood"). Co-written by Dennis
Ritchie, the inventor of the C programming language.
Introduction to Algorithms
By Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford
Stein
Published: July 31, 2009
Publisher: The MIT Press
Amazon Link: here
Introduction to Algorithms, the 'bible' of the field, is a comprehensive
textbook covering the full spectrum of modern algorithms: from the
fastest algorithms and data structures to polynomial-time algorithms for
seemingly intractable problems, from classical algorithms in graph
theory to special algorithms for string matching, computational
geometry, and number theory. The revised third edition notably adds a
chapter on van Emde Boas trees, one of the most useful data structures,
and on multithreaded algorithms, a topic of increasing importance.
Refactoring: Improving the Design of Existing Code
By Martin Fowler, Kent Beck, John Brant and William Opdyke
Published: July 8, 1999
Publisher: Addison-Wesley Professional
Amazon Link: here
Refactoring is about improving the design of existing code. It is the
process of changing a software system in such a way that it does not
alter the external behavior of the code, yet improves its internal
structure. With refactoring you can even take a bad design and rework it
into a good one. This book offers a thorough discussion of the
principles of refactoring, including where to spot opportunities for
refactoring, and how to set up the required tests. There is also a
catalog of more than 40 proven refactorings with details as to when and
why to use the refactoring, step by step instructions for implementing
it, and an example illustrating how it works The book is written using
Java as its principle language, but the ideas are applicable to any OO
language.
Design Patterns: Elements of Reusable Object-Oriented Software
By Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (Also
known as "The Gang of Four")
Published: November 10, 1994
Publisher: Addison-Wesley Professional
Amazon Link: here
Design Patterns is a modern classic in the literature of object-oriented
development, offering timeless and elegant solutions to common problems
in software design. It describes patterns for managing object creation,
composing objects into larger structures, and coordinating control flow
between objects. The book provides numerous examples where using
composition rather than inheritance can improve the reusability and
flexibility of code. Note, though, that it's not a tutorial but a
catalog that you can use to find an object-oriented design pattern
that's appropriate for the needs of your particular application--a
selection for virtuoso programmers who appreciate (or require)
consistent, well-engineered object-oriented designs.
The Mythical Man-Month: Essays on Software Engineering
By Frederick P. Brooks
Published: August 12, 1995
Publisher: Addison-Wesley Professional
Amazon Link: here
Few books on software project management have been as influential and
timeless as The Mythical Man-Month. With a blend of software engineering
facts and thought-provoking opinions, Fred Brooks offers insight for
anyone managing complex projects. These essays draw from his experience
as project manager for the IBM System/360 computer family and then for
OS/360, its massive software system. Now, 20 years after the initial
publication of his book, Brooks has revisited his original ideas and
added new thoughts and advice, both for readers already familiar with
his work and for readers discovering it for the first time.
Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd
Edition)
By Donald E. Knuth
Published: July 17, 1997
Publisher: Addison-Wesley Professional
Amazon Link: here
The bible of all fundamental algorithms and the work that taught many of
today's software developers most of what they know about computer
programming. One of the book's greatest strengths is the wonderful
collection of problems that accompany each chapter. The author has
chosen problems carefully and indexed them according to difficulty.
Solving a substantial number of these problems will help you gain a
solid understanding of the issues surrounding the given topic.
Furthermore, the exercises feature a variety of classic problems.
Compilers: Principles, Techniques, and Tools (2nd Edition)
By Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman
Published: September 10, 2006
Publisher: Prentice Hall
Amazon Link: here
Known to professors, students, and developers worldwide as the "Dragon
Book," the latest edition has been revised to reflect developments in
software engineering, programming languages, and computer architecture
that have occurred since 1986, when the last edition published. The
authors, recognizing that few readers will ever go on to construct a
compiler, retain their focus on the broader set of problems faced in
software design and software development.
Follow @dodgy_coder |
|