See the letter, let's send, don't look forward to it.
The problem mentioned in the letter is very good, very universal, here is the best answer, please refer to it.
First, the advantages and disadvantages of language and platform?
A: The language and platform have no power, "" Can solve the current problem "is the best, who can say that Java, C and C # These fundamental design starting points are completely different languages / platform" better " Java is more suitable for fast architectures because it is mainly based on the Beans library, it is very engineered. C has very high requirements for programmers. It is basically in and c, there are more assembly backgrounds, object-oriented semantics is the construction of comparative low-level semantics. Therefore, better C textbooks will explain to you, those who look "advanced", which C is even compilation background. This is an important way to know C with a relatively clear low-level thinking. It is very helpful to learn some of its seemingly complex syntax, such as RTTI and Traits. And C # is basically implemented for Microsoft's .NET platform design, other C # compilers except for Borland's C # Builder, it is relatively small (but it is still a language, and Java itself has become a platform. Stroustrup language), and its control is basically in the language specification group of Microsoft Visual Studio development group (of course, after submitting to ISO will set up another special committee, this is different). If you choose to start learning from C #, this is of course ok, but you will find that on the basic level, it is not large, it is not large, 85% is exactly the same, on the details (such as the semantics of the pointer, boxing / UNBOXING and string formal constant processing, etc., and there is also a lot of new features in C # 2.0, such as Nullable Type. How can we say that these languages / platform "good"? They have special strengths in their respective fields. It is true that their fields are cross, and C is in the middle of these three, the applicable field is the most wide (see D & E, Stroustrup).
Second, Is C Overseas?
A: No, I don't think so. Anyone who said C is not as good as Java, there is no official investigation evidence, but only because of the use of Java in the circle of activities. In fact, the development speed of the Java platform is very fast, but this is not contradictory growth with the number of C users. As a general-purpose language / platform, Java has completed a lot of basic operations for users, and even the types such as large integers have been packaged, and users only need to transfer the corresponding package and call. However, C adheres to the style of the C language "trusted programmer", will be given to the user as much as possible (of course, the hosted C also has many protection measures for the resources according to the multi-year model), and users must be in many In addition, it is decided to derive the type derivation of the type of security under the conditions of storage management, abnormal conditions. Both are completely different, Java security, but C is very efficient, this rule determines that C will still be a mainstream language in a considerable time, and will play a leading role of language innovation. STL standardization and extensive application, and the deep people of the generic concept have laid the mainstream position of C 's unmovable third-generation language. Third, how do I learn C ?
A: C learning is the same as all other knowledge, it is vary from person to person, if you have the foundation of C language before, or the foundation of the assembly language before, it will be completely different from the point of view of C . But everything is studying, I think it is nothing more than the end of the right attitude (not for the chaos and eight-piece exams, but to learn some basic concepts), consolidate the foundation (not floating, not for the new concept of new words. Chaos, willing to think about the most foundation, it seems the most insignificant problem), choose a good textbook (Chinese written books, SCOTT Meyers, Stanley Lippman, Bjarne Stroustrup, Bruce Eckel's book should be seen, A lot of benefits), do more experiments (only one language, there are 1000 compilers, choose one or two common, their error information is better than what book
Good
Teacher), more people exchange (closed the door is a high talent, we are still a wise thing to think about Zhuge Liang, which is a smart language), use C as a daily term (not joking, mechanical language has engineering and The background, some are simply a direct portrayal of the concept, try to describe what you see with C ).
Fourth, relevant theoretical learning and future development.
A: Because you are big, your career choice is what you are in a hurry. What's more, computer science theory and technology practices are rare in scientific and technical classification. The most fearless is no less impetuous, you now think that you "want to be a information security expert", but how much is your knowledge about "information security"? I see, how many of you feel that it is a "hacker" will "more cool", holding such an attitude to learn, have to become a waste (please forgive my speech). Don't master C for others, they have no great consideration, including time, money, and even getting along with people (of course, not universal law). One thing is certain, that is, you will be willing to invest (time with others to mobilize!) To learn all the relevant theories (such as hardware and architecture, compiling theory, low-level language, discrete mathematics), you of course It will become excellent, it is very natural. Of course, in the current college students, it is too little person who can invest any additional energy (not for the exam for the exam!) In the academic business. In your letter, I also felt a crisis. But I can guarantee that if you can persistent, when you come to the real career, you will know what you are suitable for doing, and you will be confident that you can apply for any ideal business in your dream. Your life will be understood rather than confused, will be enriching rather than emptiness, will be happy rather than self-blaming, will be successful rather than failure. I hope that this letter can help you!
Gao Bo
Microsoft China