The growth process of C masters under Linux-classic book recommendation

Suggested learning path: 

  first learn the editor, vim, emacs, whatever. 
Then learn the make file file, as long as you know a little bit, then you can prepare the program. 

  Then take a look at "C Programming Language" K&R. In this way, you can basically perform general programming. By the way, look for a book about data structures. 

  If you want to learn UNIX/ LINUX programming, "Advanced Programing in Unix Envirement" is an absolutely classic textbook. Deepen your skills and study the second volume of "Unix Network Programing". So basically the system can be mastered.

  Then look at the first volume of Douglus E. Comer's "Internet Interconnection Using TCP/IP" to learn about network knowledge, and then read the first volume of "UNP", not only learning network programming, but also some commonly used system programming If you continue network programming, it is recommended to read the third volume of "TCP/IP for Internet Interconnection", which contains a lot of programming about application protocols such as telnet and ftp.
If you want to write a device driver, first you must be familiar with the interface of your system programming, such as files, IPC, etc., and then learn "LDD" 2. 

  Evaluation of several classic textbooks: 

  "The C Programing Language" K&R classic C language programming textbook, the author is the inventor of the C language, the content of the textbook is simple and profound. Although it is a bit old, it is a must-have manual, and now sometimes I still look through it. The space is relatively small, but every time you read it, you will get a reward. In addition, it can be replaced by Tan Haoqiang's "C Language Programming".

  "Advanced Programing inUnix Envirement" W. Richard Stevens: It is also a very classic book (nonsense, Stevens's book is not classic!), although beginners can read it, but in fact it is a supplementary material for "Unix Network Programming" . The level of the domestic translation of "Advanced Programming in UNIX Environment" is not very good. There is a photocopy version now, and it is easier to read English directly than to read Chinese.

  "Unix Network Programing" W. Richard Stevens: The first volume talks about the BSD Socket network programming interface and another network programming interface, but now BSD Socket is generally used, so you only need to read about half of this book. The second volume is not designed to network things, mainly talking about inter-process communication and Posix threads. So after watching "APUE", you can watch it. Basically, the system is summarized by "APUE" and "UNP" vol2. After reading "UNP", you will know most of the programming skills of system programming, even if Volume One is about network programming. In China, Tsinghua translated "Unix Network Programming", and the translators have relatively high knowledge and translation skills. So it is recommended to read the Chinese version.

  There are three volumes of "TCP/IP Xiangjie". Volume 1 talks about protocols, volume 2 talks about implementation, and volume 3 talks about programming applications. I haven't seen it much. , But it is said to be very classic, because I don’t have time to read the second volume, so it’s not convenient to evaluate it. 

  "Using TCP/IP for Internet Interconnection" Douglus.E.Comer has three volumes, Volume One talks about principles, Volume Two talks about implementation, and Volume Three talks about advanced protocols. It feels that this set is better than Stevens's, and even Stevens has to admit that its first volume is very classic. In fact, even if you don't have any knowledge of the Internet in Volume 1, you will know the ins and outs of the Internet after reading it. Many exercises in the first volume are also designed to be classic and practical, because the author himself is a teacher, and the first volume is a textbook for foreign graduate students. There are no answers to the exercises. I leave it to the reader to think about, because the answers to the questions can make you an intermediate Hacker. The answers to these questions can be obtained like Douglus, but he only gives the teacher Volume Two. I don’t think much. Volume Three can be used as a reference. The manual, the examples in it are also very classic. If you have read the source code of Qterm, you will know that most of the telnet implementation of Qterm comes from the source code of this book. For the book on network principles, I recommend it instead of Stevens' TCP/IP Xiangjie. 

  "Operating System-Design and Implement" is a book about operating systems, using Minix as an example. The author's mother tongue is not English, so English seems rather obscure. The domestic translation of "Operating System Design and Implementation", I have not read the Chinese version, because the translator is You Jinyuan, his translation of "APUE" has disappointed me. After reading this book, you will
have a clear understanding of how the underlying operating system works

  "Linux Device Driver" 2e, one of the few good books on Linux device drivers. However, the content is a bit messy, if you don't have some experience in writing drivers, you will be a little confused at first glance. The domestic translation of " Linux Device Drivers" is the second edition, the first edition, and the translators of the second edition I have deep contact, http://blog.csdn.net/shanzhiziHowever, in general, although the translation of the second edition is somewhat unsatisfactory, it has exceeded a lot compared to the first edition. To read this book, you should at least find some books on "Computer Principles" and "Computer Architecture" to read casually. At least you should have some understanding of the working process of hardware and computers.


Recommend "Advanced Programming in Unix Environment" 
"Linux Kernel Development" (Chinese name forgotten) 
"Analysis of Linux Kernel" 
"Linux Device Driver" 
"In-depth Understanding of Linux Kernel"

 

 

 

 

Elementary: Familiar with commands, familiar with Shell programming, able to configure simple services, know the location of configuration files related to various services,
understand and modify the configuration scripts provided by the system (/etc/*.*)
Recommended books:
" "Niaoge's Private Kitchen Basics, Advanced"
"Advanced Bash Shell"

Intermediate: Familiar with TCP/IP principles, OS principles, proficient in the use of C language, Linux system programming, network programming.
Recommended books:
"The C Programming Language"
"Unix Environment Advanced Programming"
"Linux Programming"
"TCP/IP Protocol Detailed Explanation Volume One"
"Unix Network Advanced Programming"

Advanced:
"Linux Device Driver"
"In-depth Understanding of Linux Kernel"
"In-depth Understanding computer systems"
"In-depth understanding of LINUX network insider"

 

 

Embedded books recommended 
Linux basics http://blog.csdn.net/shanzhizi 
1, "Linux and UnixShell Programming Guide" 
C language basics 
1, "C Primer Plus, 5th Edition" [America] Stephen Prata 
2, "The CProgramming Language , 2nd Edition" [US] Brian W. Kernighan David M. Rithie (K & R)
3. "Advanced Programming  in the UNIX Environment, 2nd Edition" (APUE) 
4. "Embedded Linux Application Development Detailed Explanation" 
Linux Kernel 
1 "In-depth understanding of the Linux kernel" (third edition) 
2. "Scenario Analysis of Linux Kernel Source Code" by Mao Decao and Hu Ximing's 
   R&D direction 
1. "UNIX Network Programming " (UNP) 
2. "TCP/IP Detailed Explanation" 
3. "Linux Kernel Programming " 
4, "Linux Device Driver Development" (LDD)  
5. "Linux Advanced Programming" by Yang Zongde
   Hardware Basics 
1, "ARM Architecture and Programming" Du Chunlei 
2, S3C2410Datasheet 
   English Basics 
1, "Computer and Communication Professional English" 
   System Tutorial 
1. "Embedded System-Architecture, Programming and Design" 
2. "Embedded System-Using Open Source Code and StrongARM/Xscale Processor" by Mao De Cao and Hu Ximing 
3. "Building
Embedded Linux Systems"   4. "Embedded ARM System Principles and Development of Examples" Yang Zongde "
   Theoretical Foundations" 
1. "Introduction to Algorithms" 
2. "Data Structure (C Language Edition)" 
3. "Computer Organization and Architecture? Performance Analysis" 
4. "In-Depth Understanding of Computer Systems" [America] Randal E. Bryant David O''Hallaron 
5, "Operating System: Essence and Design Principles" 
6, "Compilation Principles" 
7, "Data Communication and Computer Networks" 
8, "Data Compression Principles and Applications" 

C language book recommendation 
1. The C programming language 
2. Pointers on C 2. Pointers on C 
3. C traps and pitfalls 
4. Expert C Lanuage 
5. Writing Clean Code --- for Developing Bug-as free --MicrosoftTechiniques programs C 
   "programming essence --Microsoft write high-quality error-free C program secret" 
6. Programming Embedded Systems in C and C++ "Embedded System Programming" 
7. "C Language Embedded System Programming Practice" 
8. "High-quality C++/C Programming Guide" Lin Rui 
   should code as much as possible, and he must learn C well. Only focus on C itself. Algorithms, architectural methods, etc. are all important.

Suggested learning path: 

  first learn the editor, vim, emacs, whatever. 
Then learn the make file file, as long as you know a little bit, then you can prepare the program. 

  Then take a look at "C Programming Language" K&R. In this way, you can basically perform general programming. By the way, look for a book about data structures. 

  If you want to learn UNIX/ LINUX programming, "Advanced Programing in Unix Envirement" is an absolutely classic textbook. Deepen your skills and study the second volume of "Unix Network Programing". So basically the system can be mastered.

  Then look at the first volume of Douglus E. Comer's "Internet Interconnection Using TCP/IP" to learn about network knowledge, and then read the first volume of "UNP", not only learning network programming, but also some commonly used system programming If you continue network programming, it is recommended to read the third volume of "TCP/IP for Internet Interconnection", which contains a lot of programming about application protocols such as telnet and ftp.
If you want to write a device driver, first you must be familiar with the interface of your system programming, such as files, IPC, etc., and then learn "LDD" 2. 

  Evaluation of several classic textbooks: 

  "The C Programing Language" K&R classic C language programming textbook, the author is the inventor of the C language, the content of the textbook is simple and profound. Although it is a bit old, it is a must-have manual, and now sometimes I still look through it. The space is relatively small, but every time you read it, you will get a reward. In addition, it can be replaced by Tan Haoqiang's "C Language Programming".

  "Advanced Programing inUnix Envirement" W. Richard Stevens: It is also a very classic book (nonsense, Stevens's book is not classic!), although beginners can read it, but in fact it is a supplementary material for "Unix Network Programming" . The level of the domestic translation of "Advanced Programming in UNIX Environment" is not very good. There is a photocopy version now, and it is easier to read English directly than to read Chinese.

  "Unix Network Programing" W. Richard Stevens: The first volume talks about the BSD Socket network programming interface and another network programming interface, but now BSD Socket is generally used, so you only need to read about half of this book. The second volume is not designed to network things, mainly talking about inter-process communication and Posix threads. So after watching "APUE", you can watch it. Basically, the system is summarized by "APUE" and "UNP" vol2. After reading "UNP", you will know most of the programming skills of system programming, even if Volume One is about network programming. In China, Tsinghua translated "Unix Network Programming", and the translators have relatively high knowledge and translation skills. So it is recommended to read the Chinese version.

  There are three volumes of "TCP/IP Xiangjie". Volume 1 talks about protocols, volume 2 talks about implementation, and volume 3 talks about programming applications. I haven't seen it much. , But it is said to be very classic, because I don’t have time to read the second volume, so it’s not convenient to evaluate it. 

  "Using TCP/IP for Internet Interconnection" Douglus.E.Comer has three volumes, Volume One talks about principles, Volume Two talks about implementation, and Volume Three talks about advanced protocols. It feels that this set is better than Stevens's, and even Stevens has to admit that its first volume is very classic. In fact, even if you don't have any knowledge of the Internet in Volume 1, you will know the ins and outs of the Internet after reading it. Many exercises in the first volume are also designed to be classic and practical, because the author himself is a teacher, and the first volume is a textbook for foreign graduate students. There are no answers to the exercises. I leave it to the reader to think about, because the answers to the questions can make you an intermediate Hacker. The answers to these questions can be obtained like Douglus, but he only gives the teacher Volume Two. I don’t think much. Volume Three can be used as a reference. The manual, the examples in it are also very classic. If you have read the source code of Qterm, you will know that most of the telnet implementation of Qterm comes from the source code of this book. For the book on network principles, I recommend it instead of Stevens' TCP/IP Xiangjie. 

  "Operating System-Design and Implement" is a book about operating systems, using Minix as an example. The author's mother tongue is not English, so English seems rather obscure. The domestic translation of "Operating System Design and Implementation", I have not read the Chinese version, because the translator is You Jinyuan, his translation of "APUE" has disappointed me. After reading this book, you will
have a clear understanding of how the underlying operating system works

  "Linux Device Driver" 2e, one of the few good books on Linux device drivers. However, the content is a bit messy, if you don't have some experience in writing drivers, you will be a little confused at first glance. The domestic translation of " Linux Device Drivers" is the second edition, the first edition, and the translators of the second edition I have deep contact, http://blog.csdn.net/shanzhiziHowever, in general, although the translation of the second edition is somewhat unsatisfactory, it has exceeded a lot compared to the first edition. To read this book, you should at least find some books on "Computer Principles" and "Computer Architecture" to read casually. At least you should have some understanding of the working process of hardware and computers.


Recommend "Advanced Programming in Unix Environment" 
"Linux Kernel Development" (Chinese name forgotten) 
"Analysis of Linux Kernel" 
"Linux Device Driver" 
"In-depth Understanding of Linux Kernel"

 

 

 

 

Elementary: Familiar with commands, familiar with Shell programming, able to configure simple services, know the location of configuration files related to various services,
understand and modify the configuration scripts provided by the system (/etc/*.*)
Recommended books:
" "Niaoge's Private Kitchen Basics, Advanced"
"Advanced Bash Shell"

Intermediate: Familiar with TCP/IP principles, OS principles, proficient in the use of C language, Linux system programming, network programming.
Recommended books:
"The C Programming Language"
"Unix Environment Advanced Programming"
"Linux Programming"
"TCP/IP Protocol Detailed Explanation Volume One"
"Unix Network Advanced Programming"

Advanced:
"Linux Device Driver"
"In-depth Understanding of Linux Kernel"
"In-depth Understanding computer systems"
"In-depth understanding of LINUX network insider"

 

 

Embedded books recommended 
Linux basics http://blog.csdn.net/shanzhizi 
1, "Linux and UnixShell Programming Guide" 
C language basics 
1, "C Primer Plus, 5th Edition" [America] Stephen Prata 
2, "The CProgramming Language , 2nd Edition" [US] Brian W. Kernighan David M. Rithie (K & R)
3. "Advanced Programming  in the UNIX Environment, 2nd Edition" (APUE) 
4. "Embedded Linux Application Development Detailed Explanation" 
Linux Kernel 
1 "In-depth understanding of the Linux kernel" (third edition) 
2. "Scenario Analysis of Linux Kernel Source Code" by Mao Decao and Hu Ximing's 
   R&D direction 
1. "UNIX Network Programming " (UNP) 
2. "TCP/IP Detailed Explanation" 
3. "Linux Kernel Programming " 
4, "Linux Device Driver Development" (LDD)  
5. "Linux Advanced Programming" by Yang Zongde
   Hardware Basics 
1, "ARM Architecture and Programming" Du Chunlei 
2, S3C2410Datasheet 
   English Basics 
1, "Computer and Communication Professional English" 
   System Tutorial 
1. "Embedded System-Architecture, Programming and Design" 
2. "Embedded System-Using Open Source Code and StrongARM/Xscale Processor" by Mao De Cao and Hu Ximing 
3. "Building
Embedded Linux Systems"   4. "Embedded ARM System Principles and Development of Examples" Yang Zongde "
   Theoretical Foundations" 
1. "Introduction to Algorithms" 
2. "Data Structure (C Language Edition)" 
3. "Computer Organization and Architecture? Performance Analysis" 
4. "In-Depth Understanding of Computer Systems" [America] Randal E. Bryant David O''Hallaron 
5, "Operating System: Essence and Design Principles" 
6, "Compilation Principles" 
7, "Data Communication and Computer Networks" 
8, "Data Compression Principles and Applications" 

C language book recommendation 
1. The C programming language 
2. Pointers on C 2. Pointers on C 
3. C traps and pitfalls 
4. Expert C Lanuage 
5. Writing Clean Code --- for Developing Bug-as free --MicrosoftTechiniques programs C 
   "programming essence --Microsoft write high-quality error-free C program secret" 
6. Programming Embedded Systems in C and C++ "Embedded System Programming" 
7. "C Language Embedded System Programming Practice" 
8. "High-quality C++/C Programming Guide" Lin Rui 
   should code as much as possible, and he must learn C well. Only focus on C itself. Algorithms, architectural methods, etc. are all important.

Guess you like

Origin blog.csdn.net/weixin_37991107/article/details/80964863