Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

Every programmer's bookcase must have programming books.

2025-02-21 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Servers >

Share

Shulou(Shulou.com)06/03 Report--

My debut: http://www.infoq.com/cn/articles/each-programmer-must-have-programming-books-bookcase

The original article refers to Dan Luu's blog, authorized by the author, compiled, organized and shared by InfoQ.

When you mention books on programming, you will think of the legendary "12 computer science books that every programmer must read". However, this list is not very practical. Because the field of computer science is so broad that almost any programmer can read any topic, even if a topic is important, there are no so-called "best" books for all readers because of their learning preferences.

This article is a list of topics and books I have read. These are topics that I am familiar with. Maybe you can learn more about this topic and read other related books in this article. In other words, why do you need to read another book?

Algorithm, data structure, complexity Algorithms / Data Structures / Complexity

Why care about algorithms, data structures, and complexity? Well, there is a practical conclusion: even if you never use these things at work, most top payment companies test them in interviews. I will never talk nonsense. The algorithm is really useful, just as I find math very useful. The probability that any particular algorithm can be applied to any particular problem is very low, but it generally explains what type of problem is solved and what kind of problem is difficult to deal with, which is usually useful when the approximation is valid.

"Cracking the Coding Interview"

Author: McDowell

Press: CareerCup; 6th edition (July 1, 2015)

Chinese version: the Golden Code of programmer interview

Translator: Li Linyi, Qifeng

Press: people's posts and Telecommunications Publishing House, Fifth Edition

McDowell, the author of "programmer interview Golden Code", is the experience of the former Google senior interviewer. It closely links every step of the programmer interview, and gives a comprehensive and detailed description of how programmers should deal with the interview in order to stand out. The book deals with the analysis of the interview process, the interviewer's behind-the-scenes decisions and possible questions, the preparation before the interview, and the processing of the interview results. It also covers four aspects: data structure, concepts and algorithms, knowledge questions and additional interview questions. It provides readers with programming interview questions from Google, Facebook, Microsoft and other well-known companies, and gives detailed solutions for each interview question. I will recommend this book to programmers who don't really master the algorithm but want to pass the interview. This book is OK to read, but it doesn't really teach you knowledge, so if you want to really master algorithms and data structures, move on.

"Algorithms"

Authors: Dasgupta, Papadimitriou, Vazirani

Publisher: McGraw-Hill Education

Chinese version: an introduction to algorithms

Translators: Wang Pei, Tang Yangbin, Liu Qijun

Press: Tsinghua University Press

Introduction to algorithms is a book suitable for entry, but it is interesting to read without losing its depth and breadth. I think, after reading this book carefully and thinking about the exercises at the end of each chapter, there will be a good overall vision for the algorithm. Of course, to master the algorithm, it is not enough to rely on this book alone, but it is well deserved to be counted as the best beginner. The book comprehensively introduces the basic knowledge of algorithms, divides algorithms into categories (such as divide-and-conquer, or greedy algorithms), and emphasizes the mathematical ideas behind each algorithm when expressing each technology. let you know how to determine which algorithm should be used to solve a particular problem.

The book reasonably selects topics, clarifies a clue to the knowledge of algorithms, carefully arranges the structure, and analyzes the mathematical structure of the problem, thus introducing an explanation of the process of an algorithm. The length is suitable, only more than 300 pages, you can use a few weekends to read.

However, I know that some readers will not like this book because it contains too many mathematical ideas. If it were you, I guess you might like the book written by Skiena.

"The Algorithm Design Manual"

Author: Skiena

Press: Springer; 2nd edition (July 26, 2008)

The Algorithm Design Manual is longer, more comprehensive, more practical and involves less mathematics than Dasgupta's Algorithms. It's pretty much the book that tries to teach you how to identify a problem and use the right algorithm to solve it, as well as give a clear algorithm explanation. The book is rich in content, covering almost every topic, from common data structures to algorithmic strategies and computability. If you want to use it as a textbook, there are a lot of exercises at the end of each chapter, which is recommended. This book is full of passionate "War stories" that show the impact of algorithm programming in the real world.

"Introduction to Algorithms"

Authors: Cormen, Leiserson, Rivest, Stein (CLRS)

Press: The MIT Press; 3rd edition (July 31, 2009)

Chinese version: introduction to algorithms

Translators: Yin Jianping, Xu Yun, Wang Gang, Liu Xiaoguang, Su Ming, Zou Hengming, Wang Hongzhi

Press: machinery Industry Press; 1st Edition (January 1, 2013)

