Skip to content

Multi-Device C++ is used everywhere on planet Earth and beyond!

In my conversation with Bjarne Stroustrup during the CodeRage 7 C++ Conference (replays of the sessions are available to watch and download) last December, Bjarne talked about how pervasive C++ is in enterprises, infrastructures, major application software and operating platforms. C++ is used to build Operating Systems, Libraries, Applications and Scalable Systems.  C++ is used in many different markets on planet Earth and beyond.

C++ is used in major operating systems including:

  • Microsoft Windows
  • Linux
  • Apple Mac OS X
  • Apple iOS
  • Solaris
  • HP-UX
  • Google Chrome OS
  • Google Android
  • Blackberry OS

C++ is used in Major Enterprise Databases including:

  • Oracle
  • MySQL
  • IBM DB2
  • Microsoft SQL Server
  • Informix

C++ is used to build many of the most popular application software programs and Internet sites including (just to name a very small number):

  • Microsoft Office
  • Open Office
  • Adobe Photoshop
  • Autodesk Maya
  • World of Warcraft
  • Mozilla Firefox
  • Intuit Quicken
  • Halo 3
  • PayPal
  • Amazon.com
  • Facebook
  • Google
C++ is used in applications for many "out of this world" and "deep inside the atom" systems:
  • NASA/JPL Mars Rover
  • The International Space Station - including "World Map (word document)" written in C++Builder
  • The CERN Large Hadron Collider

C++ is used in "Hard" real-time systems:

For building "Hard" Real-Time Systems, Bjarne, in the CodeRage 7 C++ conversation, said that for these types of critical applications, "every operation has to be predictable". In C++ everything is predictable with exception of the following:

  • New
  • Delete
  • Throw
  • dynamic_cast

How can you guarantee that code gets to a handler within a defined/short period of time? Bjarne said, "there is no guarantee in the C++ language". Bjarne said, "what is needed is a tool to analyze the throw paths to determine an upper bound for handling time." On Bjarne’s website there is a paper (pdf format) that can help developers who are building life, mission, business critical systems, "Practical and Verifiable C++ Dynamic Cast for Hard Real Time Systems", http://www.stroustrup.com/fdc_jcse.pdf.

C++ is used in the Joint Strike Fighter.  You can read the "JOINT STRIKE FIGHTER AIR VEHICLE C++ CODING STANDARDS FOR THE SYSTEM DEVELOPMENT AND DEMONSTRATION PROGRAM, Document Number 2RDU00001 Rev C, December 2005" document at http://www.stroustrup.com/JSF-AV-rules.pdf. The document provides guidance for C++ programmers "that will enable them to employ good programming style and proven programming practices leading to safe, reliable, testable, and maintainable code. Consequently, the rules contained in this document are required for Air Vehicle C++ development and recommended for non-Air Vehicle C++ development."  I believe that this document provides great advice for all C++ systems and application developers.

C++ is used to build Infrastructure Software

In an IEEE Computer Magazine January 2012 article, "Software Development for Infrastructure", Bjarne Stroustrup writes "Infrastructure software needs more stringent correctness, reliability, efficiency, and maintainability requirements than nonessential applications. This implies greater emphasis on up-front design, static structure enforced by a type system, compact data structures, simplified code structure, and improved tool support. Education for infrastructure and application developers should differ to reflect that emphasis." In the article, C++ code examples are used to highlight best practice programming techniques including:

  • Compute Less
  • Access Memory Less
  • Practice type-rich Programming
  • Use Libraries
  • Prefer highly structured code

C++Builder XE3 — Multi-Device C++ Development

The list of multi-device C++ goes on and on.  For ISVs and Enterprises the #1 application development challenge today is supporting the growing heterogeneous mix of client devices, UI approaches, OS versions, and emerging form factors. With traditional development approaches, for every new platform supported, a whole new team is required to create and manage a separate codebase. This approach multiplies your costs and time to market with each addition. To turn this mounting challenge into a competitive advantage developers need an edge, a way to virtually replicate their R&D staff several times over. C++Builder is the only native multi-device development solution for targeting desktops, laptops, Slates and tablets including Surface Pro. And coming in 2013, iOS and Android*. Embarcadero C++Builder XE3 enables C++ developers to easily target desktops, laptops, Slates and tablets including Surface Pro with a single C++ codebase.

Additional Lists of Systems and Applications built with C++

Where do you find C++ being used?

Post a comment with your favorite systems and applications that are built using C++.  Post links to cool sites that are built using C++.

