1.2. History of C and C++
C++ evolved from C, which evolved
from two previous programming languages, BCPL and B. BCPL was developed in 1967
by Martin Richards as a language for writing operating systems software and
compilers for operating systems. Ken Thompson modeled many features in his
language B after their counterparts in BCPL and he used B to create early
versions of the UNIX operating system at Bell Laboratories in 1970.
The C language was evolved from B by
Dennis Ritchie at Bell Laboratories. C uses many important concepts of BCPL and
B. C initially became widely known as the development language of the UNIX
operating system. Today, most operating systems are written in C and/or C++. C
is available for most computers and is hardware independent. With careful
design, it is possible to write C programs that are portable to most
computers.
The widespread use of C with various
hardware platforms unfortunately led to many variations. This was a serious
problem for program developers, who needed to write portable programs that would
run on several platforms. A standard version of C was needed. The American
National Standards Institute (ANSI) cooperated with the International
Organization for Standardization (ISO) to standardize C worldwide; the joint
standard document was published in 1990 and is referred to as ANSI/ISO 9899:1990.
C99 is the latest C standard. It was
developed to evolve the C language to keep pace with today's powerful hardware
and with increasingly demanding user requirements. The C99 Standard is more
capable (than earlier C Standards) of competing with languages like Fortran for
mathematical applications. C99 capabilities include the long long type for 64-bit machines, complex numbers for
engineering applications and greater support of floating-point arithmetic. C99
also makes C more consistent with C++ by enabling polymorphism through
type-generic mathematical functions and through the creation of a defined
boolean type. For more information on C and C99, see our book C How to Program, Fifth Edition and our C Resource
Center (located at www.deitel.com/C/).
C++, an extension of C, was developed by
Bjarne Stroustrup in the early 1980s at Bell Laboratories. C++ provides a number
of features that "spruce up" the C language, but more importantly, it provides
capabilities for object-oriented
programming.
You'll be introduced to the basic
concepts and terminology of object technology in Section
1.10. Objects are essentially reusable
software components
that model items in the real world. Software developers are discovering that a
modular, object-oriented design and implementation approach can make them much
more productive than can previous popular programming techniques.
Object-oriented programs are easier to understand, correct and modify. You'll
begin developing customized, reusable classes and objects in Chapter
3, Introduction to Classes and Objects. This book is
object oriented, where appropriate, from the start and throughout the text. This
gets you "thinking about objects" immediately and mastering these concepts more
completely.
We also provide an optional automated
teller machine (ATM) case study in the Software Engineering Case Study sections
of Chapters
1–7,
9
and 13,
and Appendix
E, which contains a
complete C++ implementation. The case study presents a carefully paced
introduction to object-oriented design using the UML—an industry standard
graphical modeling language for developing object-oriented systems. We guide you
through a first design experience intended for the novice object-oriented
designer/programmer. Our goal is to help you develop an object-oriented design
to complement the object-oriented programming concepts you learn in this chapter
and begin implementing in Chapter
3.