Thank you! You have received your letter. Do not look forward to it.
The questions mentioned in the letter are very good and universal. Please correct them if they are inappropriate.
I. What are the advantages and disadvantages of languages and platforms?
A: language and platform have no advantages or disadvantages. "What can solve the current problem" is the best, who can say that the fundamental design starting points of Java, C ++, and C # are completely different languages/platforms. Who is "better? Java is more suitable for fast architecture because it mainly relies on the beans library and is very engineered. C ++ has very high requirements on programmers. It is basically the same as C and has more Assembly background. The object-oriented semantics is constructed on a relatively clear Low-layer semantics. Therefore, better C ++ textbooks will show you the background of C and even compilation operations that seem to be "advanced. This is an important way to get to know C ++ with a clear and clear Low-layer thinking method. It is very helpful to learn some of its seemingly complex syntaxes, such as rtti and traits. C # is basically designed and implemented for Microsoft's. NET platform. Other C # compilers, except Borland's C # builder, are relatively small (but it is stillLanguageJava has becomePlatform, Stroustrup), and its control is basically in the language specification group of the Microsoft Visual Studio Development Group (of course, after being submitted to ISO, another special committee will be established, which is different ). If you choose to start learning from C #, this is certainly possible, but you will find that on the basic level, it is not much different from C ++, and 85% is exactly the same, in terms of details (such as pointer semantics, boxing/unboxing, and processing of string literal constants, C #2.0 also adds many new features, such as nullable type. How can we say which of the following languages/platforms is better? They have special strengths in their respective fields. It is true that their fields are cross-cutting, and C ++ is among the three, but the most widely applied fields (see D & E, stroustrup ).
Ii. Is C ++ outdated?
A: No, I don't think so. No one who says that the number of C ++ users is less than that of Java does not have any official investigation evidence, but it is because many people use Java in their own activity circles. In fact, the Java platform is developing very fast, but this is not in conflict with the growth of the number of C ++ users. As a general language/platform, Java has completed a lot of basic operations for users, and even the types such as big integers have been encapsulated, you only need to import and call the corresponding package. However, C ++ follows the C language "trusted programmers" style and gives users as many choices as possible (of course, the managed C ++ has also implemented many protection measures based on years of model ), in many cases, users must make their own decisions, such as storage management, security under exceptional conditions, and type derivation in the class inheritance system. The two are completely different. Java is secure, but C ++ is very efficient. This article determines that C ++ will remain the mainstream language for a long time, it will also play the leading role in language innovation. STL standardization and extensive application, as well as the concept of general (generic) are deeply rooted in the hearts of the people, has laid the mainstream position of C ++'s unshakable third-generation language.
3. How can I learn C ++?
A: C ++'s learning is the same as that of all others. If you have a C language or a C language, then the perspective of C ++ will be completely different. However, I think that learning is nothing more than a correct attitude (instead of studying for a messy exam, but learning for basic concepts) consolidate the Foundation (don't float, don't get confused about the new concepts, and be willing to think over and over again about the most basic and seemingly insignificant issues) select a good teaching material. (no books written by Chinese people are read. Scott Meyers, Stanley Lippman, Bjarne stroustrup, and Bruce Eckel should read the books again) more experiments (only one language, but there are 1000 compilers, choose one or two commonly used, their error information is more than what book Good Teachers), communicate with others (building a car behind closed doors is a task done by high talents. We are still wise to concentrate on the wisdom of the craftsman and think that Zhuge Liang is a bit wise) c ++ is a commonly used language (not joke, mechanical language has engineering and fact backgrounds, and some are a direct portrayal of concepts, use C ++ to describe what you see and what you think ).
4. Theoretical Study and future development.
A: Because you are a freshman, your career choices are urgent. Moreover, Computer Science Theory and Technology Practice are rare disciplines with such a large correlation in science and technology classification. What you are most afraid of is nothing more than an impetuous word. You now feel that you "want to be an information security expert", but what do you know about "information security? I think, most of you think it will be "cool" to become a "hacker" and learn with this attitude, so you have to become a waste (please forgive me for speaking ). Don't be surprised when others have mastered C ++. They have to pay a huge price, including time, money, and even become difficult to get along with people (and of course not a general rule ). One thing is certain, that is, you are willing to invest (the time spent by others !) If you learn all relevant theories (such as hardware and architecture, compilation theory, low-level language, and discrete mathematics), you will naturally become excellent. Of course, in today's college students, they are willing to invest any additional energy in their studies (not interested in their own theoretical research for the exam !) There are too few people. In your letter, I also felt a little crisis. But I can ensure that if you can persevere, you will know exactly what you are suitable for when your real career choices come, you will also apply for any ideal company in your dream with confidence. Your life will be clear, not confused. It will be full, not empty. It will be happy, not self-blaming. It will be successful, not failed.
I hope this letter will be helpful to you!
Gao Bo
In Microsoft China