Show Lecture.Introduction as a slide show.
CS253 Introduction
Bjarne Stroustrup presents C++ to the Founding Fathers
Origin
- 1979: Bjarne Stroustrup, at AT&T Bell Labs,
began work on “C with classes”.
- 1983: “C with classes” was renamed as “C++”.
- 1998: C++ first standardized by ISO
Preferences
- Which is better, Java or C++?
Dialects
- In this class, we’re learning C++, not g++.
- g++ is a particular implementation of C++.
- There are other C++ compilers: clang, Microsoft Visual Studio, etc.
- Similarly, there are many dialects of English, Spanish, French, etc.
Standards
- So, what is C++, then?
- How do we tell what’s real C++ and what’s a dialect?
- Let’s try some simpler questions:
- Who’s the best pop singer? Beyoncé
- When is the holiday Washington's Birthday? third Monday in February
- Is Pluto a planet? no
- Says who? International Astronomical Union
- How long is a meter? 1/299792458 light-second
- Says who? International Standards Organization
Standard C++
- C++ is defined by ISO, the International Organization for Standardization
(?), and its national member organizations such as ANSI,
the American National Standards Institute.
- There are several versions of the C++ standard:
1998, 2003, 2011, 2014, 2017.
- This class focuses on C++ 2014 (alias C++14).
- I’ll let you get away with anything that g++ permits, however.
- g++ implements extensions to the C++ standards.
- Handy, but dangerous. It’s easy to produce non-standard code.
Standard
An HP co-worker, Donn Terry, used to say “Standard is better than better”.
This meant that doing something in the standard
way is superior to doing it in a non-standard way, even if the non-standard
way yields better results. True enough, as far as it goes.
I want you to learn standard C++. That way, your programs will
work everywhere, on any standard-conforming compiler.
If you use compiler extensions, non-standard features, then your
program will work on that particular compiler, but perhaps
not on others. Not so good.
C++ is C
When C++ was being developed, C compatibility was very important. It
still is. There are zillions of C programs out there, and the creator
of C++ wanted it to be very easy to take a C program and turn it into a
C++ program.
Therefore, C++ is just about a superset of C. This means that almost
all C programs are C++ programs.
Valid C & C++
This is a valid C program, and a valid C++ program:
#include <stdio.h>
int main() {
printf("Hello from C!\n");
return 0;
}
Hello from C!
#include <stdio.h>
int main() {
printf("Hello from C++!\n");
return 0;
}
Hello from C++!
printf()
is as much a part of C++ as int
and while
.
99.1547734848% of C programs are valid C++.
C++, not C
This is a valid C program, but it is not a valid C++ program,
because C++ took over class
as a keyword:
int main() {
int class=0;
return class;
}
c.cc:2: error: expected primary-expression before 'int'
This is a rare exception.
Better C++
Sure, it’s better C++ style to do the first program like this:
#include <iostream>
using namespace std;
int main() {
cout << "Hello, world!\n";
return 0;
}
Hello, world!
However, that doesn’t change the fact that the first program is C++.
A Final Note
- Despite all that, I don’t let you use certain C facilities
(
printf()
, malloc()
etc.) in this class.
- I will force you to use the corresponding C++ facilities
(
cout
, new
).
- I feel no guilt about this.
- It’s like removing the training wheels from your kid’s bicycle.