C + + is a very wonderful language. Make people love and hate.
A post seen on the know. How to be proficient in C + +, here excerpt some wonderful reply.
Links: http://www.zhihu.com/question/20201972/answer/23454845
Source: Know
1
Mastering C + + is a daunting task.
Why is C + + so much harder to learn than other languages? In fact, this is basically because C + + father Bjarne Stroustrup said, "I particularly hate the language of the designer to impose their preferences to the user" (see GO).
As a result, C + + in order to not limit your thoughts, so it becomes the same as now-including a number of paradigms, there is probably an object-oriented (flexible application of virtual inheritance +shared_ptr can achieve java/c# effect) template (there are two categories, the type rich Programming and meta-programming, very different) functional programming (now with Lambda, mate files.) It's unbeatable. Process style But it is commendable that these kinds of things in C + + mixed together is how natural. It just takes time for you to take control of him. There is no need to really learn this point, I think it is related to your field. For example, I am basically a split personality, because: when I am engaged in language design and compiler, I always tend to create a variety of small DSL to use for themselves, with the template (think of the boost spirit probably clear I mean, although I do not use it), Try to get people who have the same background as me to understand the meaning of my Code at a glance. When I was doing my GUI library (www.gaclib.net). Purely with the OO and IOC set. When I write the 3D rendering program, I become a person who sacrifices readability for performance. When I was different from me. I will of course only use part of C + + to complete my current task. This seems to be a multiple standard. However, this is actually due to the nature of the project itself.
By this time you will think that C + + is really a good language. C + + can help you when you need to give up the different parts for your project.
C + + can help you do this when you need different levels of abstraction that require varying performance requirements. Suppose you use another language. You will finally find that the language can only do certain kinds of projects. This is because C + + is free to let you give up some parts. Other languages will prevent you from giving up certain parts.
In order to reach this level, you must enter a state that is infinitely close to mastering C + +, at which point you will be able to move freely. Not tied to the various values of the C + + community. If your project is very large. Different parts have different characteristics of the time (what. A program that does not have one thousand or two thousand people all over the world write for 20 years? )。 It is more necessary for you to have such a skill. In this case, everyone probably knows exactly what it feels like to be proficient in C + +--man flexible.
2
Google project has two levels of mastery of C + +:
has C + + readability (readability) authentication. This certification requires that you write a complex, complete class in your actual work, and then submit the class to a committee for review, and the Committee will help you correct common mistakes. Assuming that your class satisfies all the requirements of style guide[1], you can get a readability certificate after two weeks. In general, you need to write at least thousands of lines of code in your actual work to achieve this requirement.
The readability of C + + has two main meanings to project master. One is to familiarize yourself with and avoid the pitfalls of C + + (for example, don't use iostream and exception). Another is familiarity with some of the frequently used library functions, such as the various operations of string. Use of Hash_map and smart pointer, etc.). With this certification, the project architect has the right to read the C + + program written by others in code review (note that this is not readability review).
The vast majority of project masters are at this level of C + +.
Advisor-level C + + program ape.
You typically have to write tens of thousands of lines of C + + code. A more complex system is implemented in C + +. Familiar with the common design patterns and application in the actual work, the code refactoring has a wealth of experience, the most important is. Being a C + + consultant for groups and colleagues, is the first person to think of a question when a colleague has a C + + usage problem. Advisor-level C + + program apes are generally advanced project Master (senior engineer) and above, not only for some programming languages. Also experienced in various project issues at work. In fact "Mastering C + +" is not just familiar with C + + itself, you need to be proficient in the project issues and peripheral issues that C + + needs to achieve, and the "mastery of C + +" is relative. If you can be a C + + consultant in the group, you can help colleagues to correctly use the language to effectively solve project problems and avoid the mistakes of C + +, you are the person proficient in C + +.
3
Never trust a programmer who says he knows C + +
4
Proficient in C + +, the personal understanding is: 1, can be used in C + + oriented design, decomposition. Development of a module or small system 2, in the case of a bug can debug 3, familiar with the image, inheritance. Template. can use the STL,BOOST4, can be familiar with several commonly used design patterns 5, on this basis, with the help of Google God, can read open source or closed sources source code. The other. I think the usefulness is not strong, to pick up the details of the language, the realization of language and so on. That's not a master. That's the avatar. Anyway I know the technical cattle people. People are to pick up the system, the details of the principle, very little to buckle language. Originally the language is a tool, with good him, broken can be simple maintenance, tube how he realized.
5
What's a good command of C + +?