Practicing good programmers must-read list

1 Introduction

My undergraduate major is automation, PhD is the control theory and control engineering, but now is in big data, although inseparable from computer automation, and computer science courses have a lot of overlap, it should be considered closely related, but it's not a "computer Science and technology "," software engineering "and other computer science professional background, often also joked that he is" proper job ", may want to back up myself with a minor in computer science and technology professional, took a minor certificate, and this I graduated the second year and then assisted on the course into a second degree certificate, is not it also can be counted lesson class origin? Originally entrance is like to report a computer professional, accidentally on automation is also good, thought control system has benefited at work.
So the computer is mainly self-taught, through a lot of detours before, hoping to sum up my learning process of some of the ideas I hope to help newcomers, take some detours.

1.1 on paper books and e-books

As the paper book is more expensive, really expensive, but it is still necessary to buy paper books, paper books in addition to more expensive (compared to free PDF version), almost no other shortcomings, many advantages personal summary, for reference :
1) easy to carry
        a lot of people may think that this is the e-book's strengths, a U disk and can be stored at any iteration seen in my entire life and will look fast, but how you see it? Phone, Kindle can bring, but at takeoff and landing, when electronic equipment is to be shut down, the paper book can be read at any time.
2) Search convenient
        , of course, the paper has a search engine, it seems easy, but to read the book, probably remember the page number and position are similar, because of his own to draw the focus will soon be able to find what you want content, because sometimes things can not think of what you want to find the word, but just remember in a book about what position (you can pay attention to the next, remember the image of man, in fact, too many times stronger than the verbal memory) .
4) Review convenient
        Yes, the book mentioned in this article are worth buying and worth reading more than once, Reviewing the Old, to do their own teacher.
5) does not hurt the eyes
        electronic paper is also very good, after all, not a paper book.
6) the feeling
        is, the feeling did not book any electronic device, the kind of indescribable feeling, as well as the good book after reading the book covered up, when it moved deep Austin Austin feel.

1.2 About Reading

        I have a habit, like to ask a person to see what books the interview, the book will be able to see from TA judge, that person TA is not looking for. I remember an interview a few years ago, when asked a question, the answer is "Baidu will know," and not have their own ideas, not their own judgments, Baidu is not a panacea, especially your most helpless, the more difficult when Baidu more not help, must rely on Baidu "profound knowledge", so reading is necessary.
        Is intensive or extensive reading, a lot depends on the amount of knowledge of the purpose of reading a book, software developers need, all the books are precision is unrealistic, the heart may do understand, but for something important, or project of course, the content of the required accuracy is essential. But it must be pointed out that, whether it is intensive or extensive reading, must read the book , even turn a little faster, we should also turn finished a book, the book talked about knowledge what, to what extent mentioned in the event of the book covers the issue, the less you want to be able to think of it, come back and peruse.
        In English or Chinese version? If the conditional or read English, Chinese is not easy to understand, the book does have some translation was looking more uncomfortable, not as easy to understand in English, the way you can learn English, I just read a few years of English CET6 English Computer after technical books, half naked before graduation exam before. People in Europe and the absolute leader in computer terms, a good school is very useful for learning English or computers, many new technical documentation or software framework is the English version, in order to maintain technology leadership, the English will not be around past Kaner read more get used to it, especially technical books, it is exposition, in addition to technical terms are very simple sentences.

2. Overview

        First of all, to say what is "programmer", because the relevant technical positions in the field of computer technology are many: architect, operation and maintenance engineers, development engineers, test engineers, and different positions, different development language used by the team are not the same, The development platform also has Windows, Linux, Unix (soloris, HP-UX, AIX mostly), Mac OS, Android, iOS and so on. Just write the code should be called a programmer, even for operation and maintenance of quantities should write some automated script with Shell, Python, Perl and other languages, even if the DBA to write a complex stored procedures with SQL, no other languages complexity, programmers here I refer to all computer technology workers.
        What is a "good programmer" mean? Because the evaluation of a program is good not just from knowledge, technology assessment, and here to talk about the "good" is limited to knowledge and technology, the "good programmer" is an abstract of a relatively ideal technical workers, it does not depend on any operating system platform, not dependent on any one or a type of development language. Here does not depend, it can be seen all understand, at least to understand its depth varies depending on work experience. However, good programmers should have a common vision: to select the most appropriate technology at the lowest cost, quality, quantity, timely, efficient completion of the deployment of a software development project. So, in this article, regardless of programming language when scheduling knowledge, regardless of technology platform, but only the technology itself, different languages and not just a technical stage, which itself is the difference between knowledge points.
        This article from the previous basics, programming languages, software engineering, software and other areas of four parts summary I read think more classic books, and reading experiences for reference basics including the operating system, network, security; programming languages introduces several common programming languages books; software engineering involved in software design, architecture, project management; domain software that is big data, artificial intelligence, big data and cloud computing.
        The course focuses on the contents of the outer paper, because of the different schools each curriculum, courses in school are not the same, some books may have been efficient as some of the textbooks. Of course, there are many better book because of the limited time and energy, not read, or not read are also welcome to add users.