{ 15 } Comments

  1. Peter | February 26, 2013 at 5:01 pm | Permalink

    Nice post against Delphi/Pascal ;-)

  2. Arie | February 27, 2013 at 9:56 am | Permalink

    C++ builder is NOT available for Linux, 64bit mac-os en unix platforms. GCC is.

  3. David Intersimone | February 27, 2013 at 2:12 pm | Permalink

    Arie - not yet :)

  4. David Intersimone | February 27, 2013 at 2:13 pm | Permalink

    Peter - This is a C++ post. Not an anti-Delphi/Pascal post. Regardless of the winky emoticon. I love all programming languages - even languages that we don’t have tools or products for.

  5. bjarne stroustrup | February 28, 2013 at 6:26 am | Permalink

    and that’s one reason I respect David I and am willing to link to his blog: he is not a language bigot.

  6. Vijay Rao | February 28, 2013 at 9:03 pm | Permalink

    Just browsing through JSV-AV-rules.pdf;

    AV Rule 57
    The public, protected, and private sections of a class will be declared in that order…

    This attests to a misunderstanding of how declaration order affects initialization/definition order. It may be a general modus operandi, but it certainly cannot be a rule.

    AV Rule 113
    (MISRA Rule 82, Revised)
    Functions will have a single exit point.

    This is exactly what a former co-worker, ex-Lockheed employee said to me. The same co-worker who thought it was fine to construct zombie-objects where the class’ invariant was (re)checked in every member function. The same co-worker who did not use exceptions and accordingly did not clean up stuff in the dtr. The rule is mandatory for strictly imperative languages but is a nuisance for C++. Rather than include the exception to this rule, the rule itself should be inverted to "Maintain your invariants using destructors (combined with constructors) and only if the invariant is maintained through imperative language constructs, ensure that your functions have a single point of return and catch (…) or else don’t use any code which may generate exceptions". This rule in its current incarnation disregards exception safety.

    There’s more but I’m done for now.

  7. Claudio | March 1, 2013 at 12:17 am | Permalink

    What do you mean by "C++ is used in Linux" ? Most Linux parts (kernel and GTK libraries included) are written in plain C! I wonder if you had the same amount of "accuracy" in selecting the other examples…

  8. David I | March 1, 2013 at 7:54 am | Permalink

    Claudio - I never said 100% C++ for any application, OS, device, etc.

  9. Steve | March 2, 2013 at 1:47 pm | Permalink

    And the most important of all, C++ (with Qt) is used in awesome free (as in freedom) and opensource desktop and software from KDE :)

  10. Steve | March 2, 2013 at 2:04 pm | Permalink

    Oh yeah and I forgot the links:
    KDE Plasma desktop: http://www.kde.org/workspaces/
    KDE Software: http://www.kde.org/applications/

  11. lombardo | March 2, 2013 at 2:33 pm | Permalink

    So when will be C++ Builder available for OS X? (Not only as a deploy to target but the whole IDE!)

  12. Jason Stone | March 11, 2013 at 7:05 pm | Permalink

    Agree with your comments and enthusiasm for C++, but it all begs the question of why Embarcadero (and Borland/Inprise before it) always make C++Builder the poor cousin of Delphi when it comes to new releases. It has always been thus.
    You guys could have absolutely OWNED the C++ space, and also totally OWNED the cross-platform mobile space, but by focusing on propping up a language which is fading (Delphi) you’ve missed a huge opportunity. I implored Borland back in the late 90’s to port C++ VCL to WinCE but there was no interest – yet that would have bought into the very start of the mobile market and you’d have grown astronomically with it.
    C++ has also been the poorer for it because without consistent cross-platform RAD tools it has fragmented into Java, C#, Objective-C.
    I look forward to the promised (but delayed) C++Builder ability to natively code for iOS and Android, but also hope that Embarcadero will keep their eye on the ball and focus on C++ as the main game.
    Delphi is becoming a footnote in history and I’d be disappointed to see C++Builder and Embarcadero end up that way too.
    Speaking of footnotes, your comment about C++Builder doing iOS and Android in 2013 has an asterix (*) next to it – but this is not explained anywhere… more caveats about when it ‘may’ be delivered?
    On C++. Why is it not possible to get the address of the address of a reference (since it is just a dereferenced pointer in any case). Has this been fixed in C++11?
    Thanks again for your article. I know Embarcadero is trying to move in the right direction.

  13. Eniz | March 16, 2013 at 4:10 pm | Permalink

    Thanks for interesting post !
    I`m not a programming GURU or Genius, but i know one:
    Bjarne Stroustrup gave us something pricelessness and Embarcadero creates new philosofy of programming.
    Programming is philosophy and way of thinking, the language doesn`t matter. and they prove it…

  14. stereomatching | October 8, 2013 at 12:42 pm | Permalink

    About Multi-Device C++ Development, maybe you forget to mention Qt5?Although Qt5.2 haven’t released yet, but it promise to provide us ability to develop native c++ apps which could cross windows, mac, linux, android, ios and blackberry.Besides,Qt5 is free and open source, I think it is not a bad idea to introduce this good library.

  15. hadjer usto | March 20, 2014 at 4:42 am | Permalink

    bonjour je suis une étudiante 3éme licence en informatique
    et mon application sur moteur de recherche en utilisent embarcadero
    xe5 c++ et j’ai un probleme comment utilisent xml merçie

{ 1 } Trackback

  1. [...] Hacker News http://blogs.embarcadero.com/davidi/2013/02/26/42586 Tweet#call_to_action h4{padding:0px 5px;} This entry was posted in Uncategorized by admin. [...]

Bad Behavior has blocked 4 access attempts in the last 7 days.

Close