Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!att!ulysses!andante!alice!bs From: bs@alice.UUCP (Bjarne Stroustrup) Newsgroups: comp.lang.c++ Subject: Re: C++ design Summary: aims Keywords: information Message-ID: <9475@alice.UUCP> Date: 13 Jun 89 19:40:41 GMT References: <9474@alice.UUCP> Organization: AT&T Bell Laboratories, Murray Hill NJ Lines: 27 Given the widespread rumers (sic) to the contrary, it might be worth pointing out that C++ was designed with a careful consideration of principles such as type safety, consistency, encapsulation, orthogonality, minimalism, and completeness. These ideals are, in particular, the reason why C++ could not simple preprocessor adding a few features to an otherwise untouched C. The need for a coherent and unified type system precludes that. The stated aim for C++ (see the first paragraph of my book) is to ``make programming more enjoyable for serious programmers.'' It does so by directly attacking the problems that can make life miserable for a programmer or a group of programmers: by providing support for good design, by allowing ideas to be expressed directly in the language, by providing checking of programs, by allowing the programmer to provide sufficient structure in a program to make tools effective, by making good design and programming techniques affordable, and by making good design and programming techniques available on essentially all kinds of systems. This may not have been stated clearly enough in the past. At least I have seen postings presenting the view that compatibility was C++'s major or even C++'s only goal. It wasn't and isn't. Compatibility provides a way of co-existing with more traditional systems, a path for people who cannot make immediate radical breaks with the past to follow, a way of preserving skills, a way of re-using tools and libraries, and a way of guaranteeing completeness of a new language.