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
- Apple Mac OS X
- Apple iOS
- Google Chrome OS
- Google Android
- Blackberry OS
C++ is used in Major Enterprise Databases including:
- IBM DB2
- Microsoft SQL Server
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
- 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:
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++
- Bjarne Stroustrup’s C++ applications page - http://www.stroustrup.com/applications.html
- Vincent Lextrait’s The Programming Languages Beacon - http://www.lextrait.com/Vincent/implementations.html
- Github repositories for C++ projects - https://github.com/search?l=C%2B%2B&q=C%2B%2B&ref=simplesearch&type=Repositories
- Source Forge C++ projects search - http://sourceforge.net/directory/?q=C%2B%2B
- Google Code C++ project search - https://code.google.com/hosting/search?q=C%2B%2B&projectsearch=Search+projects
- Code.Nasa.Gov open source C++ software - http://code.nasa.gov/language/c-2/
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++.