: This article mainly introduces how to become an excellent high-level C ++ programmer. if you are interested in PHP tutorials, please refer to it. How to become an excellent high-level C ++ programmer
The C ++ programming language has been around for 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. Currently, C ++ is much less widely used than before. java, C #, python, and other languages can replace C ++ in many ways. However, many other languages are completely irreplaceable, mainly in industries with high operational efficiency, such as games and efficient servers.
Currently, the number of students studying java, C #, and other languages is much higher than that of C ++. The main reason is that the entry threshold for C ++ is too high. after learning for a while, you may not be able to do anything, as a result, confidence is greatly affected, and thus give up. I would like to share my experience with you and hope to help new people avoid detours. Here, we will not discuss specific technical details, but only what we should learn.
I. technical capability
1. language. We want to become a programmer and learn a lot of things, but we must start learning from the language at the beginning. The most important thing to learn a language is to choose a book, and the school textbooks should be ignored, it is not well written. C ++ Primer is a grand recommendation here. this book is thick and rich in content. the explanation of knowledge is not just superficial. If this book can be read with patience, there will be no major language problems, and a good foundation will be laid for future studies.
2. GUI. There are many types of GUI libraries in C ++, such as MFC, WTL, wxWidgets, and QT. These GUI libraries have their own characteristics. In fact, we only need to first understand one. if we have a deep understanding of a GUI library, it is enough to learn others when necessary, basically, it's almost easy to get started. Although there are many problems in the design of MFC, it is still good to get started, and there are a lot of learning materials, and it can solve problems.
3. Data Structures and Algorithms. Many people have neglected the knowledge of data structures and algorithms, especially the libraries of some programming languages, and almost do not need to implement some data structures and algorithms on their own, as a result, many programmers do not pay attention to or even ignore this knowledge. However, this knowledge is very important when we want to make our programs run faster and occupy less memory. Many programmers do not pay attention to this knowledge at the beginning, but they have been learning this knowledge after several years of work.
You may not need to learn too much at first, but you must know the basic data structures and algorithms.
We recommend "data structure (C language version)". we recommend that you do not focus on object-oriented skills when learning data structures and algorithms, this will focus more on the content of the algorithm itself.
4. database. We recommend that you use mysql instead of encapsulated interfaces. instead of using the database APIs provided by mysql, you may have a better understanding of the database.
5. parallelism. Cpu clock speed can no longer follow Moore's law. The trend of cpu development is multi-core. Both multi-thread and multi-process are designed to better utilize cpu performance and provide a better user experience. This requires that if we want to write efficient applications, we must involve parallel computing. If you spend more time on parallel computing, there will be a wealth of returns.
6. network programming. Network programming refers to socket programming. Many C ++ applications are currently developing servers. we need to consider how to develop a high-concurrency, high-throughput, and high-stability server.
7. design mode. The design pattern is not a specific technology, but more about how to make the code easier to read, better scalability, and more easy to use.
8. use of the library. The C ++ standard library only provides some basic functions, so we often introduce some third-party libraries. The most famous is probably the boost library called the quasi-standard library. It provides various technologies used in programming, such as text processing, algorithms, networks, multithreading, and image processing, almost all-encompassing. Others also have some monographs on some aspects of the library, such as ACE for network communication, TinyXML for parsing xml, and OGRE for graphic rendering.
9. operating system knowledge. The knowledge of the operating system that programmers need to know is different from that of common users. a master must have a deep understanding of all aspects of the operating system, rather than staying at the usage level. As for what knowledge should be learned, go to windows core programming on windows, and go to linux to understand the linux kernel, you should be able to know what you should learn.
2. project experience. If all the above content is proficient, it is also a very good programmer. But for programmers, project experience is more important. A good project allows you to use various technologies comprehensively and learn new knowledge. For example, when playing games, you need to learn graphics and decoder knowledge.
Many programmers will ignore the 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, and project is practice. theory has a role in practice. practice can deepen our in-depth understanding of theory.
3. communication skills. Communication skills are soft power that a senior programmer must possess. The communication skills I want to talk about here are not generally talkative. It is the communication capability of programmers based on technology.
Brotherhood Gao Luofeng free apprentice: http://www.hdb.com/party/lzcw-comm.html
Get the LAMP brother's original PHP video tutorial CD/detailed PHP Essentials edition for free. for details, contact the customer service on the official website:
Http://www.lampbrother.net
[IT education] video tutorials (courseware + Notes + video) on PHP, Linux, HTML5, UI, and Android are available )!
Network disk tutorial Download: http://pan.baidu.com/s/1mg8ANMg
The above describes how to become an excellent high-level C ++ programmer, including some content, and hope to help those who are interested in PHP tutorials.