Programming
Effective Java 中文版 豆瓣
作者: [美] Joshua Bloch 译者: 潘爱民 机械工业出版社 2003 - 1
本书介绍了在Java编程中57条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。通过对Java平台设计专家所使用的技术的全面描述,揭示了应该做什么,不应该做什么才能产生清晰、健壮的高效的代码。
本书中的每条规则都以简短、独立的小文章形式出现,这些小文章包含了详细而精确的建议,以及对语言中许多细微之处的深入分析,并通过例子代码加以进一步说明。贯穿全书的是通用的语言用法的设计模式,以及一些具有启发意义的技巧的技术。
Seven Languages in Seven Weeks 豆瓣 Goodreads
作者: [美] Bruce A·Tate Pragmatic Bookshelf 2010 - 10
Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell. With Seven Languages in Seven Weeks, by Bruce A. Tate, you'll go beyond the syntax-and beyond the 20-minute tutorial you'll find someplace online. This book has an audacious goal: to present a meaningful exploration of seven languages within a single book. Rather than serve as a complete reference or installation guide, Seven Languages hits what's essential and unique about each language. Moreover, this approach will help teach you how to grok new languages.
For each language, you'll solve a nontrivial problem, using techniques that show off the language's most important features. As the book proceeds, you'll discover the strengths and weaknesses of the languages, while dissecting the process of learning languages quickly--for example, finding the typing and programming models, decision structures, and how you interact with them.
Among this group of seven, you'll explore the most critical programming models of our time. Learn the dynamic typing that makes Ruby, Python, and Perl so flexible and compelling. Understand the underlying prototype system that's at the heart of JavaScript. See how pattern matching in Prolog shaped the development of Scala and Erlang. Discover how pure functional programming in Haskell is different from the Lisp family of languages, including Clojure.
Explore the concurrency techniques that are quickly becoming the backbone of a new generation of Internet applications. Find out how to use Erlang's let-it-crash philosophy for building fault-tolerant systems. Understand the actor model that drives concurrency design in Io and Scala. Learn how Clojure uses versioning to solve some of the most difficult concurrency problems.
It's all here, all in one place. Use the concepts from one language to find creative solutions in another-or discover a language that may become one of your favorites.
The Soul of a New Machine 豆瓣
作者: Tracy Kidder Back Bay Books 2000 - 6
Computers have changed since 1981, when Tracy Kidder memorably recorded the drama, comedy, and excitement of one companys efforts to bring a new microcomputer to market. What has not changed is the feverish pace of the high-tech industry, the go-for-broke approach to business that has caused so many computer companies to win big (or go belly up), and the cult of pursuing mind-bending technological innovations. The Soul of a New Machine is an essential chapter in the history of the machine that revolutionized the world in the twentieth century.
The Clean Coder 豆瓣 Goodreads
作者: [美国] Robert C·Martin Prentice Hall 2011 - 5
The Much-Anticipated Follow-Up to “Uncle Bob’s” Highly Praised Clean Code
Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals.
In The Clean Coder: A Code of Conduct for Professional Programmers, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship.
This book is packed with practical advice—about everything from estimating and coding to refactoring and testing. It covers much more than technique: It is about attitude. Martin shows how to approach software development with honor, self-respect, and pride; work well and work clean; communicate and estimate faithfully; face difficult decisions with clarity and honesty; and understand that deep knowledge comes with a responsibility to act.
Readers will learn
What it means to behave as a true software craftsman
How to deal with conflict, tight schedules, and unreasonable managers
How to get into the flow of coding, and get past writer’s block
How to handle unrelenting pressure and avoid burnout
How to combine enduring attitudes with new development paradigms
How to manage your time, and avoid blind alleys, marshes, bogs, and swamps
How to foster environments where programmers and teams can thrive
When to say “No”—and how to say it
When to say “Yes”—and what yes really means
Great software is something to marvel at: powerful, elegant, functional, a pleasure to work with as both a developer and as a user. Great software isn’t written by machines. It is written by professionals with an unshakable commitment to craftsmanship. The Clean Coder will help you become one of them—and earn the pride and fulfillment that they alone possess.
Formal Semantics of Programming Languages 豆瓣
作者: Glynn Winskel The MIT Press 1993 - 2
The Formal Semantics of Programming Languages provides the basic mathematical techniques necessary for those who are beginning a study of the semantics and logics of programming languages. These techniques will allow students to invent, formalize, and justify rules with which to reason about a variety of programming languages. Although the treatment is elementary, several of the topics covered are drawn from recent research, including the vital area of concurency. The book contains many exercises ranging from simple to miniprojects.Starting with basic set theory, structural operational semantics is introduced as a way to define the meaning of programming languages along with associated proof techniques. Denotational and axiomatic semantics are illustrated on a simple language of while-programs, and fall proofs are given of the equivalence of the operational and denotational semantics and soundness and relative completeness of the axiomatic semantics. A proof of Godel's incompleteness theorem, which emphasizes the impossibility of achieving a fully complete axiomatic semantics, is included. It is supported by an appendix providing an introduction to the theory of computability based on while-programs.Following a presentation of domain theory, the semantics and methods of proof for several functional languages are treated. The simplest language is that of recursion equations with both call-by-value and call-by-name evaluation. This work is extended to lan guages with higher and recursive types, including a treatment of the eager and lazy lambda-calculi. Throughout, the relationship between denotational and operational semantics is stressed, and the proofs of the correspondence between the operation and denotational semantics are provided. The treatment of recursive types - one of the more advanced parts of the book - relies on the use of information systems to represent domains. The book concludes with a chapter on parallel programming languages, accompanied by a discussion of methods for specifying and verifying nondeterministic and parallel programs.
Natural Language Processing with Python 豆瓣 Goodreads
Natural Language Processing with Python
作者: Steven Bird / Ewan Klein O'Reilly Media 2009 - 7
This book offers a highly accessible introduction to Natural Language Processing, the field that underpins a variety of language technologies, ranging from predictive text and email filtering to automatic summarization and translation. With Natural Language Processing with Python, you'll learn how to write Python programs to work with large collections of unstructured text. You'll access richly-annotated datasets using a comprehensive range of linguistic data structures. And you'll understand the main algorithms for analyzing the content and structure of written communication.
Packed with examples and exercises, Natural Language Processing with Python will help you:
* Extract information from unstructured text, to guess the topic or identify "named entities"
* Analyze linguistic structure in text, including parsing and semantic analysis
* Access popular linguistic databases, including WordNet and treebanks
* Integrate techniques drawn from fields as diverse as linguistics and artificial intelligence
Perfect for individual study, or as a classroom and workshop textbook, this book will help you gain practical skills in Natural Language Processing using the Python programming language and the Natural Language Toolkit (NLTK) open source library.
If you're interested in developing Web applications, analyzing multilingual news sources, documenting endangered languages, or if you are simply curious to have a programmer's perspective on how human language works, you will find Natural Language Processing with Python both fascinating and immensely useful.
The Mythical Man Month and Other Essays on Software Engineering Goodreads 豆瓣
作者: Frederick P. Brooks Jr. Addison Wesley 1995 - 8
Few books on software project management have been as influential and timeless asThe 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. The added chapters contain (1) a crisp condensation of all the propositions asserted in the original book, including Brooks' central argument in The Mythical Man-Month: that large programming projects suffer management problems different from small ones due to the division of labor; that the conceptual integrity of the product is therefore critical; and that it is difficult but possible to achieve this unity; (2) Brooks' view of these propositions a generation later; (3) a reprint of his classic 1986 paper "No Silver Bullet"; and (4) today's thoughts on the 1986 assertion, "There will be no silver bullet within ten years."
ggplot2 豆瓣 Goodreads
8.0 (7 个评分) 作者: Hadley Wickham Springer 2009 - 8 其它标题: ggplot2: Elegant Graphics for Data Analysis
This book describes ggplot2, a new data visualization package for R that uses the insights from Leland Wilkison''s Grammar of Graphics to create a powerful and flexible system for creating data graphics. With ggplot2, it''s easy to:
* produce handsome, publication-quality plots, with automatic legends created from the plot specification
* superpose multiple layers (points, lines, maps, tiles, box plots to name a few) from different data sources, with automatically adjusted common scales
* add customisable smoothers that use the powerful modelling capabilities of R, such as loess, linear models, generalised additive models and robust regression
* save any ggplot2 plot (or part thereof) for later modification or reuse
* create custom themes that capture in-house or journal style requirements, and that can easily be applied to multiple plots
* approach your graph from a visual perspective, thinking about how each component of the data is represented on the final plot.
This book will be useful to everyone who has struggled with displaying their data in an informative and attractive way. You will need some basic knowledge of R (i.e. you should be able to get your data into R), but ggplot2 is a mini-language specifically tailored for producing graphics, and you''ll learn everything you need in the book. After reading this book you''ll be able to produce graphics customized precisely for your problems, and you''ll find it easy to get graphics out of your head and on to the screen or page.
Programming From The Ground Up 豆瓣
作者: Jonathan Bartlett Bartlett Publishing 2004 - 7
Programming from the Ground Up is an introduction to programming using assembly language on the Linux platform for x86 machines. It is a great book for novices who are just learning to program as well as for intermediates who have never learned or mastered assembly language programming. It covers many topics skipped by other similar books, including memory management, debugging, interfacing with C, dynamic libraries, and even a bit on GUI programming.
D is for Digital 豆瓣
作者: Brian W Kernighan CreateSpace 2011 - 9
This book explains how today's computing and communications world operates, from hardware through software to the Internet and the web. It includes enough detail that you can understand how these systems work, no matter what your technical background. The social, political and legal issues that new technology creates are discussed as well, so you can understand the difficult issues we face and appreciate the tradeoffs that have to be made to resolve them.
编码的奥秘 豆瓣 Goodreads
Code: The Hidden Language of Computer Hardware and Software
9.3 (19 个评分) 作者: Charles Petzold 译者: 伍卫国 / 王宣政/ 机械工业出版社 2000 - 9
渴望交流是大多数人的天性。在本书中,“编码”通常指一种在人和机器之间进行信息转换的系统。换句话说、编码即是交流。有时我们将编码看得很神秘,其实大多数编码并非都是这样。大多数的编码都需要被很好地理解,因为它们是人类交流的基础。――《编码的奥秘》
手电筒、英国人入侵、黑色的 猫和跷跷板与计算机有什么必然联系?本书向我们展示了使用语言的一些直观方法并创造新的方法来进行相互之间的交流。此书使我们明白了这种创造性――以及我们人类对交流的迫切需求――已经促进了过去两个世纪的革新
在本书中,作者Charles Petzold用常见的对象和诸如布莱叶盲文、摩尔斯电码之类大家熟悉的语言系统,为那些曾经想知道计算机和其他智能机器内部“生命”奥秘的人们编排了一个生动的叙述。
本书由灵活的图解和生动的故事组成。沿着作者的这种介绍思路,通过本书的学习你将会发现你已经获得了一个理解今天的PC、数字多媒体和因特网的真实背景。无论你的技术水平怎样,本书都将会使你陶醉,并且很可能唤醒读者参与计算机事业。
The Elements of Computing Systems 豆瓣 Goodreads
作者: Noam Nisan / Shimon Schocken The MIT Press 2005 - 6
In the early days of computer science, the interactions of hardware, software, compilers, and operating system were simple enough to allow students to see an overall picture of how computers worked. With the increasing complexity of computer technology and the resulting specialization of knowledge, such clarity is often lost. Unlike other texts that cover only one aspect of the field, The Elements of Computing Systems gives students an integrated and rigorous picture of applied computer science, as its comes to play in the construction of a simple yet powerful computer system.Indeed, the best way to understand how computers work is to build one from scratch, and this textbook leads students through twelve chapters and projects that gradually build a basic hardware platform and a modern software hierarchy from the ground up. In the process, the students gain hands-on knowledge of hardware architecture, operating systems, programming languages, compilers, data structures, algorithms, and software engineering. Using this constructive approach, the book exposes a significant body of computer science knowledge and demonstrates how theoretical and applied techniques taught in other courses fit into the overall picture.Designed to support one- or two-semester courses, the book is based on an abstraction-implementation paradigm; each chapter presents a key hardware or software abstraction, a proposed implementation that makes it concrete, and an actual project. The emerging computer system can be built by following the chapters, although this is only one option, since the projects are self-contained and can be done or skipped in any order. All the computer science knowledge necessary for completing the projects is embedded in the book, the only pre-requisite being a programming experience.The book's web site provides all tools and materials necessary to build all the hardware and software systems described in the text, including two hundred test programs for the twelve projects. The projects and systems can be modified to meet various teaching needs, and all the supplied software is open-source.
Elements of Programming 豆瓣
作者: Alexander A. Stepanov / Paul McJones Addison-Wesley Professional 2009 - 6
Elements of Programming provides a different understanding of programming than is presented elsewhere. Its major premise is that practical programming, like other areas of science and engineering, must be based on a solid mathematical foundation. The book shows that algorithms implemented in a real programming language, such as C++, can operate in the most general mathematical setting. For example, the fast exponentiation algorithm is defined to work with any associative operation. Using abstract algorithms leads to efficient, reliable, secure, and economical software.
This is not an easy book. Nor is it a compilation of tips and tricks for incremental improvements in your programming skills. The book’s value is more fundamental and, ultimately, more critical for insight into programming. To benefit fully, you will need to work through it from beginning to end, reading the code, proving the lemmas, doing the exercises. When finished, you will see how the application of the deductive method to your programs assures that your system’s software components will work together and behave as they must.
Following key definitions, the book describes a number of algorithms and requirements for types on which they are defined that exemplify its abstract mathematical approach. The code for these descriptions—also available on the Web—is written in a small subset of C++ meant to be accessible to any experienced programmer. This subset is defined in a special language appendix coauthored by Sean Parent and Bjarne Stroustrup.
Whether you are a software developer, or any other professional for whom programming is an important activity, or a committed student, you will come to understand what the book’s experienced authors have been teaching and demonstrating for years—that mathematics is good for programming, that theory is good for practice.
Node.js开发指南 豆瓣
7.8 (12 个评分) 作者: 郭家寶(BYVoid) 人民邮电出版社 2012 - 7
Node.js是一种方兴未艾的新技术,诞生于2009年。经过两年的快速变化,Node.js生态圈已经逐渐走向稳定。Node.js采用了以往类似语言和框架中非常罕见的技术,总结为关键词就是:非阻塞式控制流、异步I/O、单线程消息循环。不少开发者在入门时总要经历一个痛苦的思维转变过程,给学习带来巨大的障碍。 而本书的目的就是帮助读者扫清这些障碍,学会使用Node.js进行Web后端开发,同时掌握事件驱动的异步式编程风格,以便进一步利用Node.js的高级特性。
The Art of Readable Code 豆瓣 Goodreads
8.7 (9 个评分) 作者: Dustin Boswell / Trevor Foucher O'Reilly Media 2011 - 10
As programmers, we've all seen source code that's so ugly and buggy it makes our brain ache. And let's be honest, we've all written code like that. With this book, you'll learn to write code that's easy to read and understand. You'll have more fun and your coworkers will love you.
The Art of Coding focuses on the nuts and bolts of programming, with simple and practical techniques you can use every time you sit down to write code. You'll find tips throughout the book, with easy-to-digest code examples, helpful illustrations, and cartoons for fun.
* Learn to pick variable names that are "dense with information"
* Organize your loops and conditionals so they're easy to understand
* Make your comments short and sweet
* Recognize when your code is doing too many things at once
* Write tests that are concise, but thorough
* Master the art of breaking hard problems into many smaller ones
Hacker's Delight 豆瓣 Goodreads
Hacker's Delight
作者: Henry S. Warren Jr. Addison-Wesley 2002 - 7
A collection useful programming advice the author has collected over the years; small algorithms that make the programmer's task easier. * At long last, proven short-cuts to mastering difficult aspects of computer programming * Learn to program at a more advanced level than is generally taught in schools and training courses, and much more advanced than can be learned through individual study/experience. * An instant cult classic for programmers! Computer programmers are often referred to as hackers -- solitary problem solvers engrossed in a world of code as they seek elegant solutions to building better software. While many view these unique individuals as "madmen," the truth is that much of the computer programmer's job involves a healthy mix of arithmetic and logic. In Hacker's Delight, veteran programmer Hank Warren shares the collected wisdom -- namely tips and tricks -- from his considerable experience in the world of application development. The resulting work is an irresistible collection that will help even the most seasoned programmers better their craft. Henry S. Warren Jr. has had a 40-year career with IBM, spanning the computer field from the IBM 704 to PowerPC. He has worked on various military command and control systems, and on the SETL project under Jack Schwartz at NYU. Since 1973 he has been in IBM's Research Division at Yorktown Heights, New York. Here he has done compiler and computer architecture work on the 801 computer and its several variants through PowerPC. Presently he is working on the Blue Gene petaflop computer project. He received his Ph.D. in Computer Science from the Courant Institute at New York University in 1980.
The Healthy Programmer 豆瓣
作者: Joe Kutner Pragmatic Bookshelf 2013 - 6
Small changes to your habits can improve your health—without getting in the way of your work. The Healthy Programmer gives you a daily plan of action that’s incremental and iterative just like the software development processes you’re used to. Every tip, trick, and best practice is backed up by the advice of doctors, scientists, therapists, nutritionists, and numerous fitness experts.
We’ll review the latest scientific research to understand how being healthy is good for your body and mind. You’ll start by adding a small amount of simple activity to your day—no trips to the gym needed. You’ll learn how to mitigate back pain, carpal tunnel syndrome, headaches, and many other common sources of pain.
You’ll also learn how to refactor your diet to properly fuel your body without gaining weight or feeling hungry. Then, you’ll turn the exercises and activities into a pragmatic workout methodology that doesn’t interfere with the demands of your job and may actually improve your cognitive skills.
You’ll also learn the secrets of prominent figures in the software community who turned their health around by making diet and exercise changes. Throughout, you’ll track your progress with a companion iPhone app.
Finally, you’ll learn how to make your healthy lifestyle pragmatic, attainable, and fun. If you’re going to live well, you should enjoy it.
The Pragmatic Programmer 豆瓣 Goodreads Goodreads
8.7 (6 个评分) 作者: Andrew Hunt / David Thomas Addison-Wesley Professional 1999 - 10
本书直击编程陈地,穿过了软件开发中日益增长的规范和技术藩篱,对核心过程进行了审视――即根据需求,创建用户乐于接受的、可工作和易维护的代码。本书包含的内容从个人责任到职业发展,直至保持代码灵活和易于改编重用的架构技术。从本书中将学到防止软件变质、消除复制知识的陷阱、编写灵活、动态和易适应的代码、避免出现相同的设计、用契约、断言和异常对代码进行防护等内容。