Preface
Introduction
C++ is a powerful programming language that supports several multiple styles of design: procedural-based, object-based, object-oriented, generic paradigm. It is hard to learn but easy to use after you understand it completely. It is a flexible and efficient tool to solve the software engineering problems. Also it is “famous” for its hardness to learn and use it properly, Grasping syntax of C++ is only the first step but far from sufficient to put it into practice. Writing a program composed of 10,000 lines of code is far more difficult than writing ten programs with 1,000 lines of code each other. You have to pay attention to software engineering concept when you design large-scale program in C++. As everyone knows, there are quite a lot of C++ programmers are formerly C programmers who still consider that “ data + algorithm = program”. Although it is once a useful way to design a system, large-scale remains a challenge. Object-oriented programming (OOP) provides a new approach to the challenge. C++ emphasizes data rather algorithms, meaning rather than trying to fit a problem to the language, we attempt to fit the language to a problem. The Abstract Data Type (ADT) is a quite important factor in C++. As Bjarne Stroustrup said “a programming language serves two related purposes: it provides a vehicle for the programmer to specify actions to be executed, and it provides a set of concepts for the programmer to use when thinking about what can be done.” The C language was primarily designed for the first purpose, and The C++ language was primarily designed for the second purpose.
This book intends to provide a guide to solve common problem we meet in practice using C++. It is not a tutorial for a beginner, but a book for programmers with at least basic knowledge of C++. It will show you how to design and implement software using C++ gracefully and efficiently. You will learn not only “HOW” but also “WHY” in this book.
Reporting Bugs, Making Suggestions to me
Although I have tried my best to make this book as accurate as possible, and make the code bug-free, there is still something to improve. If you find any error during your reading – no matter technical, typographical – please tell me. I will correct it in future. If you have any suggestion such as how to organize the book, or adding more contents into the books. I will appreciate your kindness.
Send your bug reports, suggestions and anything concerned to my mail:
blue_developer@sina.com
Enjoy it!