Document Sample
cpp Powered By Docstoc
A.   History of C and C++
     1.      C Programming language was developed from 1969-1973 at Bell labs, along with the
             UNIX operating system.
     2,      C was a direct descendant of the language B, which was a typeless language developed
             by Ken Thompson as a systems programming language for the fledgling UNIX operating
     3.      B, in turn, descended from the language BCPL (Basic Combined Programming
             Language), which was designed in the 1960’s by Martin Richards while at MIT.
     4.      In 1971 Dennis Ritchie at Bell Labs extended the B language (by adding types) into what
             he called NB, for “New B”. Ritchie credits some of his changes to language constructs
             found in Algol68. After restructuring the language and rewriting the compiler for B,
             Ritchie gave his new language a name “C”.
     5.      C++ was written by Bjarne Stroustrup at Bell Labs during 1983-1985. C++ is an
             extension of C. Prior to 1983, Bjarne Stroustrup added features to C and formed what he
             called “C with Classes”. He had combined Simula’s use of classes and object-oriented
             features with the power and efficiency of C. The term C++ was first used in 1983.
     6.      Today, C++ is used more than any other language in the development of applications.
B.   Object-Oriented Programming (OOP)
     1.      OOP describes a class as a combination of data and behavior. An object is an instance of
             a class. The data are the class data fields, data members, or attributes of an object. The
             behavior of an object is defined using class functions or operations.
     2.      OOP is more advantageous for large programs than for small programs.
     3.      OOP allows for better cohesion. Cohesion is a description of how tightly related the data
             and operations of a particular class are. High cohesion is desirable.
     4.      OOP allows for less coupling. Coupling describes the interface between a called function
             (the server) and the calling function (the client). It is desirable to have as little coupling
             between functions (and classes) as possible, so that changes in the design of one class do
             not propagate throughout the program, necessitating changes in other classes. Low
             coupling is desirable.
     5.      OOP allows for increased information hiding and data encapsulation. The actual data of
             an object should be contained as a single unit. This is data encapsulation. The data
             however, should not be available to the “outside world.” This is information hiding.
             Why should we hide information? Experience shows that the design of data and data
             structures is more volatile and amenable to change than the design of operations that are
             perform on the data. High levels of information hiding and data encapsulation are

                                             Page 1 of 3
     6.      OOP allows the programmer to design complex classes using less complex classes as
             building blocks. This feature goes by many names, some of which are hierarchy,
             aggregation, composition and inheritance.
     7.      OOP provides a more elegant means of identifying (naming) the data and the operations
             associated with each class of objects.
C.   Characteristics of C++
     1.      C++ is a superset of C. This is why C++ contains features that are inconsistent and
             sometimes irritating.
     2.      C++ can be performance-oriented. That is why there is no run-time error checking. That
             is why it contains low-level operators that emulate assembly language instruction and
             allows the programmer to control computer resources, such as registers, ports, and flag
     3.      C++ contains high-level language features, such as loops, conditional processing,
             different data types, arrays, structures, and dynamic memory allocation.
     4.      C++ allows for elegant and aesthetic code.
     5.      C++ is portable at the source code level. Portability is achieved through standardization
             of the language.
D.   C and C++
     1.      Similar to C, C++ is token oriented and case sensitive.
     2.      Similar to C, C++ has only a few basic numeric types.
     3.      Similar to C, C++ supports data aggregation into composite types: arrays, structures,
             unions, enumerations.
     4.      Similar to C, C++ supports a standard set of flow control components such as for loops,
             while loops, do loops, if constructs, switch constructs, and jumps (break, continue, and
     5.      Similar to C, C++ is block structured. Similar to C, C++ functions cannot be nested.
             Similar to C, C++ functions can be placed in one file or in many files. Similar to C, C++
             functions can be called recursively.
     6.      Similar to C, C++ is a strongly typed language. It is an error to use an object of one type
             where an object of another type is expected. This is especially true for the arguments of a
     7.      Even more so than C, C++ is a weakly typed language (yes, both strongly and weakly).
             Conversions between numeric (and even character) types are done silently in both
             expressions and arguments.
     8.      C++ inherits the use of pointers from C for three reasons: a) for passing parameters “by
             reference” from a calling function to a called function, b) for dynamic memory allocation

                                            Page 2 of 3
      on the computer heap (for dynamic structures such as linked lists), c) for manipulating
      arrays and array components.
9.    Similar to C, C++ is designed for efficiency. Arrays bounds are neither checked at
      compile time nor run time. Even more so than C, C++ can be VERY inefficient.
10.   Similar to C, C++ is designed for writing terse code.
11.   Similar to C, C++ is designed for experienced programmers. Compilers are designed not
      to second guess the programmer. C and C++ assume that programmers know what they
      are doing.
12.   Unlike C, C++ adds support for OOP (see section B above).
13.   Similar to C, C++ has a standard library, although the C++ library is much larger and
      much more powerful than the C library.

                                     Page 3 of 3

Shared By: