code&program
Eloquent Javascript, 3rd Edition 豆瓣
作者: Marijn Haverbeke No Starch Press 2018 - 10
Completely revised and updated, this best-selling introduction to programming in JavaScript focuses on writing real applications.
Eloquent JavaScript dives into the JavaScript language to show programmers how to write elegant, effective JavaScript code. Like any good programming book, Eloquent JavaScript begins with fundamentals--variables, control structures, functions, and data structures--then moves on to complex topics like object-oriented programming and regular expressions. This third edition introduces new features covering the 2017 version of JavaScript, such as class notation, arrow functions, iterators, async functions, template strings, and black scope. Author Marijn Haverbeke keeps the friendly tone and easy-to-follow explanations that made the original a hit, and he adds new exercises for readers to test their skills. Eloquent JavaScript will have readers fluent in the language of the web in no time, eloquently.
The Pragmatic Programmer 豆瓣
8.9 (8 个评分) 作者: David Thomas / Andrew Hunt Addison-Wesley Professional 2019 - 9
“One of the most significant books in my life.” —Obie Fernandez, Author, The Rails Way
“Twenty years ago, the first edition of The Pragmatic Programmer completely changed the trajectory of my career. This new edition could do the same for yours.” —Mike Cohn, Author of Succeeding with Agile, Agile Estimating and Planning, and User Stories Applied
“. . . filled with practical advice, both technical and professional, that will serve you and your projects well for years to come.” —Andrea Goulet, CEO, Corgibytes, Founder, LegacyCode.Rocks
“. . . lightning does strike twice, and this book is proof.” —VM (Vicky) Brasseur, Director of Open Source Strategy, Juniper Networks
The Pragmatic Programmer is one of those rare tech books you’ll read, re-read, and read again over the years. Whether you’re new to the field or an experienced practitioner, you’ll come away with fresh insights each and every time.
Dave Thomas and Andy Hunt wrote the first edition of this influential book in 1999 to help their clients create better software and rediscover the joy of coding. These lessons have helped a generation of programmers examine the very essence of software development, independent of any particular language, framework, or methodology, and the Pragmatic philosophy has spawned hundreds of books, screencasts, and audio books, as well as thousands of careers and success stories.
Now, twenty years later, this new edition re-examines what it means to be a modern programmer. Topics range from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. Read this book, and you’ll learn how to:
Fight software rot
Learn continuously
Avoid the trap of duplicating knowledge
Write flexible, dynamic, and adaptable code
Harness the power of basic tools
Avoid programming by coincidence
Learn real requirements
Solve the underlying problems of concurrent code
Guard against security vulnerabilities
Build teams of Pragmatic Programmers
Take responsibility for your work and career
Test ruthlessly and effectively, including property-based testing
Implement the Pragmatic Starter Kit
Delight your users
Written as a series of self-contained sections and filled with classic and fresh anecdotes, thoughtful examples, and interesting analogies, The Pragmatic Programmer illustrates the best approaches and major pitfalls of many different aspects of software development. Whether you’re a new coder, an experienced programmer, or a manager responsible for software projects, use these lessons daily, and you’ll quickly see improvements in personal productivity, accuracy, and job satisfaction. You’ll learn skills and develop habits and attitudes that form the foundation for long-term success in your career.
You’ll become a Pragmatic Programmer.
Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.
The Effective Engineer 豆瓣 Goodreads
9.4 (7 个评分) 作者: Edmond Lau The Effective Bookshelf, Palo Alto, CA. 2015 - 3
The most effective engineers — the ones who have risen to become distinguished engineers and leaders at their companies — can produce 10 times the impact of other engineers, but they're not working 10 times the hours.
They've internalized a mindset that took me years of trial and error to figure out. I'm going to share that mindset with you — along with hundreds of actionable techniques and proven habits — so you can shortcut those years.
Introducing The Effective Engineer — the only book designed specifically for today's software engineers, based on extensive interviews with engineering leaders at top tech companies, and packed with hundreds of techniques to accelerate your career.
For two years, I embarked on a quest seeking an answer to one question:
How do the most effective engineers make their efforts, their teams, and their careers more successful?
I interviewed and collected stories from engineering VPs, directors, managers, and other leaders at today's top software companies: established, household names like Google, Facebook, Twitter, and LinkedIn; rapidly growing mid-sized companies like Dropbox, Square, Box, Airbnb, and Etsy; and startups like Reddit, Stripe, Instagram, and Lyft.
These leaders shared stories about the most valuable insights they've learned and the most common and costly mistakes that they've seen engineers — sometimes themselves — make.
This is just a small sampling of the hard questions I posed to them:
What engineering qualities correlate with future success?
What have you done that has paid off the highest returns?
What separates the most effective engineers you've worked with from everyone else?
What's the most valuable lesson your team has learned in the past year?
What advice do you give to new engineers on your team?
Everyone's story is different, but many of the lessons share common themes.
You'll get to hear stories like:
How did Instagram's team of 5 engineers build and support a service that grew to over 40 million users by the time the company was acquired?
How and why did Quora deploy code to production 40 to 50 times per day?
How did the team behind Google Docs become the fastest acquisition to rewrite its software to run on Google's infrastructure?
How does Etsy use continuous experimentation to design features that are guaranteed to increase revenue at launch?
How did Facebook's small infrastructure team effectively operate thousands of database servers?
How did Dropbox go from barely hiring any new engineers to nearly tripling its team size year-over-year?
What's more, I've distilled their stories into actionable habits and lessons that you can follow step-by-step to make your career and your team more successful.
The skills used by effective engineers are all learnable.
And I'll teach them to you. With The Effective Engineer, I'll teach you a unifying framework called leverage — the value produced per unit of time invested — that you can use to identify the activities that produce disproportionate results.
Here's a sneak peek at some of the lessons you'll learn. You'll learn how to:
Prioritize the right projects and tasks to increase your impact.
Earn more leeway from your peers and managers on your projects.
Spend less time maintaining and fixing software and more time building and shipping new features.
Produce more accurate software estimates.
Validate your ideas cheaply to reduce wasted work.
Navigate organizational and people-related bottlenecks.
Find the appropriate level of code reviews, testing, abstraction, and technical debt to balance speed and quality.
Shorten your debugging workflow to increase your iteration speed.
Use metrics to quantify your impact and consistently make progress.
Designing Data-Intensive Applications 豆瓣 Goodreads
9.4 (21 个评分) 作者: Martin Kleppmann O'Reilly Media 2017 - 4
Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, we have an overwhelming variety of tools, including relational databases, NoSQL datastores, stream or batch processors, and message brokers. What are the right choices for your application? How do you make sense of all these buzzwords?
In this practical and comprehensive guide, author Martin Kleppmann helps you navigate this diverse landscape by examining the pros and cons of various technologies for processing and storing data. Software keeps changing, but the fundamental principles remain the same. With this book, software engineers and architects will learn how to apply those ideas in practice, and how to make full use of data in modern applications.
Peer under the hood of the systems you already use, and learn how to use and operate them more effectively
Make informed decisions by identifying the strengths and weaknesses of different tools
Navigate the trade-offs around consistency, scalability, fault tolerance, and complexity
Understand the distributed systems research upon which modern databases are built
Peek behind the scenes of major online services, and learn from their architectures
算法设计 英文版 豆瓣
作者: [美] 乔恩·克莱因伯格(Jon Kleinberg) 伊娃·塔多斯(éva 人民邮电出版社 2019 - 5
这是一本关于算法设计和分析的教材。本书围绕算法设计进行组织,对每种算法技术选择了多个典型范例进行分析,把算法的理论跟实际存在的问题结合起来,具有很大的启发性。本书侧重算法设计思路,不再赘述算法复杂度的分析,每章都从实际问题出发,经过深入的具体分析引出相应的算法的设计思想,并对算法的正确性和复杂性进行合理的分析和论证。本书覆盖面很宽,且含有200多道精彩的习题,还扩展了PSPACE问题、参数复杂性等内容。
软件开发者路线图 豆瓣
Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman
8.2 (8 个评分) 作者: [美] Dave H. Hoover / [美] Adewale Oshineye 译者: 王江平 机械工业出版社 2010 - 9
作为一名软件开发者,你在奋力推进自己的职业生涯吗?面对今天日新月异和不断拓展的技术,取得成功需要的不仅仅是技术专长。为了增强专业性,你还需要一些软技能以及高效的学习技能。本书的全部内容都是关于如何修炼这些技能的。两位作者Dave Hoover和Adewale Oshineye给出了数十种行为模式,来帮你提高主要的技能。
本书中的模式凝结了多年的调查研究、无数次的访谈以及来自O’Reilly在线论坛的反馈,可以解决程序员、管理员和设计者每天都会面对的困难情形。本书介绍的不只是经济方面的成功,学徒模式还把软件开发看成一种自我实现的途径。读一读这本书吧,它会帮你充分利用好自己的生命和职业生涯。
厌倦了自己的工作?去找一个玩具项目来帮你重拾解决问题的乐趣吧,这叫“培养激情”。
感觉要被新知识淹没了?做点以前做过的事情,重新探索一下自己熟悉的领域,然后通过“以退为进”再次前进。
学习停滞了?那就去寻找一支由富有经验和才能的开发者组成的团队,暂时呆在里面“只求最差”。
编程珠玑 豆瓣
Programming Pearls
9.3 (20 个评分) 作者: [美] Jon Bentley 译者: 黄倩 / 钱丽艳 人民邮电出版社 2008 - 10
本书是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。作者Jon Bentley 以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员实际编程生涯中至关重要的。本书的特色是通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路。本书对各个层次的程序员都具有很高的阅读价值。.
多年以来,当程序员们推选出最心爱的计算机图书时,《编程珠玑》总是位列前列。正如自然界里珍珠出自细沙对牡蛎的磨砺,计算机科学大师Jon Bentley以其独有的洞察力和创造力,从磨砺程序员的实际问题中凝结出一篇篇不朽的编程“珠玑”,成为世界计算机界名刊《ACM通讯》历史上最受欢迎的专栏,最终结集为两部不朽的计算机科学经典名著,影响和激励着一代又一代程序员和计算机科学工作者。本书为第一卷,主要讨论计算机科学中最本质的问题:如何正确选择和高效地实现算法。..
在书中,作者选取许多具有典型意义的复杂编程和算法问题,生动描绘了历史上众大师们在探索解决方案中发生的轶事、走过的弯路和不断精益求精的历程,引导读者像真正的程序员和软件工程师那样富于创新性地思考,并透彻阐述和总结了许多独特而精妙的设计原则、思考和解决问题的方法以及实用程序设计技巧。解决方案的代码均以C/C++语言编写,不仅有趣,而且有很大的实战示范意义。每章后所附习题极具挑战性和启发性,书末给出了简洁的解答。...
重构(第2版) 豆瓣
Refactoring: Improving the Design of Existing Code,Second Edition
作者: [美] Martin Fowler 译者: 熊节 / 林从羽 人民邮电出版社 2019 - 3
本书是经典著作《重构》出版20年后的更新版。书中清晰揭示了重构的过程,解释了重构的原理和实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了60多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助开发人员一次一小步地修改代码,从而减少了开发过程中的风险。
本书适合软件开发人员、项目管理人员等阅读,也可作为高等院校计算机及相关专业师生的参考读物。
The Practice of Programming 豆瓣 Goodreads
作者: Brian W. Kernighan / Rob Pike Addison-Wesley 1999 - 2
With the same insight and authority that made their book The Unix Programming Environment a classic, Brian Kernighan and Rob Pike have written The Practice of Programming to help make individual programmers more effective and productive. This book is full of practical advice and real-world examples in C, C++, Java, and a variety of special-purpose languages. Kernighan and Pike have distilled years of experience writing programs, teaching, and working with other programmers to create this book. Anyone who writes software will profit from its principles and guidance.
A Philosophy of Software Design 豆瓣 谷歌图书 Goodreads
8.9 (11 个评分) 作者: John Ousterhout Yaknyam Press 2018 - 4
This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first introduces the fundamental problem in software design, which is managing complexity. It then discusses philosophical issues about how to approach the software design process, and it presents a collection of design principles to apply during software design. The book also introduces a set of red flags that identify design problems. You can apply the ideas in this book to minimize the complexity of large software systems, so that you can write software more quickly
程序员的呐喊 豆瓣 Goodreads
A Programmer's Rantings
7.7 (12 个评分) 作者: [美]Steve Yegge 译者: 徐旭铭 人民邮电出版社 2014 - 5
《程序员的呐喊》的作者是业界知名的程序员—来自google的steve yegge,他写过很多颇富争议的文章,其中有不少就收录在这本书中。本书是他的精彩文章的合集。
《程序员的呐喊》涉及编程语言文化、代码方法学、google公司文化等热点话题。
对工厂业界的各种现象、技术、趋势等,作者都在本书中表达了自己独特犀利的观点。比如java真的是一门优秀的面向对象语言吗?重构真的那么美好吗?强弱类型语言到底哪个更好?敏捷真的靠谱吗?程序员要不要懂数学等。另外,他还谈到了很多大公司的理念,比如亚马逊做平台为什么那么成功等。最后,本书还收录了他写的google面试攻略,这篇文章可以说为无数应试者点亮了明灯。
《程序员的呐喊》讨论的都是程序员非常关注的热点话题,内容广泛,观点独到,非常适合广大程序员阅读参考。
The Algorithm Design Manual 豆瓣
作者: Steven S Skiena Springer 2011 - 11
....The most comprehensive guide to designing practical and efficient algorithms....
Written by a well-known algorithms researcher who received the IEEE Computer Science and Engineering Teaching Award, this new edition of The Algorithm Design Manual is an essential learning tool for students needing a solid grounding in algorithms, as well as a special text/reference for professionals who need an authoritative and insightful guide. Professor Skiena is also author of the popular Springer text, Programming Challenges: The Programming Contest Training Manual.
黑客与画家 豆瓣
Hackers and painters:big ideas from the computer age
9.1 (9 个评分) 作者: 保罗·格雷厄姆 译者: 阮一峰 人民邮电出版社 2013 - 10
本书是硅谷创业之父Paul Graham 的文集,主要介绍黑客即优秀程序员的爱好和动机,讨论黑客成长、黑客对世界的贡献以及编程语言和黑客工作方法等所有对计算机时代感兴趣的人的一些话题。书中的内容不但有助于了解计算机编程的本质、互联网行业的规则,还会帮助读者了解我们这个时代,迫使读者独立思考。
本书适合所有程序员和互联网创业者,也适合一切对计算机行业感兴趣的读者。
2019年9月16日 已读
由于读得太过畅快甚至有些囫囵吞枣。我太喜欢了。黑客的可爱幽默和较真,全都在这里。
code&program
Hackers & Painters 豆瓣
9.1 (7 个评分) 作者: 保罗·格雷厄姆 O'Reilly Media 2010 - 6
"The computer world is like an intellectual Wild West, in which you can shoot anyone you wish with your ideas, if you're willing to risk the consequences. " --from Hackers & Painters: Big Ideas from the Computer Age , by Paul Graham We are living in the computer age, in a world increasingly designed and engineered by computer programmers and software designers, by people who call themselves hackers. Who are these people, what motivates them, and why should you care? Consider these facts: Everything around us is turning into computers. Your typewriter is gone, replaced by a computer. Your phone has turned into a computer. So has your camera. Soon your TV will. Your car was not only designed on computers, but has more processing power in it than a room-sized mainframe did in 1970. Letters, encyclopedias, newspapers, and even your local store are being replaced by the Internet. Hackers & Painters: Big Ideas from the Computer Age , by Paul Graham, explains this world and the motivations of the people who occupy it. In clear, thoughtful prose that draws on illuminating historical examples, Graham takes readers on an unflinching exploration into what he calls "an intellectual Wild West." The ideas discussed in this book will have a powerful and lasting impact on how we think, how we work, how we develop technology, and how we live. Topics include the importance of beauty in software design, how to make wealth, heresy and free speech, the programming language renaissance, the open-source movement, digital design, internet startups, and more.
Cracking the Coding Interview 豆瓣 Goodreads
作者: Gayle Laakmann McDowell CareerCup 2015 - 7
Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to perform at your very best. I've coached and interviewed hundreds of software engineers. The result is this book.
Learn how to uncover the hints and hidden details in a question, discover how to break down a problem into manageable chunks, develop techniques to unstick yourself when stuck, learn (or re-learn) core computer science concepts, and practice on 189 interview questions and solutions.
These interview questions are real; they are not pulled out of computer science textbooks. They reflect what's truly being asked at the top companies, so that you can be as prepared as possible. WHAT'S INSIDE?
189 programming interview questions, ranging from the basics to the trickiest algorithm problems.
A walk-through of how to derive each solution, so that you can learn how to get there yourself.
Hints on how to solve each of the 189 questions, just like what you would get in a real interview.
Five proven strategies to tackle algorithm questions, so that you can solve questions you haven't seen.
Extensive coverage of essential topics, such as big O time, data structures, and core algorithms.
A behind the scenes look at how top companies like Google and Facebook hire developers.
Techniques to prepare for and ace the soft side of the interview: behavioral questions.
For interviewers and companies: details on what makes a good interview question and hiring process.
设计模式 豆瓣
作者: 伽玛 译者: 李英军 机械工业出版社 2007 - 3
《设计模式:可复用面向对象软件的基础》(双语版)是引导读者走入软件设计迷宫的指路明灯,凝聚了软件开发界几十年的设计经验。四位顶尖的面向对象领域专家尽心挑选了最具价值的23种设计实践,加以分类整理和命名,并用简洁而易于重用的形式表达出来。这23个模式逐渐成为开发界进行技术交流所必备的基本知识和语汇。
《设计模式:可复用面向对象软件的基础》(双语版)已经成为广大技术人员的圣经和经典,一直名列Amazon和各大书店销售榜前列。十年来不断重印,销售逾七万册。
Head First Design Patterns 豆瓣 Goodreads
9.5 (8 个评分) 作者: Elisabeth Freeman / Eric Freeman O'Reilly Media 2004 - 11
You're not alone. At any given moment, somewhere in the world someone struggles with the same software design problems you have. You know you don't want to reinvent the wheel (or worse, a flat tire), so you look to Design Patterns--the lessons learned by those who've faced the same problems. With Design Patterns, you get to take advantage of the best practices and experience of others, so that you can spend your time on... something else. Something more challenging. Something more complex. Something more fun. You want to learn about the patterns that matter--why to use them, when to use them, how to use them (and when NOT to use them). But you don't just want to see how patterns look in a book, you want to know how they look "in the wild". In their native environment. In other words, in real world applications. You also want to learn how patterns are used in the Java API, and how to exploit Java's built-in pattern support in your own code. You want to learn the real OO design principles and why everything your boss told you about inheritance might be wrong (and what to do instead). You want to learn how those principles will help the next time you're up a creek without a design paddle pattern. Most importantly, you want to learn the "secret language" of Design Patterns so that you can hold your own with your co-worker (and impress cocktail party guests) when he casually mentions his stunningly clever use of Command, Facade, Proxy, and Factory in between sips of a martini. You'll easily counter with your deep understanding of why Singleton isn't as simple as it sounds, how the Factory is so often misunderstood, or on the real relationship between Decorator, Facade and Adapter. With Head First Design Patterns, you'll avoid the embarrassment of thinking Decorator is something from the "Trading Spaces" show. Best of all, in a way that won't put you to sleep! We think your time is too important (and too short) to spend it struggling with academic texts. If you've read a Head First book, you know what to expect - a visually-rich format designed for the way your brain works. Using the latest research in neurobiology, cognitive science, and learning theory, Head First Design Patterns will load patterns into your brain in a way that sticks. In a way that lets you put them to work immediately. In a way that makes you better at solving software design problems, and better at speaking the language of patterns with others on your team.
Head First 设计模式(中文版) 豆瓣
9.7 (23 个评分) 作者: Elisabeth Freeman / / Eric Freeman 译者: O'Reilly Taiwan公司 中国电力出版社 2007 - 9
《Head First设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍这本书的用法;第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、Abstract Factory、Factory Method、Singleton,Command、Adapter、Facade、TemplateMethod、Iterator、Composite、State、Proxy。最后三章比较特别。第12章介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式),作者称其为复合设计模式(这是作者自创的名称,并非四人组的标准名词),第13章介绍如何进一步学习设计模式,如何发觉新的设计模式等主题,至于第14章则很快地浏览尚未介绍的设计模式,包括Bridge、Builder、Chain of Responsibility、Flyweight、Interpreter、Mediator、Memento、Prototype,Visitor。第1章还介绍了四个○○基本概念(抽象、封装、继承、多态),而第1章到第9章也陆续介绍了九个○○原则(Principle)。千万不要轻视这些○○原则,因为每个设计模式背后都包含了几个○○原则的概念。很多时候,在设计时有两难的情况,这时候我们必须回归到○○原则,以方便判断取舍。可以这么说:○○原则是我们的目标,而设计模式是我们的做法。