We all know that ** C/C ++** has been ranked in the top five since 2002, no matter how The Times develop, which shows its position in the world of programming languages. Programming circles popular such a sentence: C can do almost anything, C ++ can do almost everything, which shows its powerful function.

We all know that C ++ is fully compatible with C, c++ is an enhanced version of C, if you have not learned C or other languages, such as C #, then learn C ++ will feel very difficult, so how is C ++ more difficult than other languages?

C++ has too much historical baggage

**C++** is an invention in the 1980s, which is relatively old. In the long-term development, there are a lot of historical problems. When solving a problem, we face too many choices, in order to compatible with the previous code and previous specifications, we have to make the whole system complex and huge.

C++ does not have a single master

For example, Microsoft’s c#, oracle’s Java, Google’s go, c++ doesn’t belong to any one team. It doesn’t have a single compiler developer, Microsoft’s MSVC, Linux’s g++, clang, etc. There are so many manufacturers, but none of them is dominant. No one listened to each other, and eventually they had to form a c++ standard association, and they negotiated and compromised, and the compromise resulted in c++ becoming incredibly complicated, compatible with this and that, and so far there hasn’t been an accepted strict c++ specification, c++ is very free, and free means hard

C++ has no perfect automatic garbage collection mechanism

Pointers are the essence of C/C ++ and also a source of difficulty. Many programming languages, such as Java and Python, do not have Pointers because their virtual machines or interpreters come with garbage collection mechanisms, so programmers do not have to worry about memory collection. And c/c + + after finished with the application of memory space, and recycling, the most common problem is to forget to recycling or other variables are references to early recovery, and recycling language, programmers don’t need to worry about these things, don’t need to know is how to allocate memory, the who to recycle and how to recycle, automatic garbage collection, Advantages are simple for developers, disadvantages are relatively inefficient, ** C/C ++** focuses on efficiency at the expense of simplicity.

4. C++ syntax is extensive and profound

With all of the above mentioned, what is it about c++ that makes it difficult? Compared with Java, C#, Python, PHP, JavaScript, Go, C, R, scala, F#, in terms of pure syntax, the difficulty of C++ is not at the same level at all. Those who say C++ is simple are probably those who have only played C++ and don’t know other languages. Complex const and static semantics, pointer operations, fetch operations, templates, polymorphism, constructors, inheritance, etc.

Fifth, there are not many third-party libraries

Relatively speaking, c++ advocates building from the wheel, there are not too many third-party libraries, many seemingly simple functions have to be realized by themselves or desperately looking for libraries, generally speaking, c++ will master better after using for a long time, because you can continue to accumulate library functions.

No one language is absolutely good absolute bad, each have their advantages and disadvantages, c + + is a very flexible language, have the ability to write high performance code, almost covers all the fields, we can think of, including aerospace, semiconductors and device drivers, etc., and c + + in addition to performance advantage, also very stable, Code from 20 years ago is still usable today.