computers. Early on, programmers worked with the most primitive computer instructions:
machine language. These instructions were represented by strings of ones and
zeros. Assembly soon became the standard in programming as it replaced (or mapped)
the cumbersome binary strings by human-readable and -manageable mnemonics such as
ADD and MOV.
However, as the tasks performed by software applications being developed became more
complex (for example, in the computation of missile trajectories), programmers felt the
need for a language that could perform relatively complex mathematical instructions that
in turn would be a combination of many assembly codes; that is, many machine language
instructions. Thus, FORTRAN was born: the first high-level programming language optimized
for numeric and scientific computation that introduced, among other things, subroutines,
functions, and loops to the programming arena. In time, higher-level languages
such as BASIC and COBOL evolved that let programmers work with something approximating
words and sentences (referred to as source code), such as Let I = 100.
C itself came into being as an evolutionary improvement over a previous version called B
(sounds too obvious, doesn’t it?), which was an improved version of a language called
BPCL (Basic Combined Programming Language). Although C was invented expressly to
help programmers use features that new hardware (in those days) presented, it owes its
popularity largely to its portability and speed. C was a procedural language, and as computer
languages evolved into the object-oriented domain, Bjarne Stroustrup invented C++
(1981) that continues to be one of the most evolved and widely used programming languages.
In addition to introducing features such as operator overloading and inline functions,
C++ also implemented object-oriented concepts such as inheritance (allowing
multiple inheritance), encapsulation, abstraction, and polymorphism—terms that will be
explained later in this lesson. The implementation of templates (generic classes or functions)
in C++ and the sophistication of that concept were until recently not available in
newer programming languages such as Java and C#.
After C++, Java was the next revolution in the programming world. It became popular on
the promise that a Java application could be run on many popular platforms. Java’s popularity
stemmed also from its simplicity, which was created by not supporting many features
that make C++ a powerful programming language. In addition to not allowing
pointers, Java also managed memory and performed garbage collection for the user. After
Java, C# was one of the first languages developed to be based on a framework (the
Microsoft .NET Framework). C# derived ideologically and syntactically from both Java
and C++, in addition to differing in some respects from both of these. A managed versionof C++ (called Managed C++) is the .NET Framework equivalent of the C++ language,
which brings the advantages of the Framework (such as automated memory management
and garbage collection) to C++ programmers, and promises a faster execution than other
framework-based languages such as C#.
C++ continues to be the programming language of choice for many applications not only
because newer languages still don’t cater to many application’s requirements, but also
because of the flexibility and power it places in the hands of the programmer. C++ is regulated
by the ANSI standard and continues to evolve as a language.
A Brief History of C++