Let’s go back to the future!
When I began to research and write this article, all of these amazing years and the rich history of C and C++ came back to my mind. The C++ compiler history really can be traced back to the 1970’s with the birth of the C Language. C++ IDE features really evolved from the early and auspicious beginnings of Turbo C+ and Borland C++. Today we have a wide array of features supporting a rich and diverse amount of OS platforms running on thousands of types of devices encompassing everything from cell phones, watches, cars to a broad collection of IoT (internet of things) specialized hardware. If we look at the C and C++ programming languages it has more than a %33+ share in programming overall and is still the most popular programming language worldwide. It is really amazing to see the ways in which humanity is benefitting from the advances in technology that have accompanied the evolution of our beloved programming language.
Let’s see the brief history of C++ programming. Please add your comments too..
Dennis Ritchie, based at Bell Laboratories, created the C Programming language. C is a procedural computer programming language supporting structured programming, lexical variable scope, and recursion, with a static type system. The C programming keywords and structures map code very efficiently to typical low-level machine instructions. It was easy to create more generalized code than it was in assembly language, and this encouraged the adoption and spread of the C programming language as a viable alternative to the more cumbersome and onerous assembly instructions with minimal compromises. In the years following the introduction of the C++ programming language, it became widely used for a broad range of general and specialized purposes including operating systems and various application software that targeted computer architectures ranging from supercomputers to PLCs and embedded systems.
In the early 1980′s, also at Bell Laboratories, another programming language was being developed which was based upon the C language. This was an extension to C Language which will later go on to be called C++.
Meanwhile, Objective-C was created primarily by Brad Cox and Tom Love in the early 1980s at their company Productivity Products International (PPI). Objective-C later became adopted by Apple Computer as their primary programming language, supplanting their object-orientated version of Pascal called Object-Pascal.
Around these years there were new C compilers on Amiga computers. These were Lattice C, Aztec C, SAS-C compilers. Actually SAS-C was a really great C and C++ compiler used with IBM computers such as the IBM® System/390TM mainframes, as well as end-consumer machines such as Amiga computers too.
C++ was developed by Bjarne Stroustrup at AT & T Bell Laboratories in Murry Hill, New Jersey (USA) in 1983. In C the increment operator is a double set of + symbols therefore C++ was “Incremented C” means Extension to C.
C++ is an OOP i.e. Object Oriented Programming paradigm, which allows programmers to develop large and complex applications and use objects and classes to abstract the complexity and simplify structures and reuse through techniques like inheritance. OOP languages existed before C++ but many were slow and inefficient.
Bjarne Stroustrup who was a great admirer and master of C and SIMULA 67, combined the features of both the languages into more powerful language. This combination of features of SIMULA 67 and C resulted in a new language that at the time was called “C with Classes” by Bjarne in 1979. C with Classes lacked some OOP features. Therefore, some features and ideas were taken from ALGOL 68 (Algorithmic Language). This expanded language resulted in what’ve come to know today as C++. The name C++ is credited to Rick Mascitti who suggested this name and was first used in 1983. It is named C++ not C+ or ++C because C+ had been used as the name of an earlier unrelated language and C++ is more commonly used than ++C. Moreover, it is not named D language because it was considered an extension of C, not a successor activing as a replacement of C.
Richard Stallman (a.k.a. RMS) wanted a Free C compiler for the GNU C project he had started in 1984. The Cygnus GNUPro toolkit included GCC support for over 175 host/target combinations by 1999.
1987 Turbo C
Turbo C is one of the earliest C consumer-focused compilers and an IDE. It was created by Borland, primarily for the C programming language. First introduced in 1987, it was noted for its integrated development environment, small size, fast compile speed, comprehensive manuals and low price.
1990 Turbo C++
After May 1990, Borland company replaced Turbo C with Turbo C++. The Turbo Debugger was written in protected mode DOS. This was not an ideal solution and so the company set out to develop a better C++ IDE which escaped the restrictions imposed by protected mode. They called the new IDE, Borland C++
1991 Borland C++
This IDE and Compiler was very popular in 90’s. It had very good help documents, a trusted and capable debugger, faster compile and runtime capabilities all of which combined to make it extremely popular and successful with developers. This success was built upon by a succession of new versions from 2.0 to 5.02 between 1991 to 1997. 5.02 was the final independent Borland release.
1992 GNU Objective-C
Dennis Glatting wrote the first GNU Objective-C runtime in 1992. The GNU Objective-C runtime, which has been in use since 1993, is the one developed by Kresten Krab Thorup when he was a university student in Denmark.
1995 Win 95 (Visual Programming)
Windows 95 was released this year and this Operating System for PC’s forced C++ programming language vendors to embrace more visual elements and more OS-based structures.
1997 C++ Builder 1.0
The graphical environment of Windows required programs to use UI elements which conformed to a certain style and behavior model. A new IDE which fully understood and made it simple to use this new graphical Windows environment was needed. Borland’s answer came in the form of C++ Builder which was released as a preview edition in Jan. 7, 1997. The C++ Builder Retail version was released on February 26, 1997. The original Borland C++Builder editions include Client/Server Suite, Professional, Standard versions.
1998 was another milestone for the C++ language, bringing as it did, the birth of ‘official’ C++ standards, the first of which was the C++98 standard. In 1998, the ISO working group standardized C++ for the first time as ISO/IEC 14882:1998, which is informally known as C++98.
In this year Microsoft released Visual C++ 6.0.
2000 Borland C++ 5.5
The final MS-DOS based compiler version, Borland 5.5 was released in 2000, supporting Windows 95/98/NT/2000. It was available as a freeware compiler without the IDE based on Borland C++Builder 5 versions: This compiler was great, and included the Borland C++ Compiler v5.5, Borland Turbo Incremental Linker, Borland Resource Compiler / Binder, C++ Win32 Preprocessor, ANSI/OEM character set file conversion utility, Import Definitions utility to provide information about DLLs, Import Library utility to create import libraries from DLLs, Borland Turbo Dump, Librarian, Borland C/C++ Runtime Library, ANSI/ISO Standard Template Library (STL).
C++ Builder developed well and DOS based Borland C++ brings its self to new versions of C++, it remained as a compiler (the bcc compiler) for a long time in this new visual IDE.
During these years C++ Builder was developed and included Borland C++ Builder 3, 4 and 5 versions.
2002 C++ Builder 6 and Visual C++ with .NET
Borland Software Corporation announced the release of Borland C++Builder 6 on February 8, 2002. This was one of the greatest releases, including C++Builder 6 Enterprise, C++Builder 6 Professional, and C++Builder 6 Personal editions. There was 60-day free trial download of C++Builder 6 Enterprise was also planned. Its minimum supported operating system was changed to Windows 98.
C++ Builder 6 features included:
- Support of Windows XP
- BizSnap e-business development platform with Web Services
- WebSnap Web application development platform
- Borland CLX component library (Professional/Enterprise)
- dbExpress (Professional/Enterprise), Enterprise edition adds DB2/Informix/Oracle dbExpress drivers
- NetCLX WebBroker WebBroker-compatible cross-platform Web application development framework for Windows and Linux (Professional/Enterprise)
- MyBase XML data briefcases (Professional/Enterprise)
- Borland C++ Compiler 5.5
The Visual Studio .NET version was released including Visual C++.
In 2003, the C++ community published a new version of the C++ standard called ISO/IEC 14882:2003, which fixed problems identified in C++98.
During 2000s, C++ Builder has been developed till the 2006,
Visual Studio 2005 was released
In 2006 Borland’s Developer Tools Group, developers of C++Builder, was transferred to a wholly owned subsidiary, CodeGear. CodeGear released C++Builder 2007, CBuilderX, 2009 and 2010 versions.
Clang frontend released (11 Jult 2007) under open-source license.
2009 – RAD Studio
CodeGear (and with it, Borland) was purchased by Embarcadero Technologies and bundled C++Builder with Delphi and other tools and released them as RAD Studio. RAD is an abrogation to Rapid Application Development.
CLANG 1.0 released in 2009, with LLVM 2.6 for the first time. CLANG is considered to be a production quality C, Objective-C, C++ and Objective-C++ compiler when targeting X86-32, X86-64, and ARM. It is a new C/C++ compiler standard (C++98, C++11, C++17, C++20, C++23 ..) supported by The LLVM Compiler Infrastructure Project, and has been a default compiler in recent years for most C/C++ compilers. This means that if you code for a CLANG compiler, most other IDEs, Compilers of Platforms will support your code without any changes. The latest C++17 standard is supported by the most C++ compilers. More information about core language features can be found here. C++ 20 is new and needs adaptation time.
We highly recommend you start with or to move to a CLANG Enhanced compiler like the Embarcadero’s C++ Builder, which supports the CLANG (C++11, C++ 17) standard and has its own C++ Compiler, IDE, GUI Designer and more. The C++Builder Standards and Clang Enhanced Compiler features can be found here.
2010 RAD Studio XE and XE2 (Birth of FireMonkey)
C++Builder XE was released August 30, 2010 and included:
- Multiple C++ language updates
- New C++ compiler options
- Multiple user-requested fixes
C++Builder XE2 was released August 31, 2011 and included:
- New ‘FireMonkey’ library for creating cross-platform GUIs (Windows, macOS, iOS)
- dbExpress to deliver new connectivity options with support for InterBase XE, FireBird 2.5, SQL Anywhere 12 and ODBC
- DataSnap mobile support for iOS, Android, Blackberry, and Windows Phone
- Expanded cloud computing integration with new data and deployment options to Amazon EC2 and Microsoft Windows Azure
- LiveBindings for VCL and FireMonkey components
- Multiple new reporting tools
After this time XE versions included XE2, XE3, XE4, XE5, XE6, XE7, XE8 versions since 2015.
During these years C++ Builder XE versions, Microsoft Visual C++ versions (Visual Studio 2010, 2013, 2015, versions and GNU C/C++ versions spread around the world.
- C++11 standard was released with some new features
2014 C++14 and Swift
- C++14 standard was released.
- At WWDC 2014, Apple introduced a new language, Swift, which was characterized as “Objective-C without the C”.
2015 The First CLANG Supported C++ Builder 10
Embarcadero released the first CLANG Supported C++ Builder 10 Seattle IDE on August 31, 2015, updated XE IDE with:
- CLANG 3.3 C++ compiler suite with some exceptions
- Windows 10 FireMonkey, CVL, and RTL support
- VCL Windows 10 controls
- New VCL Styles
- Multi-monitor configuration improvements
- Updates to the IDE, debugger, database and cloud libraries, and documentation
2017 C++17 and C++ Builder 10.x versions
Version 10 was another milestone to CLANG based C++ Builder 10.x versions. These were followed by C++Builder 10.1 Berlin, C++Builder 10.2 Tokyo, C++Builder 10.3 Rio, C++Builder 10.4 Sydney..
C++17 features has been released. C++17 came with a lot of new features and after that these features supported by the coming next 10.x versions.
C++ Builder 10.x version had a lot of updates and releases with many bug fixes and improvements coming. Final 10.x version was the C++Builder 10.4.2 Sydney Update 2.
During the years since other compilers and IDEs like Dev-C++, Codebooks, Clion and IoT based C++ compilers such as the Arduino C++ compiler, rapidly spread around the world because of being free and for being very useful for students and beginners.
C++ 20 Standards has been released with new features.
2021 C++ Builder 11 Alexandria
C++Builder 11 Alexandria was released in September 10, 2021. One of the main features was compatibility and integration of Windows 11 features along with Apple M1 CPU support and Android API 30 support. Full specifications can be found here and below,
2022 and more
It looks like 4 main C++ compilers (C++ Builder by Embarcadero, Visual C++ by Microsoft, GNU C++ by GNU.org and Objective-C by Apple) will maintain their popularity with new releases in CLANG C++ standards.
If you still want to know more about C and C++ programming language you can visit Wikipedia here. The list of all C-family based programming languages can be found here and the list of all C++ compilers that can be found here.