0% found this document useful (0 votes)
3 views

History of C and C++ a Comprehensive Story

The document outlines the history of the C and C++ programming languages, starting with the invention of C by Dennis Ritchie in the early 1970s for systems programming, particularly for UNIX. It details the evolution of C++ by Bjarne Stroustrup in the late 1970s, combining C's efficiency with object-oriented features from Simula67, leading to various standardized versions of C++ from 1998 to 2023. Key milestones and features introduced in each version are highlighted, showcasing the languages' development and enhancements over time.

Uploaded by

Khan Bangash
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

History of C and C++ a Comprehensive Story

The document outlines the history of the C and C++ programming languages, starting with the invention of C by Dennis Ritchie in the early 1970s for systems programming, particularly for UNIX. It details the evolution of C++ by Bjarne Stroustrup in the late 1970s, combining C's efficiency with object-oriented features from Simula67, leading to various standardized versions of C++ from 1998 to 2023. Key milestones and features introduced in each version are highlighted, showcasing the languages' development and enhancements over time.

Uploaded by

Khan Bangash
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

History of C and C++: A Comprehensive Story

1. Invention of C Language

The story of C begins in the early 1970s with Dennis Ritchie at Bell Labs (AT&T).
Ritchie developed C by improving upon the B language, which was a simplified
version of BCPL (Basic Combined Programming Language) created by Martin
Richards. B was used to write operating system code, but it lacked efficiency for
system-level programming.

C's Purpose:

C was invented for systems programming, particularly to develop the UNIX


operating system. It introduced key features such as low-level memory
manipulation (pointers), structured programming constructs, and a powerful set of
operators, which made it ideal for writing operating systems.

- Year : C was developed between 1969 and 1973.

- Key Features of C : Portability, efficiency, simplicity, and structured


programming.

2. Early Beginnings of C++

In the late 1970s, Bjarne Stroustrup , a Danish computer scientist working at Bell
Labs, found limitations in C for handling complex systems that required large
codebases and data abstractions.

While pursuing his Ph.D., Stroustrup was influenced by Simula67, a language


designed for simulation with object-oriented concepts such as classes and
inheritance. He appreciated the power of Simula's object-oriented features but
found the language inefficient (described at the end) for practical use in system
programming.

Stroustrup envisioned a language that could combine the efficiency of C with the
object-oriented capabilities of Simula, giving rise to what would become C++.
The goal was to enable better abstraction mechanisms while maintaining
backward compatibility with C.
- Key Motivation : Combining object-oriented programming (OOP) with C’s
speed and low-level manipulation capabilities.

3. Evolution of C++
Early Development (1979-1983)

- Year : In 1979, Stroustrup started working on "C with Classes," which


introduced class structures as a way to encapsulate data and functions. The first
version was essentially C with added features like classes and basic inheritance.

- 1983 : The name "C++" was officially coined, inspired by C's increment
operator `++`, reflecting the language's evolution as an enhanced version of C.
C++ retained C’s syntax while adding class-based programming , constructors ,
and destructors .

Key Concepts Introduced:

1. Classes : Blueprints for objects, encapsulating data and methods.

2. Encapsulation : Bundling data and functions into one unit.

3. Inheritance : Creating new classes from existing ones.

4. Polymorphism : Allowing one interface to control different types of objects.

The Versions and Their Evolution

1. C++ 98 (ISO/IEC 14882:1998) :

- First standardized version of C++.

- Introduced the Standard Template Library (STL), namespaces, and exceptions.

- Focus on generic programming through templates .

2. C++ 03 (ISO/IEC 14882:2003) :

- A bug-fix release for C++98. It included minor amendments but no new


features.

3. C++ 11 (ISO/IEC 14882:2011) :


- Major revision. Introduced auto keyword , lambda expressions , rvalue
references , move semantics , nullptr , and multithreading support .

- Focus on modern C++ features, improving the language’s ability to handle


resource management and parallel programming.

4. C++ 14 (ISO/IEC 14882:2014) :

- Incremental improvement over C++11. It polished the new features introduced


in C++11, like lambda expressions, and added generic lambdas and return type
deduction .

5. C++ 17 (ISO/IEC 14882:2017) :

- Introduced constexpr if , structured bindings, and more enhancements for


compile-time programming .

- Removed some old features while enhancing usability.

6. C++ 20 (ISO/IEC 14882:2020) :

- A significant update. Introduced concepts , coroutines , ranges , and modules.

- Expanded support for metaprogramming and coroutines , making the language


more expressive and powerful for modern computing.

7. C++ 23 (ISO/IEC 14882:2023) :

- Continued improvement of modules and concepts. More features to enhance


developer productivity and performance .

5. Summary of C++ Milestones:

- 1979 : Stroustrup begins work on "C with Classes."

- 1983 : Language is renamed to "C++."

- 1985 : First edition of The C++ Programming Language is published.

- 1998 : First standard of C++ (C++98).

- 2003 : C++03, minor bug fixes.


- 2011 : C++11, major update introducing modern C++ features.

- 2014 : C++14, incremental improvements.

- 2017 : C++17, major updates focusing on usability.

- 2020 : C++20, new features like concepts, ranges, and coroutines.

- 2023 : C++23, focusing on further improvements in modularity and

Summary of Simula 67’s Slowness:

 High-level abstractions like objects, classes, and inheritance added computational


overhead.
 Garbage collection introduced runtime delays due to the need for memory management.
 Interpreted execution meant slower performance compared to compiled languages.
 Lack of low-level control made it harder to optimize programs for specific hardware.
 Dynamic dispatch added extra steps in method invocation, slowing down execution.

You might also like