Transcript Chapter 1

C++ for Java Programmers
Chapter 1
Basic Philosophical Differences
Similar Roots, different paths



Both C++ and Java (and C# and PHP
and many other languages) grew out of
one tradition of languages
So it is not surprizing they have
similarities
But also many differences that can trap
the unwary
Chapter 1
C++ for Java Programmers
2
Common Ancestor - C





Designed by Dennis Ritchie in 1970’s
Intended for System Programming
(specifically, unix)
Economy of expression
Easy for compiler to generate code
Both high level and low level features
Chapter 1
C++ for Java Programmers
3
Some Features of C







Explicit use of pointers
Close match between pointers and
arrays
Variety of bit-level operations
Fast execution time
Minimal memory requirements
Simple memory model
Portable assembly language
Chapter 1
C++ for Java Programmers
4
Criticisms of C



“Too concise for human understanding”
while (*p++ = *q++)
Lack of run-time checks makes programs
error prone (array index checking,
parameter matching, etc.)
Opens door or malicious use
gets(s)
a[i++] = i++;
func1(func2(), func3(),func4());
Chapter 1
C++ for Java Programmers
5
Development of C++





Inspired by earlier language Simula
Started as collection of macros and library
routines for C
Intended to be backward compatible with C
Inherited C mind-set (pointers, lax checking,
memory model)
Uncompromising emphasis on efficiency
Chapter 1
C++ for Java Programmers
6
Examples of Emphasis on
Efficiency




Few run-time checks (if you want
checks, you write them yourself)
Many operations ill-defined, so can
match machine dependency
Stack memory model instead of heap
Many decisions left to compiler writer
a[i++] = i++
Chapter 1
C++ for Java Programmers
7
Legacy Problem - old C code






The C++ programmer must know about
Old C libraries
Old techniques (use of preprocessor,
etc)
Old types (char * for strings, etc)
Old styles (use if integers for booleans)
Use of global variables, functions, other
features not found in Java
Chapter 1
C++ for Java Programmers
8
And new features





C++ added a number of new features
to C
Classes, inheritance
Virtual functions
Templates
Exception Handing
Chapter 1
C++ for Java Programmers
9
The Language Java







Designed by James Gosling
Add simplicity and security to syntax of C++
Trade off between simplicity and efficiency
Preserve consistent behavior on all platforms
Add run-time checks for safety
Heap based memory model, garbage
collection
Simpler OO model
Chapter 1
C++ for Java Programmers
10
Comparisons are dangerous



Can you say one is better than the
other?
No. Each has slightly different use,
different outlook
Given right situation, either can be
made to look better than the other
Chapter 1
C++ for Java Programmers
11