3. Basics

3.1 Overview

        At school, the teacher talking about a concept, what is "software", "Programs", told us two formulas:

程序 = 数据结构 + 算法
软件 = 程序 + 文档

        And in my view, where the + sign to change it, change the multiplication sign, multiplication sufficient to represent the importance of data structures and algorithms combine, rather than simply stacking; In addition, the big data era, the era of artificial intelligence (this word used was a bit excessive, but we are more than easy to understand, to be honest I do not like, where you can still borrow), the contents of the software actually undergone great changes, "data" still become an integral part of the software and even became a major part in some software, such as big data company, the company's core lies artificial intelligence data (including models), the new formula should be written as:

程序 = 数据结构 * 算法
软件 = 数据 + 程序 + 文档

        In addition, it is noted that, where the "documents" not only refers to the help documentation, project documentation, its form is also not limited to HTML, WORD, Excel, and in fact, the code itself is part of the document's metadata document itself part of each line of code, every variable, field, function names are part of the document, namely the "code that is the document."
More details about the software, please read the [US] Steve McConnell "Code Complete (2nd Edition)."
Software built encyclopedia
        This is a complete software build manual covers all details of the software build process. It dealt with in terms of software quality and programming ideas such as software to build various issues, and discusses in detail the new technology followed the trend, farsighted view, universal concept, but also rich and typical program example. The book discussed in the technology not only to fill the gaps between the primary and advanced programming techniques, but also provides a source of information on programming skills for programmers. ( Watercress )

3.2 Core Technology

        IT sector has two core technologies, and even today China is still relatively backward, that is the hardware chip technology and software in the operating system. For the programmer is concerned, the core technology is undoubtedly the operating system. So, no matter what language, you must first learn to be the operating system, although different operating systems have different, but mainly two groups, namely Unix / Linux and Windows-based system, in addition to Windows, other operating systems, almost all belong Unix / Linux system, including MacOS, iOS and Android. Android is nothing more than after the cut of Linux has added a Java interface framework for it. Understand the operating system reading:
Here Insert Picture Description
        The book has several versions, just remember that the English author Maurice J. Bach, the translation may not the same level, following this date.
Here Insert Picture Description        I did not read the new version, manufacturers are out, it should be no problem.
Think-depth understanding of Linux designed to be read under "Understanding the Linux Kernel", for various implementations of the Linux kernel principle explain more detailed and clear.
Here Insert Picture Description
Also you can read the Linux source code, of course, be familiar with the C language. There is a book devoted to Linux source code, written in Chinese, is good, where there read it.
Here Insert Picture Description
Although Linux version has been a lot of changes, but in fact the core content changes are not large, those maintaining the status quo of knowledge, technology is the real technology is better than learn a few programming language, because the language itself like English, Japanese, is just a tool, not the technology.
Further in-depth understanding of Unix / Linux you have to look at their API, must-read "Unix Advanced Programming Environment":
Here Insert Picture Description

For understanding of Windows, you can read "Windows core programming." C language basically learned, I do not understand it does not matter, you can understand the various operating systems and the Windows operating system provides an interactive interface that is Win32 API. If you really want to develop, or to refer to MSDN, MSDN documentation in this regard the universe really do best, no one (at least I have not seen). For sections used, MSDN can be used as a textbook reading.
Here Insert Picture Description

3.3 Network

In addition to the operating system, the program's most important core knowledge and technology is the network, network infrastructure should be in school are learned, for a programmer, the most important is the TCP / IP protocol stack up, RESTful specification matures and popularity, HTTP transmission protocol has become the first choice for all kinds of applications on TCP / IP protocol stack understanding, it is to design, develop any complex system are essential. "TCP / IP Detailed" must-read, in three volumes, should be a good read it again. Only in-depth understanding of the network, understanding the TCP / IP protocol stack, to maintaining the status quo at work, such as Paodingjieniu, its capability.
Here Insert Picture Description
Here Insert Picture Description
Here Insert Picture Description
(to be continued…)

Published 311 original articles · won praise 225 · views 840 000 +

Guess you like

Origin blog.csdn.net/Nocky/article/details/104887048