Learn the use of C + + (predecessor summary)

Source: Internet
Author: User

C + + is an intermediate language, between assembly and high-level languages, requiring programmers to understand the internal data storage of a computer. Personally, as a student or to learn C + +, because "design mode" "Data structure" These courses are basically C + + coping better (my personal knowledge), learning C + +, read C + + primer, and then cooperate with the ADAPTIVE communication Environment (ACE) understand the design patterns, and then look at the "in-depth STL", you will find other languages are the same, the same is the idea itself.

In the following areas, C + + has a fundamental advantage: low-level system program design, advanced system program design, embedded programming, numerical scientific computing, general programming and hybrid system design and so on. Let's start with a little bit of description:

1. Low-level system programming: C + + is by far the best low-level programming language.

2. Advanced system design: including operating system core, network management system, compiling system, e-mail system, text typesetting system, image and sound orchestration System, communication system, user interface, database system and so on.

3. Embedded system: Including cameras, automobiles, rockets, telephone switches, automobiles, etc.

4. Numerical/scientific calculation: including simulation, real-time data acquisition, database access and so on.

On Bjarne's profile, there is a page of applications, which lists some (all or most) systems, applications, and libraries written in C + +. Here 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 to make computer stunts for Spider-Man and Lord of the Rings? That's right, Maya.

3. Amazon.com: Use C + + to develop large e-commerce software.

4. Apple: Some of the important "parts" are written in C + +.

5. T: The largest telecommunications technology provider in the United States, with the main products developed in C + +.

6. Google: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 using C + +.
Exchange
SQL Server
Frontpage
Project
All games
......

9. Kde:k Desktop Environment (Linux).

Symbian OS: One of the most popular cellular phone OS.

I usually use C + + for high-end program development.

The word "usually" has nothing to say, sometimes it's just a matter of corporate culture or personal interests, and other languages are chosen instead of C + + or vice versa. What I call "high-end" means: critical business processing, high efficiency requirements, real-time requirements and so on.

I see almost all the serious industrial control system software and real-time data acquisition, processing and performance (mainly graphics) software, are written in C + + (or C, a small portion of Java).

As far as I know, almost every institute in my former institute is using C + + (and some other languages) to a different degree.

Think about what kind of development language is most commonly used in the various variants of modern UNIX operating systems to date? (c + +)

C + + language

The C + + language is flexible, but first of all to see if the user can play its flexibility, the C + + language is strong enough, but to see whether the user has the ability to play its powerful function.

Writing a fast program using the C + + language and the compiler is not difficult, but it is not easy to write a large, robust and efficient program.

The difference between languages is not just the difference between curly braces and begin, end, or sub, End Sub. Choose a language, you choose a way of thinking, a programming idea. In order to jump out of the language, first of all, we must have a deep understanding of language and a thorough grasp. Some of the world's masters have often made no secret of their preference for a language (I don't specifically refer to C + +). Some people are smattering of language, and talk about getting out of the language-you don't have to jump out because you never go deep.

Purely technical (academic) research can always bring pure happiness to people. C + + language is very complex, can be very strong research, but generally speaking, no 3-5 years of continuous learning, thinking, use, it is impossible to really master C + +.

I am not a language or a tool-only person, but I object to the distinction between different languages and different development tools. Those who hold this view, unless they are ignorant, are ulterior motives. This is like the brand--------------------------------The laptop computer has entered the homogeneous

Choosing C + + or choosing Java depends on your personal interests and future intentions. Although it is only a linguistic difference, the employment areas determined by this are different.

No matter what technical route you take, whether you use it or not, learning C + + always brings long-term benefits. A developer familiar with C + +, if he is not a paranoid, then learn Java or C #, it is much easier.

C + + is just a programming language, we always use it to solve practical problems, so we need to learn development tools (such as Visual C + +), understand the operating system (such as the API), familiar with domain knowledge (such as power system), Master other software technology (such as database), and so on. The ability to write real code and solve real-world problems is the only criterion for measuring the true level of a programmer.

Design Patterns and unified Modeling Language

Design Patterns (Patterns) and the Unified Modeling Language (Unified Modeling language,uml) are two different concepts. The main goal of the former is to provide reusable object-oriented software design scheme, the latter is a standard language to depict software blueprint.

Of course, you can use UML to describe the structure of a design pattern.

UML describes the model can be mapped to C + +, C #, Java and other language code, and even can be mapped to a relational database. The mapping process can be bi-directional and typically has a corresponding software tool (or plug-in) support.

Different languages, features vary, which affects how design patterns are implemented in that language (way, difficulty). For example, if you use C to describe a design pattern, inheritance, encapsulation, and polymorphism become the design patterns that need to be researched, but in any object-oriented language, this is superfluous.

There is no such book on the market that tells the design pattern in C # (I don't see it), but it's not scrim, and if you're interested, you can read it completely. Design Patterns:elements of Reusable object-oriented Software (Chinese name "design mode" mechanical industry Press) This book, although it mainly in the C + + and Smalltalk language as a means to explain.

The design pattern itself is not so-called good or bad, according to the problem you want to solve, choose the appropriate design mode.

System Architecture

Architecture is the first priority in enterprise software development. There is a flaw in the architecture and the system is flawed. Excellent architecture comes from excellent design. This is beyond doubt.

Any successful software, even if it does not explicitly use the modeling ideas, architectural methods, but in the bones, subconscious, most of them have good design ideas and architecture.

Only after a lot of code has been written, it is possible to have a clear understanding of the software architecture only after doing some enterprise-class projects of sufficient weight. It is hard to imagine a person who has not written a few lines of decent code, and has a deep understanding of the program thought and architecture. This kind of people, ten to one, is an armchair.

We see this from time to time, and the software is not poorly designed, but programmers either don't know how to write implementation code, or the code is inefficient or not strong enough, and sometimes even the architect is helpless.

We also often hear some voices, not too rigidly tied to the language (technical) details, to from the Think big, to have bigger picture, the structure how important, these are truth. But the reality is often that many programmers are not too wedded to language (technical) details, but not enough to grasp the language (technical) details.

There is no doubt about the importance of book knowledge, but never think that by reading two books, you become a bullish architect, designer, or modeling expert.

In the past, software development has been immersed in practice and lacks the necessary theoretical guidance. Now more and more to the other extreme: design documents More and more illustrated, dazzling, but the development of software is much worse than before. What's the point of this kind of superficial?

Database

Most of the software to deal with the database, not only the MIS software, database knowledge is almost non-master, but the use of depth and breadth is different. So far, every project software I've written has access to the database, and one program even has to deal with two databases (Oracle and SQL Server).

If you've ever taken a course in basic-theory of a database, or read a book on the basic theory of a database, you may not need to buy more (or similar) books. For more than more than 20 years, the stability of relational database theory has far exceeded the stability of C + + language:)

Learn the use of C + + (predecessor summary)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.