The father of C + + Bjarne Talk about C + + in 2005

Source: Internet
Author: User

It's still hard to estimate the number of C + + programmers, but in 2003 IDC reported that there were more than 3 million full-time C + + programmers, and the data was more believable. Although I can not calculate accurately, but all the indicators I have are shown that C + + after the first ten years (1985-1994) of explosive growth, the last 10 years (1995-2004) the number of its use has been steadily increasing. I have not experienced a period of cessation of its growth. I suspect that despite the strong publicity and unbridled promotions of competitive products, the main reason for its steady growth is that the C + + language remains stable during this period (stability). In these years, the implementation of this language has improved greatly, the number, quality and complexity of its class library has increased, and our understanding of how to use C + + is further deepened. However, we are still using the language described in the 1995 d&e. Standard C + + has enough features to accommodate the growth of programming technology and applications in the decade, and its stability allows it to keep up with the trend.

So what are the C + + programmers doing? What kind of application are they writing? What kind of programming style did they use? I don't know, no one will know. Similarly, with C + + programmers too much to estimate similar, different application areas are too many, someone needs to master a lot of programming style. Sometimes we hear people say, "C + + should be used like this"--such expressions are generally wishful thinking, they come from very limited experience. We are playing "the Blind and the Elephant" game with a lot of people. Some people have read more than 1 million lines of code, written hundreds of C + + code, read all the articles in magazines such as C-VU, C + + Users Journal, read all the good C + + books and many inferior books, read all the papers related to C + + and in the C + + newsgroups. Lived "for many years. Such people are few, even so, they only touch the surface. Such people are generally the last to publish a simple summary. In fact, the most concise and confident generalizations I've heard (both positive and negative) come from people who have little C + + experience--ignorance is bliss.

When I try to understand how to use C + +, I first consider the following two aspects:

• Application areas

• Maturity of programmers (designers, software products companies, etc.)

Programmers who write real-time (embedded) systems are different from programmers who write dedicated database business programs, and they are in a different environment from programmers who write high energy physics (high-energy physics) applications. I find it helpful to listen to the ideas of programmers in new applications and learn from them.

It's hard to have something that makes sense across all the fields of application. But it can be said that something (across all areas of application) is mature. From a high-level point of view, the ideal programming language can be expressed as:

1. Express concepts directly in your code

2. Express the relationship between concepts directly in code

3. Express the concept of independence in independent code

4. Freely assemble the code that expresses the concept, whether or not this combination is meaningful

The concept "concept" and "idea" here are roughly the same, and you can refer to anything we name, anything that appears on the blackboard at design time, anything described in our textbook, and so on.

My "measurement" maturity is based primarily on how people apply these ideas to the product code (that is, code that is constrained by reality). If some people use C + + for the main reason is to make it as "better C", then they have failed in the first article (four of the above)-they cannot use classes, class hierarchies, and parameterization (templates) to directly express ideas and the relationships between ideas. If some people insist that C + + is viewed only as an object-oriented language, then they will fail in the third and fourth-they will construct a thick hierarchy that binds unrelated concepts together, excluding built-in types and simple classes, by some unsuitable basis.

This means that even if there is no further change in language, there are many things that need to be improved. By simply using tools that are already installed on your computer as part of the ISO standard C + +, most people can improve their programming efficiency, reduce error rates, and improve run-time performance. If you haven't tried STL, try it. It may not be exactly what you need, but it is standard and demonstrates many of the key technologies in "modern C + +" that you can use to solve problems. I have pointed out that the problem of education is worse now: programming education is to a large extent unable to keep up with the changes in software production. Since I originally wrote D&e, I became an expert, and to some extent contributed to this regressive trend.

So what are the C + + programmers doing? This is what you can think of: "Ordinary PC business Applications", embedded systems, E-commerce, games, scientific computing, networking software, operating systems, device drivers, mobile phones, and so on. Before continuing, I suggest that you look at a small list of my ongoing maintenance http://www.research.att.com/~bs/applications.html. I personally like the "adventure and the unusual" applications that have extreme performance and/or reliability requirements, such as the JPL Mars rover Automatic Drive system, the man B&W giant marine diesel engine control system, and highly distributed systems (such as multiplayer games) of the ICE layer structure.

Related Article

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.