Introduction to algorithms accounts for half of the list of "must-read books for all programmers" circulated in the world. This book combines rigor and comprehensiveness, and discusses various algorithms in depth. In fact, few readers will read the whole book. However, each chapter of the book has its own system and can be used as an independent learning unit. It is the most widely read algorithmic Bible in the world. The book is characterized by classic material selection, detailed content, reasonable structure and clear logic. The first half of each chapter introduces effective methods of teaching and learning algorithms, and the second half provides more fascinating materials for more professional readers and curious students to discuss the possibilities and challenges in this fascinating field. it is an excellent textbook for undergraduate data structure courses and graduate algorithm courses.

For example, there is a whole chapter about Van Emde Boas trees, which is neatly written, which is a bit strange, like the insertion and deletion of the balanced tree structure is as good as search and inheritance, perhaps this may be the case in previous books, but it is the first introduction to algorithms that does not include Van Emde Boas trees.

"Algorithm Design"

Authors: Kleinberg, Tardos

Press: PEARSON EDUCATION; 1 edition (2013)

"Algorithm Design" is well received, comparable to CLRS's "Introduction to Algorithms". It is recommended as a rare and excellent introductory book on algorithm design and analysis. I found that this book is a perfect combination of intuition and rigor compared with CLRS's book. The coverage is relatively wide, and all the classical topics of serial algorithms have dabbled in.

"Advanced Data Structures"

Author: Demaine

Advanced Data Structures is a set of lecture notes and notes, not a book. If you want a set of learning materials with a well-organized but not difficult to synthesize data structure, you are unlikely to see it in most undergraduate courses, so this set of lectures and notes is immense.

There are no booklet plans for these notes, so if you haven't seen these materials, you must watch the instructional videos.

"Purely Functional Data Structures"

Author: Okasaki

Cambridge University Press (June 13, 1999)

Publisher: Cambridge University Press

"Purely Functional Data Structures" is interesting to read, but unlike other algorithms and data structures, I haven't got the important ability to really solve practical problems from this book.

A few years after I finished reading this book, I was told that it was not difficult to deduce the performance of pure functional redundant data structures. I asked them about the proof that baffled me in the book. I was not talking about the obscure and difficult exercises, but that the main content of the book, the author had too many obvious explanations. But no one explained it. The reasoning of this kind of thing is even more difficult than people say.

"Higher Order Perl"

Author: Dominus

Publisher: Morgan Kaufmann Publishers

Chinese version: Huazhang programmer Library: high-level Perl

Translator: Teng Jiahai

Press: machinery Industry Press

High-order Perl delves into a variety of latest topics in the Perl field, such as recursion, iterators, filters, partitions, numerical methods, higher-order functions, lazy evaluation, etc., and turns these into powerful utilities at work: HTML processing, database access, web page crawling, family finance, and so on.

The book aptly introduces functional programming using Perl. Through the study of this book, you may be as easy to work as Python or Ruby.

However, if you can keep up with the trend, you will find that this book may be a bit out of date, because it is about Perl 5 in 2005, and now Perl 6, which is released on December 25, 2015. However, the ideas mentioned in this book have now become mainstream.

"Algorithms"

Author: Levitin

Press: Pearson; 3 edition (October 9, 2011)

"other features of reinforcement learning include: chapter summaries and exercise tips. This is a detailed solution manual." Students further support learning through exercise tips and chapter summaries. " One of the advertisements was even printed in the book. When I saw these two ads, I placed an order on Amazon to buy "Algorithms". But after I got this book, my only self-study resource was some posts in Yahoo Yahoo Answers, where you can find tips or answers.

Finally, I picked up Dasgupta's book to replace it, because his website resources are free to use.

"Probability and Computing: Randomized Algorithms and Probabilistic Analysis"

Authors: Mitzenmacher, Upfal

Press: Cambridge University Press (January 31, 2005)

I may have gained more knowledge of algorithms than any other algorithm book. Transplanting many random algorithms to other applications is trivial, but it can simplify a lot of things.

The introduction to probability in "Probability and Computing: Randomized Algorithms and Probabilistic Analysis" is so informative that readers can easily get started even if they don't have any background in probability. In addition, the content (for example,) is useful for the proof of many computer science theories, which are not mentioned in the introduction to probability that I have read.

"Introduction to the Theory of Computation"

Author: Sipser

Press: Cengage Learning; 3 edition (June 27, 2012)

Chinese version: an introduction to Computational Theory

