C++ language from birth to now has gone through nearly 30 years. Admittedly, it is difficult to learn than other languages is high languages. it’s learning difficulty, mainly from its complexity. Now use of C++ has a lot less than before, java, C #, python and other languages in many respects can replace C++. However, there are many places that other languages can not be replaced completely, mainly in need to run more efficient in the industry, such as games, and efficient server.
Now number of learning java, C # and other languages is much higher than C ++, C ++ main entry threshold is too high, you may learn sometimes after not also do something, causing a heavy blow to confidence, and then give up.
Steps to Become a Good programmer in C++ Language:
We want to share some of the experience from the people who had already tried to learn same but circumstances caused failed everyone, we want to help newcomers less take some roads.
Here we do not discuss specific technical details, saying only that we should learn something.
Step 1: The Technical Capability:
1. Language: We want to be a programmer, Can learn a lot of very complicated things, but must start from the beginning to start learning the language, and learn the language of the most critical than selected book, school textbooks even, did not write well of.
In this highly recommended “C ++ Primer”, this book is very thick, the content is also very rich, to explain the knowledge of not only stay on the surface. If you have the patience to read this book, the basic language is no big problem for future learning also laid a good foundation.
2. GUI: There are many C++ GUI library terms, such as MFC, WTL, wxWidgets, QT. These GUI libraries have their own characteristics, in fact, as long as we first understand, as long as the in-depth understanding of a GUI library we can.
When you need to learn other things which presently not enough, in essence, are similar, will soon be to get started.
MFC although there are many design problems, but as an entry is good, also you can gain a lot of information, solve problems encountered any how.
3. Data Structures and Algorithms: Many people ignore structural aspects of data and knowledge of algorithms, especially in some programming language library that has done a very good. Almost do not need to go to achieve some of the data structures and algorithms, leading many programmes do not pay attention to even ignoring this knowledge.
But when we want our program to run faster and effective without using less memory, this knowledge is very much important. Many programes are just the beginning and eventually they do not pay much attention to these languages, but after working for several years they cram knowledge.
The most likely do not need to start learning too deep, but the basic data structures and algorithms must know.
Recommended data structure C language version in the data structures and algorithms learning, it is best not to care about the object-oriented aspects of the technique, use C language to achieve, so can be more concerned about the content on the algorithm by itself.
4. Database: Learning basics of database, becoming the master of database; it is recommended to use MySQL.
But it is best not to use some packaged interface and database API which should be provided directly by MySQL. The database may be more in-depth understanding.
5. Parallel: CPU frequency has been unable to follow Moore’s Law and the trend now is to develop multi-core CPU.
Whether it is multi-threaded or multi-process. It is to make better use of CPU performance, providing a better user experience.
This requires us if you want to write efficient applications, is bound to involve parallel computing. Spend some energy on parallel computing it, there will be rich rewards.
6. Network Programming: Network programming referred to here refers to socket programming.
C ++ applications now many of them are doing server development, how to develop a high-concurrency, high throughput, high stability of the server that we want to take into account.
7. Design Patterns: A design pattern is not a specific technology, more is how to make the code easier to read and better extension, easier to use.
8. Using The Library: C ++ standard library provides only some very basic features, so we often introduce some third-party libraries.
Is probably the most famous is called quasi-standard libraries boost library that provides various aspects of the technology used in our programming, text processing, algorithms, network, multi threading, image processing, and so on.
There is also some other monograph on one aspect of the library, such as ACE is the communication network, TinyXML is to parse the XML, OGRE graphics rendering area.
9. Knowledge of The Operating System: Programmers need to understand the operating system knowledge and ordinary users are not the same.
A master needs to understand all aspects of the operating system rather than stay in the use levels. As should be understood to see “windows core programming” what knowledge, windows on & Linux’s look at “in-depth understanding of Linux kernel”, should be able to know what you should learn.
Step 2: The Project Experience:
If you are proficient in contents of above, it can be considered a more powerful programmer. But for programmers project experience is more important.
A good project allows you to carry out integrated use of various technologies and can learn some new knowledge.
For example, do you need to learn the game graphics, and make players want to learn codec regard.
Many programmers will ignore the experience of the project but simply ability to talk about technology, this is wrong.
In fact, this is a relationship between theory and practice. The technology is theory of knowledge, to do project is to practice. Practice there is to know role of theory. The practice can deepen our in-depth understanding of the theory.
Step 3: Communication Skills:
Ability to communicate is a senior programmer to have soft power. I want to say here is not the general said communication understandable, speech, speak hype. But on the basis of technical communication skills.