After reading the "Four Books of the Based Technology Development" written by Liu Jiang, the third phase of the programmer ", I'm deeply in touch, I can't help but talk about my own ideas. More and more people have added to the industry developed industry, but there is a graduate person, including me a few years ago, I will fall into a misunderstanding, I hope to learn a variety of programming technology quickly, so that I can immediately see Making a program or software that can run, it seems that this can become a master, so it is like hungry to learn the grammar of various languages, and to pursue those gobbled technologies, and ignore the composition principle, operating system, assembly language of computer discipline. The accumulation of basic knowledge.
In fact, there are many knowledge of compilation, operating system, composition principles, system-level programming, such as "Five Books, Four Books, Development, Four Books,", have many knowledge in computer disciplines. As a software developer, if it is very familiar with these knowledge, it should also be understood and mastered. Only by understanding the underlying mechanism, familiar with the difference in the characteristics of the system and the platform between platforms can make better software combined with the system. When there is a problem related to the underlying mechanism, it will not be seen because of the lack of knowledge of the underlying mechanism. For example, why does the floating point spillout? Why is the host? What is Little-Endian or big-endian? What is the buffer overflow? How should I prevent? For advanced languages, perform the same logic function, different statements (E.G. for, while), will the compiler convert to what assembled code? Which is better efficiency? Wait.
In these bibliography, I prefer "in-depth understanding of computer system (revised)", its original name Computer System A Programmer's Perspective can reflect the uniqueness and practical value of this book, and can use Cygwin Tools in Windows Platform Enjoy the fun of programs under Linux, if you can talk to specialize in Linux, check the assembly code's "assembly language programming", I believe those who don't like compilation will gradually like this language. At present, many software development do not require programmers to skilled in assembly language, but programmers can be familiar with assembly language. When software is running, there are some difficult bugs, or when performance bottlenecks, can be converted through compiler The assembly code finds the root source and finds potential low efficiency in the code. "Operating System Concept" Theoretical, conceptual is more conceptual. Bach's "Unix Operating System Design" should be combined with Stevens' Unix Environmental Programming ", and then write a handwriting process, there will be half-time effect. If you like to learn Linux kernels and operating systems, in addition to the article recommended, there is a rare good book is "operating system principles, technology and programming", which combines theory and practices. Regarding the book for the underlying mechanism of the program language, if I let me choose again, I will add Lippman's "deep exploration C object model". I will understand the inheritance, virtual function, polymorphism, etc. of the C language. How the object or dynamic language is implemented by the C compiler.
The above is some of my personal opinions, but I am not fully understood by these books. Due to the limitations I have mastered, there will be many omissions and mistakes, welcome everyone to give me criticism. But I am a little in mind: I have mastered these underlying, the basic knowledge does not mean that it has become a master, but it has paved a road to a master. What do you say?