违法建设认定:The Top 9? In a Hacker’s Bookshelf (黑客书架上的九本书...

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 22:25:26
The Top 9½ In a Hacker’s Bookshelf (黑客书架上的九本书)

Copy from:http://grok-code.com/11/the-top-9-in-a-hackers-bookshelf/

Every hacker should have a good solid dead tree library to draw ideas from and use as reference material. This list has a bit of everything - textbooks you will encounter at top tier computer science universities, books giving insight into the industry, and references you shouldn’t be caught without. It is a list of hackers’ classics.

The Mythical Man Month: Essays on Software Engineering - Anniversary Edition

by Fredrick P. Brooks

This is a classic on the human elements of software engineering first published in 1975. The technology has changed a lot in this time, but the human elements of software engineering have remained the same. It is a wealth of insight, often quoted, and very well known in the industry. “The Mythical Man Month” describes many commonly occurring problems in large and mid-scale development projects and breaks them down. Here are a two of the book’s important principles:

The Mythical Man-Month: Adding manpower to a late software project makes it later.

No silver bullet: There is not a single strategy, technique, or trick that can exponentially raise the productivity of programmers.

I recommend this book not only for programmers, but for anyone managing a software project. Project managers and programmers alike will appreciate Brooks’ clear, well-thought out points.

The C Programming Language (2nd Edition)

by Brian W. Kernighan and Dennis M. Ritchie

Commonly referred to as just K&R, this is the canonical C reference book. It’s to the point without being too terse; its detailed enough for a beginner to understand without being bloated. K&R tells you exactly what you need. Nothing more, nothing less. At 274 pages this is one of the most compact languages references you will find. I dare a Java author to come up with something so sweetly concise.

This book is recommended for anyone learning C, and for anyone looking for a C reference book. K&R is a must read for anyone who is writing a language reference or technical literature.

If you have never programmed before, K&R might not be the best place to start out, but still doable if you are motivated. Beginners might also consider getting a copy of “The C Answer Book,” which gives detailed explanations of solutions to the K&R exercises.

Structure and Interpretation of Computer Programs (2nd Edition)

by Harold Abelson and Gerald Jay Sussman

SICP is used in entry level computer science classes at many top tier universities including the University of California - Berkeley and the Massachusetts Institute of Technology. It uses the Scheme language to introduce many powerful paradigms like recursion, lambda notation, abstraction, and interpreted languages.

I found this book incredibly dense when I first read it for an introductory CS class, and there was still much to learn from a reread several years later after I had a better grasp of the ideas presented here.

If you didn’t have the opportunity to use this book in the classroom, I would recommend picking it up to see what you missed, especially if you haven’t used any of the Lisp dialects extensively.

Code Complete 2: A Practical Handbook of Software Construction

by Steve McConnell

“Code Complete 2″ is a highly regarded book about software construction, where McConnell defines construction as mainly programming and debugging, along with some elements of construction planning, detailed design, unit testing, integration, and integration testing.

The book’s focus is on writing better code. McConnell touches on a wide variety of topics including managing complexity, refactoring, coding style, and writing good comments.

This book is recommended for anyone who wants to write good solid code. It will save beginners time when learning good coding practices, and is a great refresher for programmers with years of experience who may find that over time they have developed habits that are holding them back.

Introduction to Algorithms

by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein

This is another textbook. “Introduction to Algorithms,” is probably the most popular university-level text for algorithms classes. It also serves as an excellent reference book.

Even though practically speaking most programmers shouldn’t be writing their own implementation of, say, quicksort, in a production environment, algorithms knowledge is essential for understanding what kind of asymptotic performance you can expect from libraries and your own code.

“Introduction to Algorithms,” is recommended as a reference for any developer looking to brush up on their algorithm skills. It is also recommended if you are interested in topics like NP-Completeness , randomized algorithms, or Fast Fourier Transformation. Good math skills are essential if you want to grok all parts of this book.

Design Patterns: Elements of Reusable Object-Oriented Software

by Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides

This is a catalog of different object-oriented design patterns. For each of the 23 patterns that are presented, the authors give an in-depth analysis including a motivating example for the pattern, common pitfalls and trade-offs, related patterns, and sample code in either C++ or Smalltalk. Some of the patterns covered are Singleton, Observer, Template Method, Iterator, and Proxy.

This book is a must read for intermediate or advanced developers working on object-oriented code. Coders that are new to object-oriented design would be best served by mastering the basics of an object-oriented language and digging in to non-trivial project before attempting to learn all of the patterns presented here, otherwise the patterns aren’t likely to “stick.”

Programming Pearls (2nd Edition)

by Jon Bentley

This is a great book for learning how to approach problems. Each of the 15 chapters presents a different task, such as sorting phone numbers, creating anagrams, or doing text searches. The problem is defined, and then Bentley walks through different solutions, providing a discussion and clear analysis of each solution, with a breakdown of programming principles at the end.

“Programming Pearls,” contains some very clever ideas, and would be of some use as an algorithm reference for a small class of problems, but the take away of the book is something much bigger and more general: how to approach and solve problems from the perspective of an engineer.

I recommend this book to anyone who enjoys working though programming brain teasers.

Compilers: Principles, Techniques, and Tools

by Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman

“Compilers: Principles, Techniques, and Tools,” is commonly known simply as the “dragon book.” This is the standard textbook in a theoretical compilers class. It covers everything you would expect to find in a compilers text: language syntax, parsers, lexical analysis, grammars, intermediate code generation, runtime environments, optimization, etc. If you haven’t done a lot of work with these topics, be prepared to learn a whole slew of new termonolgy and concepts: deterministic finite automata, finite state automata, LR parsing, and more.

I particularily enjoyed parts of the dragon book that get down and dirty into the mathematical notation and theory - and this is large theme throughout the book. If you find regular expressions and state machines facinating you will really enjoy the book. On the other hand, if you are looking for a text that will introduce modern, practical compiler implementation details you may find the dragon book a bit lacking. In those respects the dragon book is starting to show its age (this version was copyrighted in 1986).


Unix Power Tools, Third Edition

by Shelley Powers, Jerry Peek, Tim O’Reilly, and Mike Loukides

This is one of the many great books from the O’Reilly collection. “Unix Power Tools,” weighs in at a hefty 1200 pages, and is full of descriptions of Unix command line tools, usage cases, and shell script syntax examples for all of the major shells.

“Unix Power Tools,” is a great reference book and is fairly well organized into self-contained chapters. If you find yourself reading this book from cover to cover you are an amazing specimen of geekdom.

Much of the information contained within this book can be found more quickly with a Google search, but sometimes its nice to have a dead tree reference as well.

This is one of the few books that is valuable for beginners and experts alike. Everyone from a complete Unix newbie to a seasoned Systems Administrator has something to gain from “Unix Power Tools.”

The Ultimate Hitchhiker’s Guide: Five Complete Novels and One Story

by Douglas Adams

Well this book isn’t technically about hacking, but your geek card is hereby revoked if you haven’t at least read this “increasingly inaccurately named,” Hitchhiker’s Trilogy. It contains all 5 books in the Trilogy: “The Hitchhiker’s Guide to the Galaxy,” “The Restaurant at the End of the Universe,” “Life, The Universe and Everything,” “So Long, and Thanks for All the Fish,” and “Mostly Harmless,” plus the short “Young Zaphod Plays it Safe.”

Be entertained. Discover the answer to life, the universe, and everything. Learn how to make a Pan Galactic Gargle Blaster. And most of all don’t panic!

This edition is bound in beautiful black leather and has a silk ribbon bookmark sewn into it. It’s like reading a very nice Bible, only more believable. (Mandatory disclaimer before any trolls find me: That was a joke.)

That’s it for my top 9½. What would you put in yours?

每一位黑客都需要一个坚实的图书馆来寻找灵感以及查找参考资料。这儿的列表能给你一些你想要的东西,里面既有计算机科学的顶级大学教材,也有对业界的真知灼见,还有你不可或缺的参考书籍。它囊括了黑客的经典著作。

人月神话:软件工程评述-周年版

Fredrick P. Brooks著

这本论述软件工程中人的因素的经典著作出版于1975年。这些年来,技术已经发生了很大的变化,但是人的因素还是和原来一样让人头痛。这是一本有深刻洞察力的书籍,也是一本在业界非常著名,常常被引用的书籍。《人月神话》概括了许多在大中型项目中经常遇到的,也是非常致命的问题。它提出了2条著名的准则:

人月神话:向一个已经延后的项目中投入更多的人力资源只会让它更延后
没有银弹:没有一种策略,技术或者技巧可以极大地提高程序员的生产力
我不仅向程序员推荐这本书,也想任何一个项目管理人员推荐这本书。项目经理和程序员都会喜欢布鲁克斯清楚而明晰的观点。

C 程序设计语言(第二版)


这是一本权威的C语言参考书籍,人们通常叫它K&R。它无比精炼,同时也能恰到好处地给初学者提供足够的信息。K&R提供的信息刚好是你需要的,不多也不少。274页的篇幅是你说能发现的参考书中最紧凑的。我敢说Java的作者是很难写出如此简明扼要的著作。

这本书适合任意一个学习C语言或者想寻找C语言参考书的人。K&R也是任何一位想撰写语言参考或者技术著作的人必读的书目。

如果你没有任何的编程经验,K&R不太适合做为起点。但是如果你足够有冲劲的话,它还是能让你学到不少东西。初学者需要去买一本答案,它提供了所有练习的详细解释。

计算机程序设计与解释 (第二版)

Harlod Abelson和Gerald Jay Sussman著

SICP是一本被很多顶级高校,诸如加州大学伯克利分校,麻省理工学院等,使用的入门书籍。它用Scheme语言介绍了许多强大的范例,比如递归,lamda表达式,抽象以及解释性语言。

我发现这本书做为入门教材是难以想象的厚重。我工作了几年并且对这些东西有了更深的了解以后,再来重新读这本书,仍然学到了很多东西。

如果你在课堂上没用到这本书,我推荐你把它找来仔细看看自己遗漏了什么,特别是你没用使用过LISP这样的语言的话。

代码大全2:软件架构的实用手册

Steve McConnell著

《代码大全2》是一本在软件架构方面得到高度评价的书。McConnell在书中定义了主要的编程和调试的架构,也阐述了一些架构设计,详细设计,单元测试,整合和整合测试的内容。

这本书的主要目的是让你写出更好的代码。McConnell涉及了包括管理软件复杂度,重构,代码风格和写出优美的注释等方方面面的内容。

这本书推荐给任何一个想写出健壮的代码的人。当你学习到了良好的代码实践,那么你就会节约很多起步的时间;同时,它对于有多年经验的程序员也能帮助他们改变自己不好的开发习惯。

算法简介

Thomas H. Cormen,Charles E. Leiserson,Ronald L. Rivest 和 Clifford Stein著

这是另外一本教材。《算法简介》也许是大学中使用的最多的算法教材。它同时也是一本非常好的参考书。

尽管在实际情况中大部分程序员在生产环境中都不会自己去写诸如快速排序这样的算法实现,但是算法知识是了解你所应用的库以及你自己代码实际效率的基础。

《算法简介》被推荐给任何一个想完善自己算法技巧的开发人员,它也被推荐给那些对NP完备性,随机算法,快速傅立叶变换等课题感兴趣的人。阅读这本书也需要良好的数学知识。

设计模式:可复用的面向对象软件的原则

Erich Gamma,Richard Helm,Ralph Johnson和John M. Vlissides著

这本书阐述了各种面向对象的设计模式。对于书中23种模式的每一种,作者都给出了深度分析,这些分析包括清晰的示例,常见的缺陷,相关的模式,用C++或者SmallTalk写的示例代码。这些模式涵盖了单件模式,观察者模式,模板方法模式,迭代器模式和代理模式。

这本书对于使用面向对象语言的中级或者高级开发者是必读书目。刚刚进入面向对象开发的开发人员最好在掌握了面向对象语言以及在非实验性项目中深入实践以后再来学习里面的模式。否者你学到的东西不可能是很牢靠的。

编程珍珠 (第二版)

Jon Bentley著

这本书在学习解决问题的技巧方面非常突出。15章的每一个章节都对应着一个任务,例如排序电话号码,创建回文词或者搜索文本。Bentley先定义问题,然后再提出不同的解决方案,提供了讨论和对每个解决方案清晰的分析,最后再给出了编程的基本原则。

《编程珍珠》包含了一些非常聪明的主意,它们可以用来做为解决一些小问题的时候做为参考。但是这本书更有用的地方是如何从工程师的角度解决问题。

我把这本书推荐给每一位享受编程工作的人。

编译器:原则,技术和工具

Alfred V. Aho, Ravi Sethi 和Jeffrey D. Ullman著

《编译器:原则,技术和工具》通常被叫做“龙书”(封面上有一条红色的龙)。它是编译原理课堂上的标准图书。它涵盖了你想知道的编译器的各方面:文法,分析器,词法分析,语法,中间语言的产生,运行时环境,优化等等。如果你对这些东西还没有足够的了解的话,那么你就要准备去学习一些新的术语和概念,比如确定性有限自动机,有限状态自动机,LR剖析器等等。

我很喜欢龙书的各部分并且对里面的数学概念和理论很感兴趣(它们贯穿了整本书)。如果你很喜欢正则表达式和状态机,那么你会很喜欢这本书。另外一方面,如果你想知道一些现代编译器的实现原理,你可能无法在里面找到你所需要的东西。龙书是1986年出版的,不能涵盖这些现代的话题。

Unix强大工具 第三版

Shelley Powers,Jerry Peek,Tim O' Reilly和Mike Loukides著

这本书是O'Reilly出版社出版的很多伟大著作中的一本。《Unix强大工具》达到了1200页,完全描述了Unix下面命令行工具,用法,脚本语法示例。

《Unix强大工具》是一本组织的非常好的参考书。如果你依次读下去,你会发现自己会变成让人惊讶的计算机瘾君子典型代表。

这本书里面大部分内容都可以在Google上面搜索到,但是有时候我们也需要这样一本很好的参考书。

这本书是为数不多的适合于初学者和专家的书籍之一。不管是Unix新手还是有多年经验的系统管理员都能从这本书获益。

便车旅行者指南终极收藏版:5部完整的小说和一个故事

Douglas Adams著

这不是一本技术书籍。但是如果你没读过这部便车旅行者三部曲,你就不可能摘掉计算机瘾君子的帽子。它其实包含了5本书,《银河便车指南》,《宇宙尽头的旅馆》,《生活,宇宙和一切》,《再见,谢谢那些鱼》,《大部无害》,再加上一篇短篇小说《小柴法德谨慎行事》

在发现对生活,宇宙和一切的答案中找到愉悦。学习如何制作Pan Galactic Gargle Blaster(这应该是一种饮料,但是不知道怎么翻译。出处在这儿:http://ywsl.com/bbs/bbsshow.aspx?id=42780

The Hitch Hiker's Guide to the Galaxy also mentions alcohol. It says that the best drink in existence is the Pan Galactic Gargle Blaster.It says that the effect of a Pan Galactic Gargle Blaster is like having your brains smashed out by a slice of lemon wrapped round a large gold brick.
),而这一切都是毫不痛苦的。

这个版本有漂亮的黑色皮革封面,还有丝带书签。阅读的时候就好像在读一本很好的圣经,而且还更可信。(我要在某些喜欢争辩的人发现我之前收回我的话,这只是一个玩笑而已啦)

这就是9部半书籍,你会把哪些放在你的书架上?