Home | Hardware | Internet News |Web Hosting |IT Management |Network Storage
LinuxPlanet
Search 
  Power Search | Tips 

 Front Door
 Discussion
 LinuxEngine
 Opinions
 Reports
 Reviews
 Tutorials
 News
 Technology Jobs

 Browse by subject.
Free Newsletter

Java/Open Source Daily
Linux Today
More Free Newsletters

Be a Commerce Partner


















internet.com
IT
Developer
Internet News
Small Business
Personal Technology

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers

Print this article
Email this article

   LinuxPlanet / Interviews







Looking at Effective C++
Challenges of C++

Ibrahim Haddad
Monday, July 25, 2005 12:03:59 PM

LinuxPlanet: "Modern" computing platforms like Java and .NET are based on managed environments with garbage collection and extensive collections of standard library functionality. C++ isn't. Why would developers choose C++ for software systems today?

Meyers: This is a question that I posed to one of the C++ newsgroups recently. The discussion ran to nearly 250 messages from over 100 different people, but a few reasons came up repeatedly:

  • C++ is a multiparadigm programming language, offering support for procedural programming, object-oriented programming, generic programming, template metaprogramming, etc. These paradigms can be freely mixed, so developers are free to choose the approach to a problem they find most natural. No other mainstream language can make that claim. Interestingly, I mention this in Item 1 of the new edition of my book, because recognizing that C++ supports multiple styles of programming is essential to making effective use of it.
  • C++ offers programmers control over almost everything, so when they need to touch the hardware, interface with other languages, control the details of dynamic memory allocation, etc., they can do it. Furthermore, when it comes to flat-out performance, well-written C++ still usually beats well-written software in other languages--often by a substantial margin.
  • C++ runs almost everywhere, from the smallest embedded systems to the largest computing clusters. Java may be able to make a similar claim, but none of the .NET languages (e.g., C#) can, at least not yet.
  • C++ is already very widely used, so in many cases, continuing to use it is the most straightforward way to extend an existing system.
  • C++ isn't controlled by any single corporate interest (such as Sun in the case of Java or Microsoft in the case of C#).

LP: For programmers migrating from languages such as Java and C#, you suggest C++ can be a bit of a challenge initially. What do you think is the biggest hurdle for those programmers to overcome?

Meyers: One of the most challenging aspects of moving from one language to another is overcoming false assumptions. It's hard to be on the lookout for trouble if you don't realize that it's possible. For example, C++ objects can sometimes go uninitialized, but, as far as I know, that's impossible in Java or C#. C++ has a number of things that lead to undefined behavior, again, something that can't exist in Java or C#. C++ objects can have multiple addresses, which isn't possible in Java or C#. In the third edition of Effective C++, I mention these things and several others, because it's important for developers from other languages to understand when the fundamental behavior of the language is other than what they are likely to expect. Perhaps that's the biggest hurdle for such developers: becoming aware of subtle, but fundamental, differences in behavior in C++ compared to the language they've been using.

Next: Examining TR1 »

Skip Ahead

1 Introduction
2 Challenges of C++
3 Examining TR1
4 About the Book





Linux is a trademark of Linus Torvalds.


internet.com home | search | help! | about us

Jupiter Online Media

internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

Jupitermedia Corporate Info


Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

Web Hosting | Newsletters | Tech Jobs | Shopping | E-mail Offers