The preface
C + + is a slightly more difficult than other languages in the language, it is more biased towards the bottom, and it contains thoughts is more, if you only learn the language itself, don’t focus on it involves ideas, will be struggling in the practical application of the future, so need to learn the language you pay double the effort to learn its subsidiary knowledge.
What do you do when you learn a programming language
The idea of the programming language itself is universal, whether you study C/C++, JAVA or PHP,Object_C,Python. They are all ideas, and when you learn one it becomes relatively easy to learn the others.
Here are some of the things you can do when you learn a language:
- Traditional development (e.g., developing various management systems)
- Mobile development (e.g. mobile APP development)
- Internet development (such as Taobao, JINGdong, etc.)
- Embedded development (e.g., routers, mobile phones, air purifiers, etc.)
When you’ve been working for a while you can make a career change, keep working in technology, and eventually become a technical leader or a top performer.
C++ learning route
The threshold of C++ is too high, you may not be able to do anything after learning for a period of time, resulting in a great loss of confidence, and then give up. Xiaobian to share their experience to everyone, hoping to help new people to take fewer detours.
We won’t discuss the technical details here, just what we should learn.
【 Article benefits 】 : Recommend xiaobian C language /C++ communication group: 836880131! Sorted out some personal feel better learning books, video material sharing in the group file inside, there is a need to add their own!
Introductory article
Pure small white or non-computer professional entry readers, first look for a thin C++ course, such as liu jing and zhou yulong co-edited the “advanced C++ language programming”, this book with a “advanced C++ language programming experimental guidance” in the learning process to complete their own experimental guidance on the small program.
C++ Primer is recommended for those with a basic knowledge of C++. This book covers almost all knowledge points of C++.
For more advanced content, such as C++11, you can see in-depth understanding of C++11: parsing and application of new C++11 features. The use of Boost library, can read luo jianfeng Boost library complete development guide into C++ “quasi” standard library.
Theoretical Basis
Programming fundamentals: data structures and algorithms, computer networks, operating systems, design patterns
No matter what programming language you use and what programming direction you are engaged in, as long as you do programming development, these four computer fundamentals cannot be avoided. It can be said that mastering these four basics is more important than mastering a programming language.
1. Data structure and algorithm
This directly determines the success or failure of the interview! I am familiar with several basic data structure types, such as string, linked list, binary tree, heap, stack, queue, hash, etc. Basic algorithms, such as search, sorting, dynamic programming, divide-and-conquer, etc.
References:
Introduction: “Big talk data structure”, “algorithm diagram”. Basic article: “Data Structure and Algorithm analysis” (this book has three versions, respectively C language version, C++ language version and Java language version). Advanced: If you feel your level is still ok, I recommend reading “Introduction to Algorithms”.
2. Computer networks
Computer network refers to the TCP/IP protocol stack, it can be said that it is the cornerstone of the current Internet communication, in any case, we must be familiar with the TCP/IP protocol stack, mainly is to learn and master the principle, including: ARP, IP, ICMP, TCP, UDP, DNS, HTTP, and HTTPS.
Recommended books:
TCP/IP In Detail (three volumes). Recommended introduction to network knowledge system: TCP/IP Volume 1: Protocol. After carefully reading the first, you can read the second and third according to your actual needs.
3. Operating system
This section focuses on principles related to processes and threads (atomicity, concurrency, locking), and principles related to memory (memory distribution, memory scheduling).
Recommended book: Understanding Computer Systems in Depth
4. Design patterns
There are 23 kinds of design patterns. Generally speaking, we only need to be familiar with a few common design patterns such as singleton pattern, factory pattern, agent pattern, strategy pattern, template method pattern.
Recommended books: Big Talk Design Patterns, Zen of Design Patterns.
Practical application programming
This chapter will cover some tools, programming environment and specific programming practices. After learning this part, I should be able to do something or understand some actual project code.
1. Use the Linux operating system
Many people programming beginners are in the Windows environment, and the actual enterprise development is almost Linux environment, so the Linux system must be able to, including: common Linux operation commands, basic Shell programming.
Recommended book: Birdman’s Linux Recipes
2. Compile/debug tools
The first is compilation: compilation tools!
Many people learn C language, C++ are similar to Visual Studio this kind of integrated IDE for code compilation, this actually also uses the compiler, but is Microsoft’s own MS compiler, and all operations are Visual. The most typical example is GCC. Some companies even have their own custom cross-compilation tools, but that’s ok. As long as you are familiar with GCC, there are no other problems.
Finally speaking of debugging tools, Linux platform GDB debugging tools to be proficient, will use it for debugging.
Debuging with GDB (In Chinese) and Writing MakeFile with Me (in Chinese)
3. Programming in Linux environment
Almost all C and C++ in the enterprise are based on the Linux platform, and there is no way to avoid this part
- Linux Programming
As we all know, there are various Windows apis in Windows programming system, and the use of Linux API is even more important.
- Multithreaded programming
This refers to the practice of multithreaded programming, which generally includes threads, resources, signals, synchronization, mutex, locks, and other specific programming methods.
- Network programming
Network programming here mainly refers to the programming practice of network programming API and IO function on Linux system.
Recommended books: All three together, recommended must-see books include Advanced Programming for Unix Environments, Programming for High Performance Servers in INUX, and POSIX MultiThreaded Programming
Experience in project
If the above content are proficient, is also a more powerful programmer. But for programmers, project experience is more important. A good project allows you to combine skills and learn something new. For example, people who make games need to learn about graphics, and people who make players need to learn about codecs.
Many programmers will ignore the experience of the project and talk only about technical ability, which is a mistake. In fact, this is the relationship between theory and practice, technology is theoretical knowledge, doing projects is practice, theory has a role in practice, practice can deepen our understanding of theory.
Ability to communicate
The ability to communicate is an advanced programmer’s soft power.
Here I want to say that communication ability is not generally said to be eloquent, bombastic, talk gibberish. It’s the ability to communicate based on technology.
conclusion
Finally, C language learning methods summed up a sentence:
Look more, knock more, think more
Make C++ learning fun.
C/C++ learning exchange group: 836880131 group has a good learning tutorial, from the entry to the project combat. Learning development tools used in development, complete project source code free to share and answer learning questions. Everyone in the learning process do not understand can join the exchange, you learn C/C++ language will be a great help!
C++ world is complex, but also represents that it is endless, new ideas means a new program, write their own programs, as if roaming in my world, although we will encounter all kinds of bugs and crashed programs, but while hair did not fall, temples did not white, seriously study C++ it!!