Home >Backend Development >PHP Tutorial >How to become a good advanced C++ programmer
How to become an excellent senior C++ programmer
The C++ programming language has gone through nearly 30 years since its birth. It is undeniable that it is more difficult to learn than other languages. Its learning difficulty mainly comes from its complexity. Nowadays, the scope of use of C++ is much smaller than before. Languages such as Java, C#, and python can replace C++ in many aspects. But there are also many places where other languages cannot be replaced at all, mainly in industries that require relatively high operating efficiency, such as games and efficient servers.
Nowadays, the number of people learning languages such as Java and C# is much higher than that of C++. The main reason is that the entry threshold for C++ is too high. You may not be able to do anything after learning for a period of time, which will cause your confidence to be greatly affected and give up. I want to share my own experience with everyone, hoping to help newcomers avoid detours. We will not discuss specific technical details here, only what we should learn.
1. Technical ability
1. Language. If we want to become a programmer, we will learn many and complicated things, but we must start with the language at the beginning. The most important thing for learning a language is to choose a good book. Even the school textbooks are not well written at all. of. I highly recommend "C++ Primer". This book is very thick and rich in content. The explanation of knowledge is not just on the surface. If you can read this book patiently, you will basically have no major language problems, and it will also lay a good foundation for future study.
2.GUI. There are many GUI libraries in C++, such as MFC, WTL, wxWidgets, and QT. Each of these GUI libraries has its own characteristics. In fact, we only need to understand one kind first. As long as we have a deep understanding of one GUI library, it is enough to learn other ones when needed. They are all similar in essence and can be used quickly. Get started. Although MFC has many problems in its design, it is still good as an introduction. There are many learning materials and it is easy to solve problems when encountering them.
3. Data structures and algorithms. Many people have ignored the knowledge of data structures and algorithms. In particular, some programming language libraries are very good and there is almost no need to implement some data structures and algorithms by themselves. As a result, many programmers now do not pay attention to or even ignore this knowledge. . However, this knowledge is very, very important when we want our programs to run faster and take up less memory. Many programmers don't pay attention to these when they first start, but after working for a few years, they come to learn this knowledge.
You may not need to study too deeply at first, but you must know the basic data structures and algorithms.
Recommend "Data Structure (C Language Edition)". When learning data structures and algorithms, it is best not to care about object-oriented techniques and just use C language to implement them. This way you can focus more on the content of the algorithm itself.
4. Database. To learn the basic knowledge of databases and master the use of a database, it is recommended to use mysql, and it is best not to use some encapsulated interfaces. Instead, you should directly use the database api provided by mysql. You may have a deeper understanding of the database.
5. Parallel. The main frequency of CPU can no longer follow Moore's Law. The current development trend of CPU is multi-core. Whether it is multi-threading or multi-process, it is all to better utilize the performance of the CPU and provide a better user experience. This requires that if we want to write efficient applications, parallel computing must be involved. Spend more energy on parallel computing, and there will definitely be rich returns.
6. Network programming. The network programming referred to here refers to socket programming. Nowadays, many C++ applications are used for server development. How to develop a server with high concurrency, large throughput, and high stability is what we have to consider.
7. Design patterns. Design patterns are not specific technologies, but more about how to make code easier to read, better extensible, and easier to use.
8. Use of libraries. The C++ standard library only provides some very basic functions, so we often introduce some third-party libraries. The most famous one is probably the boost library, which is called the quasi-standard library. It provides various technologies used in our programming, including text processing, algorithms, networks, multi-threading, image processing, etc., covering almost everything. There are also some other libraries that specialize in a certain aspect, such as ACE for network communication, TinyXML for parsing xml, and OGRE for graphics rendering.
9. Knowledge of operating systems. The operating system knowledge that programmers need to know is different from that of ordinary users. A master needs to have an in-depth understanding of all aspects of the operating system, rather than just staying at the usage level. As for what knowledge you should know, go to "Windows Core Programming" for Windows, and "In-depth Understanding of the Linux Kernel" for Linux. You should be able to know what you should learn.
2. Project experience. If you are proficient in the above content, you can be considered a relatively powerful programmer. But for programmers, project experience is more important. A good project allows you to comprehensively apply various technologies and learn some new knowledge. For example, those who make games need to learn graphics knowledge, and those who make players need to learn codec knowledge.
Many programmers will ignore project experience and simply talk about technical capabilities. This is wrong. In fact, this is the relationship between theory and practice. Technology is theoretical knowledge, doing projects is practice, theory has an informing effect on practice, and practice can deepen our in-depth understanding of theory.
3. Communication skills. Communication skills are the soft skills that a senior programmer must possess. The communication skills I want to talk about here are not the usual eloquence, rhetoric, and extravagant speech. It is the programmer's communication skills based on technology.
Brotherhood Gao Luofeng recruits disciples for free: http://www.hdb.com/party/lzcw-comm.html
Receive LAMP Brotherhood’s original PHP video tutorial CD/"Explain PHP in detail" free of charge, please contact the official website customer service for details:
http://www.lampbrother.net
【Brothers IT Education】Learn PHP, Linux, HTML5, UI, Android and other video tutorials (courseware + notes + videos)!
Network disk tutorial download: http://pan.baidu.com/s/1mg8ANMg
The above has introduced how to become an excellent advanced C++ programmer, including aspects of it. I hope it will be helpful to friends who are interested in PHP tutorials.