Attorney: Yu Lin
Witness: Dennis Ritchie (Peixian Li)

Q1: Mr. Ritchie, can you briefly explain the work you did to us?

A1: Em...I almost forget that. I'm the creator of C programming language.

Q2: Please describe the feature of C.

A2: C has many advantages. C is good for its generality, simplicity and flexbility. C can be used in a lot of applications, such as operating systems, real-time application, and database. Also, C is an efficient programming language.

Q3: C++ is designed to be "a better C" to support data abstraction, and to support OO programming. Mr. Ritchie, do you agree with this? Why? Please compare the work did in C and C++ for Object-Oriented programming and design (OOP/OOD) and show that C++ has more advantage in OOP/OOD.

A3: Yes, I agree that. C is not designed as an OO language, so it doesn't have OO features. C++ is designed as a OO languages on the base on C. It is obvious that C++ has more advantages in OOP/OOD.

Q4: C++ has been accused by discouraging users from writing clearly understandable code. Do you think so? Please explain your idea.

A4: No, I don't agree. OO makes C++ programs better structured and more understandable.

Q5: C++ is accused to be a programming language that produces code that is unnecessarily subject to run-time errors.

A5: C++ is a strongly typed language. It has a good static type checking mechanism to avoid many run-time errors. Also, C++ has a second kind of run-time guarantee procided by "special member functions", such as constructors, that were recognized and implicitly invoked by the compiler. The idea was to allow the programmer to establish guarantees, sometimes called "invariants", that other mamber functions could rely on.

Q6: The better one knows C, the harder it seems to avoid writing C++ in C style, therefore losing the benefits of C++. Do you think this situation exists? Is this also one reason for someone to accuse C++ a bad language? Can you explain your answer? Do you have any note to C programmers?

A6: Yes, some people can't avoid writing some c-style c++ programs. However, I don't think that is the fault of C++.

Most importantly, try thinking of a program as a set of interacting concepts represented as classes and objects, instead of the program as a bunch of data structures with functions.

Also, I want to point out there are many area in which C++ has better way of doing something than C has. For example, don't declare a variable before you need it so that you can initialize it immediately. Other examples include using inline to avoid function-calling overhead, and using templates to specify families of functions and types.

Q7: As a conclusion, what's your hope for C++'s future?

A7: May C++ server its users well. Actually it does. For that to happen, the language itself must be stable and well-specified. The C++ standards group and the C++ compiler vendors have a great responsibility here.

In addition to the language itself, we need libraries. Actually we need a libraries industry to produce, distribute, maintain, and educate people. This challenge is to allow programs to be composed out of libraries from different vendors. This is hard and might need some support from the standards committee in the form of standard classes and mechanisms that ease the use of independently developed libraries.

We also need good understanding of the application areas ad design techniques. Only through this, the language and library features will be put to good use.

Techniques, languages, and libraries must be supported by tools. The best C++ tools and environments are beginning to approach the power and convenience of the best tool and environments for any language. The best has yet to come.