In fact, it is not surprising to feel this way. In recent years, the number of programmers has increased dramatically. Various training institutions have mushroomed, mostly teaching JAVA or front-end technology, and there are few training institutions related to C++. One of the main reasons is that if you choose C++ language without formal background, you can learn like a gobbledygook.
With the development of the Internet, it is becoming more and more important to be able to land an idea in a short time. Languages such as JAVA, PHP, Python, GO and even JS are ahead of the competition because of their multiple ecological frameworks. However, it cannot be ignored that other languages have dominated each other for three or five years, and C++ has never fallen out of the top five. It can be seen that their position in the industry can not be overemphasized by evergreen trees.
The most important advantage of C++ language is memory self-management. This is also the main reason why its framework and even class library are few. Self-management of memory requires basic knowledge of operating system and computer principles, which is also the fundamental reason why everyone finds it difficult. In real-time control, high concurrency and other fields, the advantages of C++ language are very obvious. For example, most of the trading systems in the securities industry are written in C++ language.
After understanding the above situation, the subject should be able to understand the specific way out.
We prefer overtaking in corners to doing practical things. So we only care about ready-made frameworks and the like, and no one does the basics.
I have to admit that this phenomenon you mentioned does exist. The status of C++ today is indeed worse than before, but it does not mean that there is no way out. As long as you are professional and proficient, any language will still be useful.
1. In the past, c++ was widely used, especially visual c++, because there were relatively few development languages, most of which were low-level development and industrial software development. And c++ has its unique charm in developing the underlying hardware and service programs. Is this picture particularly familiar? It can be used as interface and bottom layer.
2. Later, more and more languages were developed, and technologies and applications were constantly developing. For example, java, which was widely used later, and python, which is developing rapidly today, are all products of the continuous development of society. The development of Internet gave birth to web development, and the development of artificial intelligence gave birth to python language, so the popularity of other languages was relatively reduced, which led many people to see the future, whether they needed to change languages, and so on.
3. But many fields still use c++, and many sub-fields still use C++. In addition, it is not bad to do server-side development. Now many game servers are developed by c++. In addition, I have to say that voice and video are still c++. Now many voice chats and live videos are also developed by c++. Therefore, c++ will not go out of date and continue to take off in the field where it is good at.
C++ grammar is over-designed, and there are a lot of grammars that are rarely used. Grammar is extremely flexible, easy to make mistakes, and has high requirements for users. Learning costs are also high. To be a C ++ project, we must have strict coding specifications to limit coding and prevent errors caused by poor grammar understanding. Writing detailed coding specifications is also a very troublesome thing, which increases the workload of the project. So there are fewer and fewer projects using c++
C++ is suitable for developing core modules, but not for developing projects based on application logic.
C++ language will not be a positive direction. what can I say? C language is the best transitional learning. My works are all derivative software of c++. I have studied qt for several years, and I have a great demand in Beijing. Or, as most people say, take the embedded direction of the underlying development, but only c++ is definitely not enough. In short, just like learning java development, it is not enough to learn only java open source software, but also need knowledge of framework project interfaces. How to connect in the service process, transmission process and so on (I don't know much about java, so I won't spray it).
In a word, the core algorithms are written in c++ language, and the high-level applications use c++ less. But then again, if you are proficient in c++ and learn other languages, it only takes a week.
There are more and more open source projects, and the basic components that C/C++ mainly faces are relatively mature. Just move bricks.
Without new theories and platforms, basic things don't need much attention. Only when there is a new direction and a large number of basic components need to be updated will C/C++ prosper temporarily.
It's only been a few weeks since I learned Java JavaScript C# python from C++, but I don't want to learn it and still sit there complaining.
Because golang started eating c++