《C++语言的设计和演化》摘录

 
设计哲学
“C++语言的设计就是想为系统程序设计提供Simula的程序组织功能,提供又提供C语言的灵活性和效率、可移植的。“
 
“每种语言的设计都是为了解决一个特定问题集合里的问题,在某个特定时期,依据某个特定的人群对问题的理解。原则指导着第一个设计,所有成功的语言都是逐渐成长起来的。“
 
“类型错误往往反映出两种情况:愚蠢的编程错误、设计中的概念缺陷。”
        
“科学家和知识分子的责任就是保证它们的思想可以被公众接受,从而对社会有用,而不是为了做出一些专家们的玩物“
 
“用户定义类型和内部类型与语言法则的关系应该是一样的,能够从语言及其相关工具方面得到同样的支持。如指针可用于内部类型和用户定义类型。”
 
“只提供一个特征是不够的,还必须以一种实际上可以负担得起的形式来提供它。‘负担得起‘意味着‘使用常见硬件的开发者可以负担‘,而不是‘使用高端设备的研究者可以负担‘或‘若干年之后,当硬件变得便宜之后就可以负担‘ “。
 
“类型等价:名字等价、布局兼容性“
 
“C++中的变量、常量等的定义都必须遵循唯一定义原则。”
 
“C++只是一个系统中的一个语言,而不是一个完整的系统。”
 
“一个程序设计语言要服务于两个目的:它为程序员提供了一种载体,使他们能描述需要执行的动作;它还提供了一组概念,程序员借助它们思考什么东西是能做的。第一方面的理想是要求一种接近机器的语言,使机器的所有重要方面都能简单而有效地处理,而且是以某种程序员比较容易看清楚的方式。C语言的设计主要就是遵循了这种想法。第二方面的理想是一种接近需要解决的问题的语言,这将使问题的解的概念可以直接而简洁地描述好。加入到C里以创造出C++的那些机制的设计着眼点也就在这个方面”
 
“如果你只想继承一个实现,那么就应该用C++的私有派生。私有派生把基类留作实现的细节”
 
“C++的访问控制是为了防止意外事件而不是防止欺骗。任何程序设计语言,只要它支持对原始存储器,就会使数据处于一种开放的状态,使所有有意按照违反数据项原本类型规则所描述的方式去触动它的企图都能够实行”
 
“很不幸,这种标准的结构赋值方式并不总是理想的。典型情况是,一个类的对象本身只不过是一颗信息树的根,简单地复制这个树根而不关心任何分支往往不是我们所希望的。与此类似,简单地去复写一个类的对象也很可能造成混乱”
 
“一个抽象数据类型定义了一个黑盒子。一旦定义好了之后,它就不会实际地与程序其他部分产生交互了。没有其它办法能为某些新的用途而调整它,除非是修改它的定义。这可能会带来很严重的灵活性问题”
 
“C++原本的设计就是为了使作者和他朋友们能够不必再用汇编语言、C或各种各样新朝的高级语言做程序设计。它的主要目标是使程序员个人能够更容易和更愉快地写出好的程序来安。”
 
“面向对象的程序设计是利用继承机制的程序设计。数据抽象是使用用户定义类型的程序设计。除了少许例外,面向对象的程序设计将能够而且应该支持数据抽象。这些技术需要有效的正确支持。数据抽象从本质上需要在语言特征的形式上得到支持,而面向对象的程序设计则更进一步地需要得到程序设计环境的支持。为了达到通用性,支持数据抽象或者面向对象程序设计的语言又必须能有效地利用传统硬件。”
 
“要成为真正有用的、人们乐于使用的东西,一个程序设计语言的设计就必须有一种全局观点,用它来指导其各个语言特征的设计”
 
“指导C++语言特征设计的目标:C++应该使认真的程序员能够觉得编程变得更愉快;C++是一种通用程序设计语言,它应该是一种更好的C、支持数据抽象、支持面向对象的程序设计。“
 
“指导C++语言特征设计的规则:一般性规则、设计支持规则、低级程序设计支持规则“
一般性原则:
         “C++的发展必须由实际问题驱动”
         “不被牵涉到无益的对完美的追求之中”
         “C++必须现在是有用的”
         “每个特征必须存在一种合理的明显实现方式”
         “总提供一条转变的通路”
         “C++是一种语言,而不是一个完整的系统”
         “为每种应该支持的风格提供全面的支持”
         “不试图强迫人们作什么”
设计支持(支持OO/ 数据抽象/GP )规则:
         “支持一致的设计概念”
         “为程序的组织提供各种机制”
         “直接说出你的意思”
         “所有的特征都是必须能够负担的”
         “允许一个有用的特征比防止各种错误使用更重要”
         “支持从分别开发的部分出发进行软件的组合”
低级程序设计支持规则:
         “使用传统(笨)连接程序”
         “没有无故的与C的不兼容“
         “在C++下面不为更低级的语言留下空间(除汇编语言之外)”
         “对不用的东西不需要付出代价(0开销原则)“
         “遇到有疑问的地方就提供手工控制的手段”
 
“应该强调指出,这些语言修改就是扩充,C++过去是,将来也还是一个长周期的软件开发所使用的稳固的语言”
技术细节
“采用一个通用分配系统做这种对象的分配和释放,很容易成为程序运行时间中的制约因素,还可能主导了程序的存储需求”
 
“C++把存储分配和初始化进行了分离”
 
“运算符new的职责是保证互相分离的存储分配和初始化能正确地放在一起”
 
“多重继承可应用于:归并相互独立的或基本上相互独立的几个类层次;接口的组合;从一个接口和一个实现的综合出一个类“
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值