logo资料库

The Design And Evolution Of C++.pdf(英文版清晰)

第1页 / 共506页
第2页 / 共506页
第3页 / 共506页
第4页 / 共506页
第5页 / 共506页
第6页 / 共506页
第7页 / 共506页
第8页 / 共506页
资料共506页,剩余部分请下载后查看
Cover
Front Matters
Preface
Contents
The Design and Evolution of C++
Ch00. Notes to the Reader
Part I
Ch01. The Prehistory of C++
Ch02. C with Classes
Ch03. The Birth of C++
Ch04. C++ Language Design Rules
Ch05. Chronology 1985-1993
Ch06. Standardization
Ch07. Interest and Use
Ch08. Libraries
Ch09. Looking Ahead
Part II
Ch10. Memory Management
Ch11. Overloading
Ch12. Multiple Inheritance
Ch13. Class Concept Refinements
Ch14. Casting
Ch15. Templates
Ch16. Exception Handling
Ch17. Namespaces
Ch18. The C Preprocessor
Index
C++ in 2005 - Preface To Japanese translation
About The Author
Fan01@ePubCN
The Design and Evolution of C++ Bjarne Stroustrup AT&T Bell Laboratories Murray Hill, New Jersey ADDISON-WESLEY PUBLISHING COMPANY Reading, Massachusetts • Menlo Park, California • New York Don Mills, Ontario • Wokingham, England • Amsterdam • Bonn • Sydney Singapore • Tokyo • Madrid • San Juan • Milan • Paris
Library of Congress Cataloging-in-Publication Data Stroustrup, Bjarne. The Design and Evolution of C++ / Bjarne Stroustrup. p. cm. Includes bibliographical references and index. ISBN 0-201-54330-3 1. C++ (Computer program language) I. Title. II. Title: Design and Evolution of C plus plus. QA76.73.C153S79 1994 005.13'3—dc20 93-50758 CIP AT&T Copyright © 1994 by AT&T Bell Labs. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written permission of the publisher. Printed in the United States of America. This book was typeset in Times Roman and Courier by the author. 1 2 3 4 5 6 7 89 10-MA-969594
Preface He who does not plow, must write. - Martin A. Hansen The ACM HOPL-2 conference on the History of Programming Languages asked me to write a paper on the history of C++. This seemed a reasonable idea and a bit of an honor, so I started writing. To get a more comprehensive and balanced view of C++'s growth, I asked a few friends from the early days of C++ for their recollections. That caused news of this project to travel through the grapevine. There, the story mutated, and one day I received a message from a friend asking where he could buy my new book on the design of C++. That email message is the real origin of this book. Traditional books about programming and programming languages explain what a language is and how to use it. However, many people are also curious about why a language is the way it is and how it came to be that way. This book answers these last two questions for C++. It explains how C++ evolved from its first design to the lan guage in use today. It describes the key problems, design aims, language ideas, and constraints that shaped C++, and how they changed over time. Naturally, C++ and the ideas about design and programming that shaped it didn't just mutate by themselves. What really evolved was the C++ users' understanding of their practical problems and of the tools needed to help solve them. Consequently, this book also traces the key problems tackled using C++ and the views of the people who tackled them in ways that influenced C++. C++ is still a young language. Some of the issues discussed here are yet unknown to many users. Many implications of decisions described here will not become obvi ous for years to come. This book presents my view of how C++ came about, what it is, and what it ought to be. I hope this will be of help to people trying to understand how best to use C++ and in the continuing evolution of C++.
iv Preface The emphasis is on the overall design goals, practical constraints, and people that shaped C++. The key design decisions relating to language features are discussed and put into their historical context. The evolution of C++ is traced from C with Classes through Release 1.0 and 2.0 to the current ANSI/ISO standards work and the explo sion of use, interest, commercial activity, compilers, tools, environments, and libraries. C++'s relationship to C and Simula is discussed in detail. C++'s relation ship to other languages is discussed briefly. The design of major language facilities such as classes, inheritance, abstract classes, overloading, memory management, tem plates, exception handling, run-time type information, and namespaces are discussed in some detail. The primary aim of this book is to give C++ programmers a better idea of the background and fundamental concepts of their language and hopefully to inspire them to experiment with ways of using C++ that are new to them. This book can also be read by experienced programmers and students of programming languages and might help them decide whether using C++ might be worth their while. Acknowledgments I am very grateful to Steve Clamage, Tony Hansen, Lorraine Juhl, Peter Juhl, Brian Kernighan, Lee Knight, Doug Lea, Doug McIlroy, Barbara Moo, Jens Palsberg, Steve Rumsby, and Christopher Skelly for reading complete drafts of this book. Their con structive comments caused major changes to the contents and organization of this book. Steve Buroff, Martin Carroll, Sean Corfield, Tom Hagelskjær, Rick Hollin- beck, Dennis Mancl, and Stan Lippman helped by commenting on selected chapters. Also, thanks to Archie Lachner for asking for this book before I had thought of writ ing it. Naturally, I owe thanks to the many people who helped make C++. In a sense, this book is a tribute to them and some of their names can be found throughout the chap ters and in the index. Should I single out individuals, it must be Brian Kernighan, Andrew Koenig, Doug McIlroy, and Jonathan Shopiro, each of whom has been a steady source of help, encouragement, and ideas for more than a decade. Also, thanks to Kristen Nygaard and Dennis Ritchie as the designers of Simula and C from which the key ingredients of C++ were borrowed. Over the years, I have come to appreciate them not only as brilliant and practical language designers, but also as gentlemen and thoroughly likable individuals. Murray Hill, New Jersey Bjarne Stroustrup
Contents iii iv v 1 1 2 4 4 5 7 17 19 19 22 23 Preface Contents Acknowledgments Notes to the Reader Introduction How to Read this Book C++ Timeline Focus on Use and Users Programming Languages References Part I: The Prehistory of C++ 1.1 Simula and Distributed Systems 1.2 C and Systems Programming 1.3 General Background
vi Contents C with Classes 2.1 The Birth of C with Classes 2.2 Feature overview 2.3 Classes 2.4 Run-Time Efficiency 2.5 The Linkage Model 2.6 Static Type Checking 2.7 Why C? 2.8 Syntax Problems 2.9 Derived Classes 2.10 The Protection Model 2.11 Run-Time Guarantees 2.12 Minor Features 2.13 Features Considered, but not Provided 2.14 Work Environment The Birth of C++ 3.1 From C with Classes to C++ 3.2 Aims 3.3 Cfront 3.4 Language Features 3.5 Virtual Functions 3.6 Overloading 3.7 References 3.8 Constants 3.9 Memory Management 3.10 Type Checking 3.11 Minor Features 3.12 Relationship to Classic C 3.13 Tools for Language Design 3.14 The C++ Programming Language (1st edition) 3.15 The Whatis? Paper C++ Language Design Rules 4.1 Rules and Principles 4.2 General Rules 4.3 Design Support Rules 4.4 Language-Technical Rules 4.5 Low-Level Programming Support Rules 4.6 A Final Word 27 27 29 30 32 34 40 43 45 49 53 56 58 59 60 63 63 65 66 71 72 78 85 89 91 92 93 100 103 105 106 109 109 110 114 117 120 122
Chronology 1985-1993 5.1 Introduction 5.2 Release 2.0 5.3 The Annotated Reference Manual 5.4 ANSI and ISO Standardization Standardization 6.1 What is a Standard? 6.2 How does the Committee Operate? 6.3 Clarifications 6.4 Extensions 6.5 Examples of Proposed Extensions Interest and Use 7.1 The Explosion in Interest and Use 7.2 Teaching and Learning C++ 7.3 Users and Applications 7.4 Commercial Competition Libraries 8.1 Introduction 8.2 C++ Library Design 8.3 Early Libraries 8.4 Other Libraries 8.5 A Standard Library Looking Ahead 9.1 Introduction 9.2 Retrospective 9.3 Only a Bridge? 9.4 What Will Make C++ Much More Effective? Contents vii 123 123 124 126 128 133 133 136 138 147 153 163 163 168 173 175 181 181 182 184 191 194 195 195 195 200 205
分享到:
收藏