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

Posted by on in Blogs
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++.


About
Gold User, Rank: 1, Points: 2466
David Intersimone (known to many as David I.) is a passionate and innovative software industry veteran-often referred to as a developer icon-who extols and educates the world on Embarcadero developer tools. He shares his visions as an active member of the industry speaking circuit and is tapped as an expert source by the media. He is a long-standing champion of architects, developers and database professionals and works to ensure that their needs are folded into Embarcadero's strategic product plans. David holds a bachelor's degree in computer science from California Polytechnic State University at San Luis Obispo, California.

Comments

  • Guest
    Peter Tuesday, 26 February 2013

    Nice post against Delphi/Pascal ;-)

  • Guest
    Arie Wednesday, 27 February 2013

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

  • Guest
    David Intersimone Wednesday, 27 February 2013

    Arie - not yet :)

  • Guest
    David Intersimone Wednesday, 27 February 2013

    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.

  • Guest
    bjarne stroustrup Wednesday, 27 February 2013

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

  • Guest
    Vijay Rao Thursday, 28 February 2013

    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.

  • Guest
    Claudio Thursday, 28 February 2013

    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...

  • Guest
    David I Thursday, 28 February 2013

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

  • Guest
    Steve Saturday, 2 March 2013

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

  • Guest
    Steve Saturday, 2 March 2013

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

  • Guest

    [...] 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. [...]

  • Guest
    lombardo Saturday, 2 March 2013

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

  • Guest
    Jason Stone Monday, 11 March 2013

    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.

  • Guest
    Eniz Saturday, 16 March 2013

    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...

  • Guest
    stereomatching Tuesday, 8 October 2013

    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.

  • Guest
    hadjer usto Wednesday, 19 March 2014

    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

  • Please login first in order for you to submit comments
  • Page :
  • 1

Check out more tips and tricks in this development video: