Chapter 1 Notes to the Reader

       C++ is a general-purpose(通用的) programming language;its core application domain is systems programming in the broadest sense. In addition, C++ is successfully used in many application areas that are not covered by this label.
这一章的内容结构和阅读要点(红:认真读 绿:大致读 蓝:回头读)
介绍这本教材的组织结构(1.1);
学习C++语言的基本途径和注意事项(1.2);
设计C++语言所采用的理念和原则(1.3);
C++语言的发展历史与里程碑(1.4);
C++语言的主要用途(1.5);
C语言和C++语言的关系(1.6);
C++语言对程序设计思维方式的影响和作用(1.7)。

1.1 The Structure of This Book

This book consists of six parts:
  · Introduction:   Chapters 1 through 3.      overview
  · Part I   Chapter 4 through 9       C++’s build-in type and basic facilities
  · Part II  Chapter 10 through 15   object-oriented and generic programming
  · Part III Chapter 16 through 22   standard library
  · Part IV Chapter 23 through 25   design and software development issues
  · Appendices:  Appendices A through E    language-technical details


1.2 Learning C++
    The most important thing to do when learning C++ is to focus on concepts and not get lost in language-technical details. The purpose of learning a programming language is to become a better programmer; that is , to become more effective at designing and implementing new systems and maintaining old ones. For this, an appreciation of programming and design techniques is far more important than an understanding of details; that understanding comes with time and practice.
在学习C++语言的时候,最重要的是把注意力集中在其概念方面,而不是陷入只关注语言技术细节的误区。学习一个程序设计语言的目的是成为一个好的程序员,在设计与实现新的系统、维护已有系统的过程中具有更高的效率。因此,对于程序设计技术和软件设计技术的鉴赏,要比理解语言的细节重要得多(随着时间的延伸和实践的增加,这些细节将自然会被理解的)。

学习语言的目的是将其作为工具很好地应用于软件系统的开发和维护,不能只是了解很多细节,却不会正确地使用。
程序设计风格(Programming Styles)通常由思维方式和语言支持所决定,而不同的领域要求的思维方式不同,因而程序设计风格不同,对语言的支持要求也不同。
C++同时支持多种程序设计风格的能力,使其应用领域很宽,但绝对不是“放之四海而皆准”的。
学习一种新的语言的途径不是唯一的,这与已有的基础和预定的目标有关。我们要求大家是为了更好地进行程序设计和软件设计而学习的。
不需要在掌握了一个新语言(如C++)的所有语言特性和技术内涵之后才开始真正使用它。C++可以在多个不同的专业层次上使用,我们可以通过实践循序渐进地逐渐掌握C++。
跳过C而直接学习C++是值得提倡的。C++更安全、表现力更强,又减少了对低层技术的关注要求,因此比C更容易使用。
现在已经有一些独立开发和各自实现的C++语言,也有一些可用的工具、程序库和软件开发环境,还有大量的教科书、手册、杂志、动态、BBS、邮件组、会议和课程,可提供C++语言最新的发展信息。
1.4 Historical Note
1.7 Thinking about Programming in C++

    Ideally, you approach the task of designing a program in three stages. First, you gain a clear understanding of the problem (analysis), then you identify the key concepts involved in a solution (design), and finally you express that solution in a program (programming). However, the details of the problem and the concepts of the solution often become clearly understood only through the effort to express them in a program and trying to get it to run acceptably. This is where the choice of programming language matters.
            理想情况下,动手完成一个程序的设计任务要经历三个阶段。首先,获得所要解决的那个问题的一个清晰的理解(这个过程称为分析);其次,标识出这个问题的一个解中所包含的关键概念(这个过程称为设计);最后,在一个程序中表现出这个解(这个过程称为程序设计)。然而,问题的细节和对应的解中所包含的概念,经常是只有在努力地将它们在程序中表现出来并且试图将它们以可以接受的方式运行后,才能够得到清晰的理解。这便是选择程序设计语言的重要性之所在。
            这段话的意思是:选择合适的程序设计语言,有助于在程序设计、设计和分析过程之间建立思维方式上的有机联系。
大多数应用中存在着一些概念,它们既不容易被表示成某个基本类型(指的是由某种语言提供的内在的类型(build-in type),(如整数类型、字符类型等),也不容易被表示成某个没有相关数据的函数。因此,C++中提供了类(Classes)来表示这样的概念(类是C++语言的第一概念,我们会逐渐熟悉它的)。
任何一个概念不可能存在于真空之中,总是存在着一些由相关概念组成的簇(Clusters)。因此,在程序中组织(表示不同概念的那些)类之间的关系,经常比用单个的类来定义一个概念要困难得多。

管理复杂性能力最强的工具之一,就是以层次结构(Hierarchy)方式来加以安排:将相关的一组概念组织成一棵树(Tree),使得最一般化的概念对应于树的根。在C++中,派生类(Derived Classes)可以用来表示这样的结构。
有时,即使是用有向无环图(directed acyclic graph)也不足以组织一个程序中的概念,因为有些概念看上去是固有地相互依赖着。这时,我们应当试着将这样的环形依赖限制在程序的局部,以免使它们影响整个程序的结构。 化解依赖图最好的工具之一,是明确地分离接口与实现,C++的抽象类(Abstract Classes)就是这样的工具。
表现概念之间共性的另一种方式是模板(Templates)。一个类模板阐明了与一组类有关的共同特征,同时允许用参数带入这组类中,使每个类具有独特的特性。利用类模板可自动产生出具有共性和特性的不同的类。
The question “How does one write good programs in C++?” is very similar to the question “How does one write good English prose?” There are two answers: “Know what you want to say” and “Practice. Imitate good writing.” Both appear to be as appropriate for C++ as they are for English – and as hard to follow.
“一个人怎样用C++写出好的程序?”。这个问题非常类似于“一个人怎样写出好的英文散文?”这样的问题。问题的答案是:(1)“你要知道要说的是什么。”;(2)“实践,去模仿好的写法。”
这两个答案看来对于C++都是象对英文那样是合适的,但也都是不容易做到的。
优秀的程序是在抽象程度与可理解程度方面都达到了高水平的程序。
抽象程度低的程序,适应应用变化的能力差,不容易被他人或以后的开发任务所重用(reuse),但是这样的程序容易写,写出来的程序量也大。
如果把注意力放在局部的技巧上,程序的可理解程度通常就较低,也是不利于重用的。当然,抽象程度高的程序要做到容易理解通常是比较难的。
Writing software is an art as well as a science.
                                     ---- Shari Lawrence Pfleeger
    即欲写好程序要发挥左脑右脑功能
切记:直接、简洁地表达自己的想法。
人文素质要求:自信、敬业。
对于我们而言,程序设计语言是工具,学习的目的是更好、更恰当地使用它。
语言都有一个起主导作用的设施骨架,掌握这个骨架是根本,而细节可以在实际使用时再逐渐熟悉。
语言中提供的设施是有针对性的,是用来支持某个程序设计范型的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

johnlxj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值