C++语言的设计和演化(英文版)
作者 : Bjarne Stroustrup
丛书名 : 经典原版书库
出版日期 : 2002-01-01
ISBN : 7-111-09592-8
定价 : 38.00元
教辅资源下载
扩展信息
语种 : 英文
页数 : 242
开本 : 16开
原书名 : The Design and Evolution of C++
原出版社: Addison-Wesley
属性分类: 教材
包含CD :
绝版 : 已绝版
图书简介

Written by Bjarne Struostrup, the designer of C++, The Design and Evolution of C++ presents the definitive insider's guide to the design and development of the C++ programming language. Without omitting critical details or getting bogged down in technicalities, Struostrup presents his unique insights into the decisions the shaped C++. Every C++ programmer will benefit from Stroustrup's explanations of the 'why's' behind the language.
  This book is written in a well-organized, easy-to-read style that is often instructive and occasionally entertaining. Key insights offer the beginner logical 'hooks' on which to hang understanding of the details of the language. It also provides information and detailed discussions of key design decisions that will add to the expert's understanding.

图书前言

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 language 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 obvious 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++.
  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 l.0 and 2.0 to the current ANSI/ISO standards work and the explosion of use, interest, commercial activity, compilers, tools, environments, and 1ibraries. C++'s relationship to C and Simula is discussed in detail. C++'s relationship to other languages is discussed briefly. The design of major language facilities such as classes, inheritance, abstract classes, overloading, memory management, templates, 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 Skel1y for reading complete drafts of this book. Their constructive comments caused major changes to the contents and organization of this book. Steve Buroff Martin Carroll, Sean Corfield, Tom Hagelskjrer, Rick Hollinbeck, 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 writing 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 chapters 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, encouragemen, 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


作者简介

Bjarne Stroustrup:Bjarne Stroustrup: C++的设计师和最早的实现者,被誉为“C++之父”。1950年出生于丹麦,1975年硕士毕业于丹麦Aarhus大学,1979年获英国剑桥大学计算机科学博士学位,现在是AT&T大规模程序设计研究部的负责人,AT&T贝尔实验室特别成员,ACM特别成员。他的研究兴趣包括分布式系统、操作系统、模拟设计和程序设计。他也是Addison-Wesley的C++ In-Depth系列书籍的主编。著有《C++程序设计语言》、《C++语言的设计与演化》等。 2002年10月应华章公司邀请访问了中国,在西安、北京、杭州、上海等地高校进行了演讲。

图书目录

Acknowledgments
Contents
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++
I.l Simula and Distributed Systen1s
I.2 C and Systems Programming
l.3 General Background
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.l0 The Protection Model
2.11 Run-Time Guarantees
2.l2 Minor Features
2.l3 Features Considered, but not Provided
2.l4 Work Environment
The Birth of C++
3.l 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.1l Minor Peatures
3.l2 Relationship to Classic C
3.l3 Tools for Language Design
3.l4 The C++ Programming Language (lst edition)
3.l5 The Whatis Paper
C++ Language Design Rules
4.l Rules and Principles
4.2 General Ru1es
4.3 Design Support Rules
4.4 Language-Technical Rules
4.5 Low-Level Programming Support Rules
4.6 A Final Word
Chronology 1985-1993
5.l Introduction
5.2 Release 2.0
5.3 The Annotated Reference Manual
5.4 ANSI and ISO Standardization
Standardization
6.l 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.l The Explosion in Interest and Use
7.2 Teaching and Learning C++
7.3 Users and Applications
7.4 Commercial Competition
Libraries
8.l Introduction
8.2 C++ Library Design
8.3 Early Libraries
8.4 Other Libraries
8.5 A Standard Library
Looking Ahead
9.l Introduction
9.2 Retrospective
9.3 Only a Bridge
9.4 What Will Make C++ Much More Effective
Memory Management
l0.l Introduction
l0.2 Separating Allocation and Initialization
l0.3 Array Allocation
l0.4 Placement
l0.5 Deallocation Problems
l0.6 Memory Exhaustion
l0.7 Automatic Garbage Col1ection
Overloading
ll.l Introduction
ll.2 Overload Resolution
ll.3 Type-Safe Linkage
ll.4 Object Creation and Copying
ll.5 Notational Convenience
ll.6 Adding Operators to C++
ll.7 Enumerations
Multiple Inheritance
l2.l Introduction
l2.2 Ordinary Base Classes
l2.3 Virtual Base Classes
l2.4 The Object Layout Model
l2.5 Method Combination
l2.6 The Multiple Inheritance Controversy
l2.7 Delegation
l2.8 Renaming
l2.9 Base and Member Initializers
Class Concept Rennements
l3.l Introduction
l3.2 Abstract Classes
13.3 const Member Functions
I3.4 Static Member Functions
13.5 Nested Classes
13.6 Inherited::
l3.7 Relaxation of Overriding Rules
l3.8 Multi-methods
l3.9 Protected Members
l3.l0 Improved Code Generation
l3.ll Pointers to Members
Casting
l4.l Major Extensions
l4.2 Run-Time Type Information
l4.3 A New Cast Notation
Templater
l5.l Introduction
l5.2 Temp1ates
l5.3 Class Templates
l5.4 Constraints on Template Arguments
15.5 Avoiding Code Replication
l5.6 Function Templates
l5.7 Syntax
l5.8 Composition Techniques
l5.9 Template Class Relationships
l5.l0 Template Instantiation
l5.ll Implications of Templates
Exception Handling
l6.l Introduction
l6.2 Aims and Assumptions
l6.3 Syntax
l6.4 Grouping
l6.5 Resource Management
I6.5 Resumption vs. Termination
16.5 Asynchronous Events
l6.6 Multi-level Propagation
l6.7 Static Checking
l6.8 Invariants
Namespaces
l7.l Introduction
17.2 The Problem
l7.3 Ideals for a Solution
17.4 The Solution: Namespaces
l7.5 Implications for Classes
l7.6 C Compatibility
The C Preprocessor
l8.l Cpp
Index

教学资源推荐
作者: 陈帆 和红杰 周荣辉
作者: 【美】梁勇(Y.Daniel Liang) 著
作者: [美] 托尼·加迪斯(Tony Gaddis) 著
作者: [美]梁勇(Y. Daniel Liang) 著
参考读物推荐
作者: [美]马克·赫克勒(Mark Heckler) 著
作者: 张良均 樊哲 位文超 刘名军 等著