Learn what C + + can bring us _c language

Source: Internet
Author: User

C + + is precisely a mid-level language, between the Assembly and the high-level Language bar, requires programmers to understand the computer's internal data storage. Personally, as a student or spend kungfu to learn C + +, because "design pattern" "Data structure" These courses are basically C + + to cope with better (my personal experience), learning C + +, read C + + primer carefully, and then with the adaptive communication Environment (ACE) to understand the design pattern, and then see "Simple and simple STL", you will find that 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 science calculation, general programming and hybrid system design and so on. Let's start with a little bit of a description:

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

2. Advanced system programming: including operating system core, network management system, compiling system, email system, text typesetting system, image and sound arrangement system, communication system, user interface, database system and so on.

3. Embedded systems: including cameras, automobiles, rockets, telephone exchanges, automobiles and so on.

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

On Bjarne's personal homepage, there is a page applications that lists some (all or most) of the systems, applications, and libraries that are 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: Know the "Spider-Man", "Lord of the Rings" computer stunt is using what software to do it? Yes, it's Maya.

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

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

5. At&t: The largest telecommunications technology provider in the United States, the main products using C + + development.

6. Google:web search engine is written in C + +.

7. ibm:os/400.

8. Microsoft: The following products are mainly written by 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 with 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.

There is nothing to say about the term "usually", sometimes just for reasons of corporate culture or personal preference, other languages rather than C + +, or vice versa. What I mean by "high end" refers to: key business processing, high efficiency requirements, high real-time requirements and so on.

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

As far as I know, almost every research institute in my original institution uses C + + (and some other languages) in varying degrees.

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

C + + language

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

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

The difference between languages is by no means just the difference between curly braces and begin, end, or sub, End Sub. When you choose a language, you choose a way of thinking, a programming idea. To jump out of the bondage of language, we must first have a deep understanding of language and a thorough grasp. Some of the world's master-level characters often make no secret of their preference for a language (I don't specifically refer to C + +). Some people have little to say about language, and talk about getting out of the language-you don't have to jump out, because you never go deep.

Pure Technical (academic) research can always bring pure happiness to people. C + + language is extremely 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-speaker, but I am opposed to erasing the differences between different languages and development tools. Those who hold this view, if not ignorant, are ulterior motives. This is like a motley notebook manufacturers are most fond of shouting "notebook computer has entered the homogeneous era," the same, how can the machine compared to IBM?

Choose c + + or choose Java, to see your personal interests and the future of the plan. Although it is only a linguistic difference, the area of employment that is determined by this is indeed different.

No matter what technical route you take, whether you use it for development 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 #, is much easier.

C + + is just a programming language, we always use it to solve practical problems, so learn development tools (such as Visual C + +), understand the operating system (such as APIs), be familiar with domain knowledge (such as power system), master other software technologies (such as databases), etc. The ability to write real code and solve real-world problems is the only criterion for measuring a programmer's true level.

Design patterns and Unified Modeling Language

Design Patterns (designs Patterns) and the Unified Modeling Language (Unified Modeling LANGUAGE,UML) are two different concepts. The former mainly aims to provide reusable object-oriented software design, the latter is a standard language to depict software blueprints.

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

UML describes the model can be mapped into C + +, C #, Java and other language code, can even map 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 differ, how much this will affect the design pattern in the language implementation (way, difficult). For example, if the C language is used to describe design patterns, then inheritance, encapsulation, and polymorphism become the design patterns that need to be studied, but in any object-oriented language this is redundant.

There is no such book on the market as a C # to tell a design pattern (I don't see), but it's not important, and if you're interested, you can totally read the patterns:elements of reusable object-oriented Software (Chinese name "design mode" machinery industry Press) This book, although it mainly in C + + and Smalltalk language as a means of interpretation.

The design pattern itself does not have the so-called good or bad, according to you to solve the goal problem, chooses the appropriate design pattern.

System architecture

In enterprise-level software development, architecture is the first important. There is a flaw in the architecture and there is a mishap in the system. The excellent architecture comes from the excellent design. There is no doubt about that.

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

Only after you have written a lot of code, can you make a clear understanding of the software architecture only after you have done enough of the enterprise-level projects. It is hard to imagine a person who has not written a few lines of decent code and has a deep understanding of the ideas and architecture of the program. This kind of person, ten to one belongs to the armchair.

We see this from time to time, software design is not too bad, but programmers either do not know how to write the implementation code, or the code is inefficient, or not strong enough, and sometimes even the "architect" themselves to do nothing.

We also often hear some voices, not too rigidly adhere to the language (technical) details, to from big picture, to have a big picture, how important the architecture, these are truth. The reality, however, is that many programmers are not overly wedded to language (technical) details, but are far from enough to grasp the details of language (technical).

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

Previous software development immersed in practice and lacked the necessary theoretical guidance. Now more and more to the other extreme: design documents More and more illustrations, dazzling, but developed software is much worse than before. What's the point of this kind of cosmetic?

Database

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

If you've ever taken a class in a database base theory, or read a book about the basic theory of a database, you probably don't have to buy more (similar) books. For more than more than 20 years, the theory of relational database has been stable, far exceeding the stability of C + + language:

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.