十大最有影响力编程书籍
2011-09-07 21:13
197 查看
As voted on by several thousand members of StackOverflow in this article
here.
The original question was:
"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 MasterBy
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 EditionBy
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 AlgorithmsBy
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 CodeBy
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 SoftwareBy
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.
here.
The original question was:
"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 MasterBy
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 EditionBy
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 AlgorithmsBy
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 CodeBy
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 SoftwareBy
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.
相关文章推荐
- 编程开发人员最具有影响力的十一本书籍 .
- 编程开发人员最具有影响力的十一本书籍
- 编程开发人员最具有影响力的十一本书籍 .
- 编程开发人员最具有影响力的十一本书籍 .
- 编程人员必读书籍推荐-最具有影响力书籍
- 编程开发人员最具有影响力的十一本书籍 .
- 推荐一些经典书籍,100多本,Linux编程和Linux内核也很多
- 对程序员最有影响力的书籍
- 免费的编程中文书籍索引
- Game 编程中毒十大症状
- [摘录]这几本游戏编程书籍你看过吗?
- 移动开发者的自学宝典:十大在线编程学习网站
- 程序员必须注意的十大编程禁忌
- 推荐11本对程序员最有影响力的书籍
- spring 编程入门十大问题解答
- 计算机编程的经典书籍
- 73 本免费的语言无关的优秀编程书籍汇总
- win32编程的经典书籍
- 经典编程书籍(C++, 网络, Windows, Linux)
- 2005年度Java十大新技术和新产品-Java基础-Java-编程开发