CS253: Software Development with C++

Fall 2020

Introduction

Show Lecture.Introduction as a slide show.

CS253 Introduction


Bjarne Stroustrup presents C++ to the Founding Fathers

Things you need to know


Do I look like your mother?

Origin


B-Strous

Preferences

Dialects

Standards

Authorities

Let’s try some simpler questions:

Who’s the best pop singer?
  • Beyoncé.
  • Says who? The BeyHive.
When is the holiday Washington’s Birthday?
  • The third Monday in February.
  • Says who? The United States Congress.
Is Pluto a planet?
  • No.
  • Says who? The International Astronomical Union.
How long is a meter?
  • 1/299 792 458 light-second.
  • Says who? The International Standards Organization.

Standard C++

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.

97.1810771651% of C programs are valid C++.

C++, not C

This is a valid C program, but not a C++ program, because C++ claimed class as a keyword:

int main() {
    int class=0;
    printf("C: %d\n", class);
    return 0;
}
C: 0

int main() {
    int class=0;
    printf("C++: %d\n", class);
    return 0;
}
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