What can C ++ help us with learning ?, Learning
C ++ is an intermediate language. It is between Assembler and advanced languages and requires programmers to understand the internal data storage of computers. I personally think that as a student, I still need to spend some time learning C ++, because the courses "Design Model" and "Data Structure" are basically better than those of C ++ (my personal experience ), learn C ++, read c ++ primer carefully, and then cooperate with The ADAPTIVE Communication Environment (ACE) to understand The design mode. Then, let's take a look at STL. it will be found that all other languages are the same, and the same is the idea itself.
C ++ has fundamental advantages in the following fields: low-level system program design, advanced system program design, embedded program design, numerical science computing, general program design, and hybrid system design. Let's briefly describe:
1. Low-Level System Programming: C ++ is by far the best low-level programming language.
2. advanced System Program Design: including the core operating system, network management system, compilation system, email system, text layout system, image and sound orchestration system, communication system, user interface, and database system.
3. Embedded Systems: including cameras, automobiles, rockets, telephone switches, and automobiles.
4. Numerical/scientific computing: including simulation, real-time data acquisition, and database access.
On Bjarne's personal homepage, there is a page of applications, which lists some (all or most) Systems, applications, and libraries written in C ++. The following are some examples:
1. Adobe Systems: all major applications are developed using C ++, such as Photoshop & ImageReady, Illustrator, and Acrobat.
2. Maya: Do you know what software is used for computer stunt effects of SPIDER and Lord of the Rings? That's right. It's Maya.
3. Amazon.com: use C ++ to develop large-scale e-commerce software.
4. Apple: some important "parts" are written in C ++.
5. AT&T: the largest telecommunications technology provider in the United States. Its main products are developed using C ++.
6. Google: The Web search engine is written in C ++.
7. IBM: OS/400.
8. Microsoft: The following products are mainly written in C ++ (Visual C ++:
Windows XP
Windows NT: NT4, 2000
Windows 9x: 95, 98, Me
Microsoft Office: Word, Excel, Access, PowerPoint, Outlook
Internet Explorer, including Outlook Express
Visual Studio: Visual C ++, Visual Basic, Visual FoxPro
The. NET Framework class library is written in C #, but the C # compiler itself is written in C ++.
Exchange
SQL Server
FrontPage
Project
All games
......
9. KDE: K Desktop Environment (Linux ).
10. Symbian OS: One of the most popular mobile phone OS.
I usually use C ++ for high-end program development.
There is nothing to say about the word "normally". Sometimes, for the sake of company culture or personal interests, other languages rather than C ++ are used, or vice versa. What I call "high-end" refers to key business processing, high efficiency requirements, high real-time requirements, and so on.
I have seen almost all serious industrial control system software and real-time data collection, processing and performance (mainly graphics) software, all adopt C ++ (or C, a few adopt Java).
As far as I know, almost every institute in my original research institute uses C ++ (and some other languages) to varying degrees ).
Think about it. So far, what development languages are most commonly used in various variants of modern Unix operating systems? (C/C ++)
C ++ Language
The C ++ language is flexible, but the first thing to do is to see if the user can make full use of its flexibility. The C ++ language is powerful enough, but it depends on whether the user can make full use of its powerful functions.
It is not difficult to compile a FAST program using the C ++ language and compiler, but it is not so easy to compile a strong and efficient large program.
The difference between languages is not just the difference between braces and begin, end or Sub, End Sub. If you select a language, you choose a way of thinking and a program design idea. To jump out of the constraint of language, you must first have a deep understanding and thorough understanding of the language. Some masters in the world often do not hide their preference for a language (I do not specifically refer to C ++. Some people are still familiar with the language, so they want to jump out of the constraint of the language-you don't need to jump out, because you didn't go deep.
Purely technical (academic) research can always bring pure happiness to people. The C ++ language is extremely complex and can be used for research purposes. However, generally, there are no three ~ 5 years of continuous learning, thinking, and use cannot really grasp C ++.
I am not a language-based or tool-based commentator, but I am opposed to denying the differences between different languages and development tools. Those who hold such opinions are not ignorant, that is, they have ulterior motives. This is just like a fake laptop whose favorite name is "laptop has entered the homogeneous era". How can a fake laptop be compared with IBM?
Choosing C ++ or Java depends on your personal interests and future plans. Although it is just a linguistic difference, the fields of employment determined by this are indeed different.
No matter what technical route you take or whether you use it for development, learning C ++ will always bring long-term benefits. A developer familiar with C ++ is much easier to learn Java or C # if he is not crazy.
C ++ is just a programming language. We always use it to solve practical problems. Therefore, we need to learn development tools (such as Visual C ++) and operating systems (such as APIS ), familiar with field knowledge (such as power system), master other software technologies (such as databases), and so on. Writing real code and solving practical problems are the only criteria for measuring whether a programmer has a real level.
Design Mode and Unified Modeling Language
Design Patterns and Unified Modeling Language (UML) are two different concepts. The former mainly aims to provide reusable object-oriented software design solutions, while the latter is a standard language that depicts software blueprints.
Of course, you can use UML to describe the structure of the design pattern.
The model described in UML can be mapped to C ++, C #, Java, and other language codes, and can even be mapped to relational databases. The ing process can be bidirectional. Generally, corresponding software tools (or plug-ins) are supported.
Different Languages have different features, which may affect the implementation of design patterns in the language (method and difficulty ). For example, if we use the C language to describe the design pattern, the inheritance, encapsulation, and polymorphism features become the design pattern to be studied, but in any object-oriented language, this is redundant.
I haven't seen a similar book on the market that uses C # as a means to describe the design pattern (I haven't seen it), but it's not tight. If you are interested, you can fully read the book Design Patterns: Elements of Reusable Object-Oriented Software (Chinese version name: Design Patterns Mechanical Industry Press, although it mainly uses the C ++ and Smalltalk languages as explanations.
The design mode itself does not matter. select an appropriate design mode based on the target problem you want to solve.
System Architecture
In enterprise-level software development, architecture is the most important. If the architecture is defective, the system will suffer severe damage. An excellent architecture comes from an excellent design. This is beyond doubt.
Any successful software, even if it does not explicitly use modeling ideas and architecture methods, has good design ideas and architecture in its bones and subconscious.
After writing a lot of code, you can only have a clear understanding of the software architecture after you have done some enterprise-level projects. It's hard to imagine a person who hasn't even written a few decent lines of code, but has a deep understanding of program ideas and architecture. This kind of person belongs to those who talk on paper.
From time to time, we can see that the software design is not too bad, but the programmer either does not know how to write the implementation code, or the code is not efficient, or not strong enough, sometimes even the "architect" cannot do anything about it.
We also often hear some voices, so we should not stick to the details of language (technology). We should look at the details from the perspective of a general situation and how important the architecture is. These are the truth. However, the reality is that many programmers do not stick to the details of language (technology), but do not have enough knowledge of the details of language (technology.
There is no doubt about the importance of book knowledge, but never think that after reading two books, you will become a cool architect, designer, or modeling expert.
In the past, there was no necessary theoretical guidance for the practice of software development. Now it is becoming more and more challenging: design documents are getting more and more illustrated and dazzling, but the software developed is much worse than before. What is the significance of this superficial article?
Database
Most software must deal with databases, not only MIS-type software. database knowledge is almost impossible. It is nothing more than the depth and breadth of use. So far, every project software I write has to access the database. One program even has to deal with two databases (Oracle and SQL Server) at the same time ).
If you have taken any basic database theory course or have carefully read any basic database theory book, you may not have to purchase more (similar) books. Over the past 20 years, relational database theory has been more stable than C ++ :)