Translators: Duan Lei, Tang Changjie

Press: machinery Industry Press, first Edition

From a unique perspective, Guide to Computing Theory systematically introduces three parts of computing theory: automata and language, computability theory and computational complexity theory. It describes the broad mathematical principles and does not stick to some low-level details. Before proving, there are intuitive "proof ideas" to help readers understand the concepts implied in mathematical form. Many important results, such as theorems, are used as exercises. So you really need to do these key exercises. However, most of the key exercises do not provide answers, so you don't know if your answers are correct.

If you want to choose a more modern theme, you might want to read Aurora and Barak.

"Computation"

Author: Bernhardt

The instructional film "Computation" covers some key parts of computer theory. The film is delightful, and I have watched this film more than once in order to watch what Bernhardt explains. The film is aimed at ordinary programmers who have no background in computer science.

"An Introduction to Computational Learning Theory"

Author: Kearns & Vazirani

Press: The MIT Press (August 15, 1994)

An Introduction to Computational Learning Theory is a very classic book. But the book is out of date (InfoQ's note: it was published in 1994, 22 years ago) and is full of flaws and no corrections. I finally cobbled together some notes from several courses, one by Klivans and the other by Blum.

Operating system Operating Systems

Why care about the operating system? Because, having some knowledge about the operating system can save you a few days or a week of debugging time. This is a topic often mentioned on Julia Evans blogs, and I find that, in my personal experience, this is indeed the case.

It is hard for me to imagine that people who build viable systems and have some knowledge of the operating system do not find it very time-saving if they have knowledge of the operating system.

However, people who have read operating system books are often biased-that's what they do, and if you're an ashes player, unless you read them, you may not get the same results.

"Operating System Concepts"

Authors: Silberchatz, Galvin, Gagne

Press: Wiley; 9 edition (December 17, 2012)

Chinese version: operating system concept (Seventh Edition) (translated version)

Translator: Zheng Kougen

Press: higher Education Press; 1st Edition (January 1, 2010)

Well, this is a book we used at Wisconsin before Comet Book became the standard.

The operating system concept covers high-level concepts and hits the point, but it is slightly less deep at the technical level, does not elaborate on how things work, and does not clearly list more advanced topics.

By the way, I heard the good news about Comet books, but I dare not say it. After all, I haven't read it yet.

"xv6"

Authors: Cox, Kasshoek, Morris

This xv6 is really great! It explains how you can operate effectively on a real system, and you can imagine yourself implementing an executable operating system. According to the design of this book, the author tends to implement simply rather than optimized. therefore, the algorithm and data structure used in the book are completely different from the usual production system.

This book works better with books about how modern operating systems work, such as Love's Linux Kernel Development or Russinovich's Windows Internals.

"Linux Kernel Development"

Author: Love

Press: Addison-Wesley Professional; 3 edition (July 2, 2010)

The title of "Linux Kernel Development" may be misleading. It's not a book about Linux kernel development. It's basically a book on how the Linux kernel works: how things fit, what algorithms and data structures are used, and so on. I read the second edition, which is now completely out of date.

The content of the third edition has been updated, but it also introduces some mistakes and contradictions. Moreover, this edition is still out of date, and the book, published in 2010, is about kernel 2.6.34. Even so, the book is still an excellent introduction to the principles of modern operating systems.

Another drawback of the book is that when the author compares Linux with Windows, it is not objective. Basically, every time he compares, he proclaims that Linux is the right choice and that Windows always does stupid things. Overall, I like both Linux and Windows, and in some areas, Windows does better. And in some areas, Windows has been ahead for many years. But you don't expect to see reviews like this in this book.

"Windows Internals"

Authors: Russinovich, Solomon, Ionescu

Press: Microsoft Press; 6 edition (March 25, 2012)

Chinese version: "in-depth Analysis of Windows operating system: version 6 (Volume 1)"

Translators: pan Aimin, Fan Decheng

Press: electronic Industry Press; 1st Edition (April 1, 2014)

An in-depth Analysis of the Windows operating system is the most comprehensive book on how modern operating systems work, but it happens to be about Microsoft Windows. As a person walking from * nix, it is very interesting to see the difference between Windows and * nix.

However, this book is not a simple introductory book, and you must have some knowledge of the operating system before reading it.

If you want to buy this book, you will have to wait until the seventh edition, which is released in early 2017.

"The Little Book of Semaphores"

Author: Downey

The Little Book of Semaphores is a book that lists a topic, usually takes a chapter or two from an operating system textbook and pieces it together into a 300-page book of its own.

This book is a series of exercises, a bit like a small outline, but more elaborate. It first explains what semaphores are, and then gives a series of exercises to build highly concurrent primitive knowledge.

This book was a great help when I started writing concurrent threading code. I subscribe to the Butler Lampson Academy on concurrency, and I like to cram concurrency-related code into the black box written by others. But sometimes you insist on writing your own black box, and if so, the book has a good introduction that requires a way of thinking to write concurrent code that is not completely wrong.

I hope that one day there will be a book that takes care of both low-level and high-level readers. I like this kind of writing design very much. Start with the architecture of several memory models with different instruction set primitives (such as x86 and Alpha), rather than starting with semaphores. If I wrote bad low-level threading code today, I would prefer to use C++ 11 thread primitives, so I want to use these things instead of semaphores. If I were to write threading code, I might write it in Win32 API. But so far, there is no such book. If such a book is published in the future, it will be the best.

I heard that Doug Lee's Java concurrent programming is very good, but I only read it in general and did not delve into it.

Computer architecture Computer architecture

Why care about computer architecture? When you do the underlying performance optimization, the specific facts and details you have learned will be very useful. However, the real value is to learn how to weigh performance against other factors, whether power consumption, cost, size, weight, or other factors.

In theory, this kind of reasoning should be taught regardless of major, but my experience is that those who study computer architecture are more likely to "draw" that kind of reasoning and rough calculations: to get them to put aside a factor that has no reason to double or 10x (or 100x) in performance. It sounds obvious, but I think that multiple production systems in large companies give up 10 to 100 times the performance, and running by one standard, or even 2 times the performance difference, is enough to pay VP's salary. It's all because people don't realize the performance impact of their designs.

"Computer Architecture: A Quantitative Approach"

Authors: Hennessy, Patterson

"Computer Architecture: A Quantitative Approach" teaches you how to design a system with multiple constraints (such as performance, TCO, power, etc.) and how to deduce trade-offs. It mainly takes microprocessors and supercomputers as examples.

The new edition of the book adds substantial additions, and this version is what you really want to read. For example, the new version adds a chapter on data center design that answers the following questions: operating expenses for power, power distribution, cooling, OPEX/ capital expenditure CAPEX, and payments for support teams and machines, the quality and impact of the use of low-power machines on tail larency results (take Bing search results as an example), and what other factors should be considered when designing the data center.

It is assumed that the reader has some background, but the background is provided in the appendix and is available online for free.

"Modern Processor Design"

Authors: Shen, Lipasti

Press: Waveland Press, Inc.; 1 edition (July 30, 2013)

"Modern Processor Design" shows most of what you need to know to design high-performance microprocessors in the era of Pentium Pro (1995). Because of the complexity of this processor, it is not easy to explain clearly. In addition, it introduces some more advanced ideas and the range of parallel calculations that can be run from various workloads (and how you might do so). The book has a long chapter on value prediction because the author invented the concept and was very popular when the first edition was released.

For pure CPU architecture, this book is probably the best available.

"Readings in Computer Architecture"

Authors: Hill, Jouppi, Sohi

Press: Morgan Kaufmann; 1 edition (September 23, 1999)

Read for historical reasons to see how well we understand the explanation. For example, compare Amdal's paper on laws (no formula, only two sheets of paper with a chart that is not obvious), as opposed to the expression of a modern textbook (a paragraph, a formula, or a chart to illustrate, although it is usually clear enough that no additional chart is needed).

The bad thing is, "Readings in Computer Architecture] seems to make you step back further. Because computer architecture is really a very young field, there is nothing really difficult to understand. If you want to see a breathtaking example, such as how we can better explain this, like comparing Maxwell's original paper on the equations with the modern explanation of the same thing. If you like history, this book is very interesting. But if you just want to learn, it's reluctant.

Game algorithm theory, auction theory, mechanism design Algorithmic game theory, Auction Theory, Mechanism Design

Why should we pay attention to this knowledge (game algorithm theory, auction theory, mechanism design)? Because this knowledge introduces how the world's largest technology companies operate in advertising revenue, which is sold through auctions. This field introduces the methods and reasons for their operation. In addition, this knowledge comes in handy when you try to figure out how to design a system to allocate resources effectively. In addition, if you play board games, auction theory explains why it is important to solidify game imbalances through auction mechanisms, often making the game worse.

These books should be required books, especially for those who design the incentive compatibility system within the company (roughly speaking, how to create a system that provides the overall optimal results in which people pursue the best interests out of selfishness). If you have worked for two large companies, one of them has established an effective internal incentive compatibility system, while the other has not. You will find that the big company that does not have an internal incentive compatibility system has burned a lot of money because these people have built a super useless incentive system.

This field shows a picture of what kind of mechanism will lead to what kind of results. By reading case studies, you'll get a list of errors that cost millions or even billions of dollars, which is also interesting.

"Auction Theory"

Author: Krishna

Press: Academic Press; 2 edition (August 26, 2009)

Chinese version: auction Theory

Translators: Luo Deming, Xi Xican

Press: Renmin University Press of China

The last time I read auction Theory, it was the only book that gave a comprehensive and recent introduction to auction theory. In the first chapter, we cover the conclusions of the classic second price auction, and then cover risk aversion, bidding manipulation, multiple auctions, asymmetric information and other real-world problems. The book covers most of the auction theories and is necessary for an in-depth understanding of the main context of auction theory. But the book is so boring that it is unlikely to arouse the desire to read. Unless you are interested in the subject. Basic knowledge of probability and calculus is required. The book is an indispensable reading for graduate students who are committed to auction research.

"Snipers, Shills, and Sharks: eBay and Human Behavior"

Author: Steighlitz

Press: Princeton University Press (April 1, 2007)

"Snipers, Shills, and Sharks: eBay and Human Behavior" seems to be an entertaining book designed to introduce auction theory to laymen. The book explains how eBuy works and why, as the subtitle of the book says, the author also explores human eccentricities in eBuy and other auctions. The book is so interesting that there is no need for the reader to have a mathematical background, and it may contain a small amount of Auction Theory by Krishna, which will make the reader interested in auction theory.

"Combinatorial Auctions"

Authors: Crampton, Shoham, Steinberg

Publisher: The MIT Press

What "Combinatorial Auctions" is talking about is a case like the FCC band auction in which hundreds of millions or even billions of dollars of price differences were put on the table due to "loopholes" in the design of the auction mechanism. (InfoQ Note: interested readers can search the "American auction 600MHz band" on google to learn about the event. Although the book is co-written by different authors, it is still easy to read and makes me happy to read it. This book has depth and breadth in the combinatorial auction field, and it also lists detailed authors and subject indexes, and the typography is so good that you can skip the Krishna book mentioned at the beginning, but I wouldn't recommend it. This book is an essential reading for researchers and practitioners who want to learn about combinatorial auctions.

"Multiagent Systems:Algorithmic,Game-Theoretic,and Logical Foundations"

Authors: Shoham, Leyton-Brown

Press: Cambridge University Press; 1 edition (December 15, 2008)

The worst thing about "Multiagent Systems:Algorithmic,Game-Theoretic,and Logical Foundations" is the title. However, it is one of the most worthwhile readings for Multiagent System. The book covers basic game theory, auction theory, and other classic topics that readers may not know in computer science, including many novel cutting-edge theories, as well as the intersection of computer science and these topics, such as game learning models, and even logic (which is also the most concerned direction of Shoham, raising game theory to the philosophical level). This book is very distinctive, with many examples in the previous chapters and a strong academic flavor of computer science. The book assumes that the reader has no specific background to the subject.

"Algorithmic Game Theory"

Authors: Nisan, Roughgarden, Tardos, Vazirani

Press: Cambridge University Press; 1 edition (September 24, 2007)

"Algorithmic Game Theory" contains all kinds of survey results of game algorithm theory. The reader is required to have a considerable amount of background (first to have read the works of Shoham and Leyton-Brown), for example, Chapter 5 is basically a JACM paper by Devanur, Papadimitriou, Saberi and Vazirani: "Market Equilibrium via a Primal-Dual Algorithm for a Convex Program" ("Market equilibrium through primitive dual algorithms for Convex programs"), and raises some related questions to give the reader an incentive to climb another story. If you delve into the book, you will find that the exposition of the book is great and interesting. But if you want to pry into an area by reading a book, it's not necessarily the kind of book you want.

Miscellaneous

"Site Reliability Engineering"

Authors: Beyer, Jones, Petoff, Murphy

Press: O'Reilly Media; 1 edition (April 16, 2016)

Chinese version: "SRE:Google operation and maintenance decryption"

Translator: sun Yucong

Press: electronic Industry Press; 1st Edition (October 1, 2016)

SRE:Google Operations decryption allows readers to learn the guidelines and practices of Google engineers in improving system deployment scale, reliability and resource utilization efficiency-valuable experiences that can be applied immediately and directly. Anyone who wants to create and extend a large-scale integrated system should read this book, which provides valuable practical experience on how to build a system that can be maintained for a long time.

For a richer brief description, read the 22-page notes from the book.

"Refactoring"

Authors: Fowler, Beck, Brant, Opdyke, Roberts

Press: Addison-Wesley Professional; 1 edition (July 8, 1999)

Chinese version: refactoring: improving the Design of existing Code

Translator: bear Festival

Press: people's posts and Telecommunications Publishing House; 2nd Edition (August 1, 2015)

At that time, when I read the book ReFactor: improving the Design of existing Code, it was worth the price because of the space it spent on a separate chapter on the smell of code. The book is very successful because it makes the concept of refactoring and smelly code mainstream.

Steve Yegge was generous in his praise of the book:

In October 2003, when I read this book for the first time, I felt a shudder. If you realize that you have been working for five years when you want to leave. The next day I casually asked around, "well, you've read books on refactoring, right?" I'm just asking, because I read it a long time ago, not now. " Of the 20 people I surveyed, only one has read it. Thank God, everyone is embarrassed, not just me.

……

If you are a senior engineer, you will find that at least 80% of the book is something you are familiar with. But it is useful that the book lists all the names and objectively discusses the pros and cons of these technologies. It exposed the truth of several "secret books" that I treasured when I first became a programmer. No comments on the code? Local variables are the root of all evil? Is this madman a madman? Whether you want to read this book or not is up to you!

"Peopleware"

Authors: Demarco, Lister

Press: Addison-Wesley Professional; 3 edition (June 28, 2013)

Chinese version: "people (3rd edition of the original book) (treasured edition)"

Translators: Xiao ran, Zhang Yi, Teng Yun

Press: machinery Industry Press; 1st Edition (September 1, 2014)

I read this "people" when I was in college, and the book seemed so convincing that even all the research results supported the book's point that it is better not to set a deadline than to set a deadline, an office is better than a cubicle, and so on. When all developers discuss with me, they basically agree with these ideas.

But in fact, every successful company operates in a very different way. Even Microsoft has transformed its building from a personal office to an open-plan office. Is it true that none of these views matter? If it's really important, how can those companies become true believers, like Fog Creek, who don't trample on competitors?

Because the book is in line with my "bias", I hope it is correct. However, the idea of meta-analysis (InfoQ Meta analysis, a statistical method that brings multiple research results together) allowed me to reread the main sources with an expert eye.

"Renegades of the Empire"

Author: Drummond

Press: Crown; 1 edition (November 16, 1999)

Renegades of the Empire tells the story of the course of DirectX. It also reveals how today's soft wolf culture is formed. Read the introduction:

Microsoft may not hire people like Gates (although there are many of them in the corporate park), but it will hire people with more prominent Gates characteristics-arrogance, enterprise and high IQ.

……

Because it's "stupid" to laugh at someone's idea, or even worse, "nonsense"-and Gates is notorious for it-just to see how he defends a position. This hostile management technique runs through a series of commands, creating a culture of conflict.

……

Microsoft established the Darwinian order, and resources were often plundered, hoarding power, wealth and prestige. A manager on leave may come back to find his department attacked by competitors and his project downgraded or banned altogether.

Interview at Microsoft:

"what do you like about Microsoft?"

"Bill kicked his ass." St. John said, "I like to kick my ass. I like the feeling of killing competitors and dominating the market."

As a result, St. John was hired. He hasn't made any mistakes for many years. This book tells his story, as well as the story of employees like him. If you want to get a job at Microsoft, you need to read this book. I wish I had read this book before I joined, not after!

Mathematical Math

Why should we focus on mathematics? From a pure ROI point of view, I suspect that math is worthwhile for 99 per cent of jobs. As far as I know, I use math more than most programmers, but I don't use math that often. However, having the right mathematical background may come in handy. I enjoy learning math very much.

"Introduction to Probability"

Author: Bertsekas

Press: Athena Scientific; 2nd edition (July 15, 2008)

Chinese version: introduction to probability (2nd Edition) (revised Edition)

Translators: Zheng Zhongguo, Tong Xingwei

Press: people's posts and Telecommunications Publishing House; 1st Edition (January 1, 2016)

"introduction to probability" is an introductory university course, which is more rigorous and intuitive in the definition of exposition. For any reader concerned with rigorous derivation, there are some more detailed exercises at the end of the book. There are many exercises with available solutions that make this book more suitable for self-study.

"A First Course in Probability"

Author: Ross

Press: Pearson Prentice Hall; 8th edition (January 7, 2009)

Chinese version: "Hua Zhang Education Hua Zhang Mathematics Translation Series: the basic course of probability Theory (9th Edition of the original Book)"

Translators: Tong Xingwei, Liang Baosheng

Press: machinery Industry Press; 1st Edition (January 1, 2014)

In order to get students to buy the basic course of probability Theory, the book is often released in new editions, and Amazon costs as much as $174. I once asked the author about this question. He complained that in recent years, the second-hand book market has damaged the income of textbooks, and the author does not have much royalties, so in order to have more income, we have to maintain the pace of launching new editions every two years to ensure royalty revenue. New authors often complain when they want to write classic books written by their predecessors, because the earliest authors usually get more royalties than their later authors, even if there are no updates in their subsequent editions.

When I studied probability at Wisconsin, the book was a standard textbook. I really can't think of anyone who found this book helpful.

"Introductory Combinatorics"

Author: Brualdi

Press: Pearson; 5 edition (January 7, 2009)

Chinese version: combinatorial Mathematics (5th Edition of the original Book)

Translator: Feng Sui

Press: machinery Industry Press; 1st Edition (May 1, 2012)

Brualdi is a big professor and one of the best professors in my college career. But his combinatorial mathematics is full of mistakes and is not particularly clear. There have been two new versions of the book since I used it, but judging from Amazon reviews, there are still a lot of mistakes in the book.

As for another basic entry-level textbook, I've heard the good news about An Introduction to Enumeration (Springer Undergraduate Mathematics Series), co-authored by Camina and Lewis, but I haven't read it myself. In addition, Lovasz's Combinatorial Problems and Exercises (AMS Chelsea Publishing) is a masterpiece about combinatorial mathematics, but it is not widely known.

"Calculus"

Author: Apostol

Press: Wiley; 2nd edition (January 16, 1991)

The first volume of "Calculus" covers the calculus I and calculus II you expect. The second volume covers linear algebra and multivariate calculus. Before multivariate calculus, talk about linear algebra, which makes multivariate calculus easier to understand.

From a programming point of view, calculus also makes sense. Because the values I get in calculus are approximate applications and so on. The professor of this series of concepts is very clear.

If you don't have a professor or TA to help you, the book may be a rough introduction. The Spring SUMS series of books are easier to teach themselves in all subjects, but I have not read their calculus books, so I dare not jump to conclusions and recommend them.

"Calculus"

Author: Stewart

Press: Cengage Learning; 7 edition (2012)

Chinese version: calculus (sixth Edition) (Bilingual textbook)

Translator: Zhang Naiyue

Press: Renmin University Press; 1st Edition (October 1, 2014)

Calculus is one of many books in which authors make money by introducing new editions of unimportant changes. This is a standard textbook for an Non-Honor degree at Wisconsin University. As a result, I have taught a lot of people to use the methods taught in Apostol's book to calculate complex calculus, which is more intuitive for many people.

The way the book works is that for a certain type of problem, you should match the pattern to many possible formulas, and then apply the formula. On the other hand, Apostle is more about teaching you some skills and intuition so that you can cope with all kinds of problems. I don't know why you bought this book unless you need some classes.

Hardware basic Hardware basics

Why should we focus on hardware fundamentals? It is often claimed that to be a good programmer, you must understand every abstract concept you use. This is nonsense because modern computing is so complex that it is impossible for anyone to really fully understand what is going on. In fact, modern computing can do what it does efficiently because it does not require programmers to understand the underlying content, and most of it is lower than your level.

Having said that, if you are curious about the underlying software, here are some introductory books for you.

"nand2tetris"

Authors: Nisan, Shocken

If you only want to read a single book, it must be this "nand2tetris". It is a 101-level introduction to logic gates and Boolean logic. As the title of the book suggests, it takes you from NAND gate to making a usable Tetris game.

"Fundamentals of Logic Design"

Author: Roth

Press: CL Engineering; 5 edition (June 11, 2003)

"Fundamentals of Logic Design" has more details about logic gates and logic design than "nand2tetris". The book has a large number of exercises and seems to be for self-study. Note that the link above is version 5, and there is currently a more expensive new version, but there seems to be no improvement, and the new version also has a lot of errors and is more expensive.

"CMOS VLSI Design"

Authors: Weste, Harris, Bannerjee

Press: Pearson; 4 edition (March 11, 2010)

Chinese version: CMOS VLSI Design (4th Edition)

Translator: Zhou Runde

Press: electronic Industry Press; 1st Edition (July 1, 2012)

One level below the logic gate is VLSI (very large scale integration), that is, very large-scale integrated circuits. However, it really doesn't make any sense today.

"CMOS VLSI Design" has more breadth and depth than other books and is extremely clear. The chapter on exploring the design space, such as adders, not only mentions several different types, but also provides problems and solutions that are ideal for self-study.

"CMOS Digital Integrated Circuits"

Authors: Kang, Leblebici

"CMOS Digital Integrated Circuits" is the current textbook of Wisconsin. But the book is hard to keep up with, and the TA basically reexplains almost all the necessary items and exams. I think it is a reference book rather than a reading material for learning.

Compared with West and others, Weste spends more energy discussing design tradeoffs, such as what does it mean at a particular point in the design space when creating a parallel prefix tree adder?

"Semiconductor Device Fundamentals"

Author: Pierret

Press: Addison Wesley; 2nd edition (April 12, 1996)

The next level of very large scale integrated circuit (VLSI), the transistor, you will understand how transistors actually work.

"Semiconductor Device Fundamentals" is a truly perfect illustration of solid state devices (SSD). The book points out what you need to know to really understand things such as band diagrams. Then use these basic principles and clear explanations to build a good thought model for you to understand the working principles of different types of intersection points and devices.

"Solid State Electronic Devices"

Authors: Streetman, Bannerjee

Press: Prentice Hall; 6 edition (August 5, 2005)

"Solid State Electronic Devices" tells the same content as Pierret's work. But it seems to have replaced Pierrot's meaning with a mathematical formula.

"Engineering Electromagnetics"

Author: Ida

Press: Springer; 3rd ed. 2015 edition (March 26, 2015)

One level lower than the transistor is electromagnetism.

"Engineering Electromagnetics" is two or three times thicker than other introductory textbooks because it has more working diagrams and charts. The book breaks things down into problems and sub-problems, making things easier. For self-learners, it is more gentle than the introductory book of Griffiths or Purcell.

"Pentium Pro and Pentium II System Architecture"

Author: Shanley

Press: Addison-Wesley Professional; 2 edition (January 10, 1998)

Unlike other books mentioned in this article, "Pentium Pro and Pentium II System Architecture" is about practice, not theory. It's a bit like the interior of Windows because it involves the details of a real working system. Topics include hardware bus protocols, how Istroke O actually works (such as APIC,Advanced Programmable Interrupt Controller, Advanced Programmable Terminal Controller), and so on.

The problem actually introduced is that complexity has been growing exponentially since CPU in 8080. The more you learn, the easier it is to understand the important movable parts of the system, and the more irrelevant the knowledge is. The book seems to compromise because the bus and the Icano protocol have to operate multiprocessors, and these systems contain many elements of modern systems, but in simpler forms.

Unfinished business

Among my favorite books, I would say that software books account for up to 25% and hardware books account for 5% at most. Generally speaking, books that are not listed on the list are more professional. The list also lacks topics in many areas, such as PL, practical books on how to learn programming languages, the Internet, and so on.

There are many reasons why I don't cover certain areas. For example, I don't list any books related to PL, because I don't read books on PL. I didn't mention the Internet because although I have read some books, I don't know enough about it to provide advice on useful books. Most hardware-related books are not included because they involve things you wouldn't care about, unless you are an expert (such as fault-tolerant circuit design ("Skew-Tolerant Circuit Design (The Morgan Kaufmann Series in Computer Architecture and Design, Harris) or ultrafast optics" Ultrafast Optics, Weiner)) that also applies to math and computer science theories. I left a considerable number of books that I think are classics, because I have little chance to use them in my daily programming life, such as extreme value combination theory (Extremal Combinatorics). I didn't list the books I didn't finish, unless I stopped, because they were extremely obscure. Because I didn't finish reading books like SICP and The Little Schemer, it means I can't make a list of classics. Those books are good, but the reason why I didn't finish reading them.

History and culture-related books such as "Inside Intel" or "Masters of Doom" are not included in the list. I may add a category to the list at some point in the future, which is the experiment I've been trying, like Julia Evans.

(stream of consciousness, with less or no draft). I have to go back and reread the books I read more than a decade ago and write meaningful comments, but this is not in line with my experiment. On this point, because this list is based on my memory, I hardly read all those books a few years ago, and I may have forgotten a lot of books, which I intend to add later.

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Servers

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report