C-based Languages
C++ includes all the features of C, but adds classes and other features to support object-oriented programming
The need for abstraction
Abstraction involves determining the “least-common denominator” held in common by sets of data/object or functionality/method within a program.
Strengths of C/C++
Portable: usually does not requires a significant change when the C/C++ programs are ported to different machines (ranging from super-computer to embedded systems)
- C compilers are small and easy to be included in any application development environment
Powerful: has a large collections of data types/classes and operators/methods.
Flexible: C imposes very few restrictions on the use of its features
Standard Library: almost universal
Integrated well with all existing platforms: including Microsoft C/C++, and popular UNIX variant (known as Linux and Android) and MacOS (and hence the iOS)
Effective use of C++
Software engineering
The term software engineering refers to the study of software development on large scales.
Waterfall model
Known software catastrophes
First flight of ESA Ariane 5: Self-desctructed due to arithmetic overflow exception
1999 - Mars Climate Orbiter: wrong units
1999 - Mars Polar Lander: engine cutoff too early due to bug
2004 - Mars Rover: too many files opened
2006 - Mars Global Surveyor: battery failure to due bug
Necessary skills