Why C++?

February 21st, 2014

A few weeks ago, I had an opportunity to share a few scenarios where C++ really matters to an internal audience from the field. No demo code or sample projects were reviewed, just the scenarios and first-hand examples.

Why C++?

Learn “what those C++ folks” know . Some developers feel a pull towards the preciousssss, C++. Sure, it has a bad rep as being full of pointers and other complexity, but its power is unmistakable. [I a great customized picture of the One Ring with “C++” on the top but cannot use it here L ]

. Some developers feel a pull towards the preciousssss, C++. Sure, it has a bad rep as being full of pointers and other complexity, but its power is unmistakable. [I a great customized picture of the One Ring with “C++” on the top but cannot use it here ] Application lifecycle support tools . Developers often need to create small extensions, command-line tools, and other bits of code to improve the build process, massage files, control deployment or other process details.

. Developers often need to create small extensions, command-line tools, and other bits of code to improve the build process, massage files, control deployment or other process details. Shared code libraries . Libraries provide core functionality (think XML processing, text processing, network communication) to a wide audience. C++ enables fast, efficient and elegant code.

. Libraries provide core functionality (think XML processing, text processing, network communication) to a wide audience. C++ enables fast, efficient and elegant code. Hybrid devices . Embedded devices rely more on C but there is a growing hobbyist community around hybrid devices like the Raspberry Pi that can host programs written with C++. This could be the beginning of SkyNet.

. Embedded devices rely more on C but there is a growing hobbyist community around hybrid devices like the Raspberry Pi that can host programs written with C++. This could be the beginning of SkyNet. Niche applications . Looking for a developer job in the financial markets? Math and C++ are must haves! Many unique applications require advanced science work and some experience with C++.

. Looking for a developer job in the financial markets? Math and C++ are must haves! Many unique applications require advanced science work and some experience with C++. Lively debates about syntax . Debating the finer C++ points of auto, when to use lambdas, brace formatting, and move semantics reinvigorates the soul (and helps influence future standards).

. Debating the finer C++ points of auto, when to use lambdas, brace formatting, and move semantics reinvigorates the soul (and helps influence future standards). Application needs to access native code . C++ is the bridge that links managed code to the rich ecosystem of existing, stable and mature native code including open source libraries like OpenCV, Lucene, Cinder, and FFMpeg.

. C++ is the bridge that links managed code to the rich ecosystem of existing, stable and mature native code including open source libraries like OpenCV, Lucene, Cinder, and FFMpeg. Tuning a managed application . C++ can be used to speed up sluggish managed applications. When the profiler points to managed code that has already been optimized, the best choice might be to let C++ handle it (C++ AMP anyone?).

. C++ can be used to speed up sluggish managed applications. When the profiler points to managed code that has already been optimized, the best choice might be to let C++ handle it (C++ AMP anyone?). Code maintenance . There is a lot of code out there. Much of it is C and C with classes, but much more is C++ and relies on the flexibility and control of the language.

. There is a lot of code out there. Much of it is C and C with classes, but much more is C++ and relies on the flexibility and control of the language. Porting code to a new application . New applications are built from the creaky bones of decades-old legacy applications. C++ developers can decode requirements from old native code and express them in modern C++ or other language.

. New applications are built from the creaky bones of decades-old legacy applications. C++ developers can decode requirements from old native code and express them in modern C++ or other language. Three letters: M F C . MFC lives!

. MFC lives! Repackage logic . Native code in existing native apps can be repackaged in C++ for new apps targeting different platforms and form factors.

. Native code in existing native apps can be repackaged in C++ for new apps targeting different platforms and form factors. Graphics, graphics, graphics . C++ is the choice for the most immersive graphics experience. Data visualization, bleeding-edge user interfaces, the next Pixar movie…

. C++ is the choice for the most immersive graphics experience. Data visualization, bleeding-edge user interfaces, the next Pixar movie… Intense multimedia processing . Sound, images and video gobble up bandwidth. C++ and Visual Studio 2013 makes it easier to optimize this type of code for the best performance.

. Sound, images and video gobble up bandwidth. C++ and Visual Studio 2013 makes it easier to optimize this type of code for the best performance. Cross platform development . When an application must be cross platform, C++ is hard to beat. There are differences between compilers, but adherence to the standard goes a long way.

. When an application must be cross platform, C++ is hard to beat. There are differences between compilers, but adherence to the standard goes a long way. Custom device support . Native code is used extensively in device support. Developers use C++ to write device drivers, SDKs and sample applications for stuff like sound input, 3d printers and scanners.

. Native code is used extensively in device support. Developers use C++ to write device drivers, SDKs and sample applications for stuff like sound input, 3d printers and scanners. Pushing the boundaries of computing . C++ can be found at the heart of many high-performance computing applications. Meteorology, chemistry, physics, visualization, genetics….

. C++ can be found at the heart of many high-performance computing applications. Meteorology, chemistry, physics, visualization, genetics…. “It’s fun!” –survey respondent, 2013

Do you agree with these scenarios? Did I miss one? Do you have detailed examples for any of these that you would like to share (and get credit for if used in future presentations)?

Drop me a line (ebattali@microsoft.com) or comment below. Thanks!