編程的思考.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
編程的思考

编程的思考 ——观《C++与90年代程序设计语言发展趋势批判》 HYPERLINK \l Ref1 1 在CSDN上读到几篇《C++与90年代程序设计语言发展趋势批判》(C++?? A Critique of C++ and Programming and Language Trends of the 1990s,3rd Edition,以下简称《C++批判》) 的译著,也读到不少C++支持者的争论,于是,拿E文的原文来读,顿觉感想颇多,不书不快! 书与作者: 《C++批判》是其作者Ian Joyer在UNISYS公司使用C++进行系统软件开发的过程中逐步完成的。起初的第一、第二版完成于1992年,那时还只是在comp.lang.c++新闻组里发表。尔后,随着Ian Joyer在面向对象领域的深入研究,《C++批判》的第三版也于1996年面世,并且演变成一本数十页的小册子,其内容也由单纯的C++变成为多种程序设计语言的比较,其中包括了当时正如日中天的Java和Bertrand Meyer在《面向对象软件构造》一书中设计的Eiffel。到了1999年,《C++批判》的第四版更是编纂成书,名为《对象揭密:Java,Eiffel与C++》(Objects Unencapsulated: Java,Eiffel and C++??, Prentice Hall) HYPERLINK \l Ref2 2 ,在Amazon上颇有些成绩。 Ian Joyer对读者的建议非常有趣: Buy it (Eiffel users), borrow it (Java users), or steal one and ceremonially burn it (C++ users). (Eiffel用户买来看,Java用户借来看,C++用户应该偷一本来烧掉!:)) 读者是谁? 但凡熟悉Bjarne Stroustrup,读过侯捷先生文章的人都知道,多数专家是不愿虚耗精力于不同程序设计语言之间的比较,因为“主流语言之间的合理比较要耗费很大的精力,需要在广泛的应用领域有充分经验”,而且“作者们尽力表现的公正无私,但是最终都是无可救药地偏向于某一种特定的应用程序,某一种特定的编程风格,或者某一种特定的程序员文化”(C++之父访谈录) HYPERLINK \l Ref3 3。 而Ian Joyer却一下子将当时面向对象领域的三种最主流的语言放到一起比较,且一开场就撇下了公正无私的架子:C++只是将面向对象与传统的思维模式结合,存在很多问题,Java部分的解决了C++中存在的问题,而Eiffel则是完全经由面向对象的思维方式设计而来,与理想的编程模式最为接近。如此偏颇,不免让人猜想作者与Eiffel有亲!(Ian Joyer确实开发了一个Eiffel的编译器,并在网上变卖,但绝不至于要撰文来为自己的编译器广告)。看完《C++批判》的前言部分,答案便有了,本文的出发点在于面向对象的软件工程意念和面向对象语言的设计,而非一般意义的语言特性比较。由此,文章最贴和于从事面向对象程序设计语言研究的读者,C++的程序员也大可以把这本书当成是C++专家经验的变相体现(见本文第4,5部分)——我个人以为本书对于Java和Eiffel的使用者帮助不大。 另外,《C++批判》以一个独特的角度审视程序和程序语言的地位,发人深思。 何谓程序?何谓程序语言? “程序即说明”,这是《C++批判》对程序的诠释,一方面是程序必须向编译器说明意欲何为(这是我们的通常认识),另一方面,程序自身也应该是其分析和设计的规格说明书(specification)。编程不仅仅指编写代码,而是分析,设计与实现的全过程! 据此,程序的特性必须由程序语言支持,《C++批判》引述了程序语言的定义:程序语言是一种规范,用于描述问题且易于改进。程序语言应该可以用来独立的完成以下工作 HYPERLINK \l Ref4 4: (1) 描述程序计算的目的。 (2) 将计算的过程组织成为一些具体的步骤。 (3) 在整个计算的过程中进行存储管理。 如果程序果真能够自我说明,对软件工程将会是多大的福音啊!传统语言(C++)确实十分缺乏对软件工程的支撑,在完全分析实现步骤之前,几乎无法得知程序的目的。(别跟我提注释,那不是语言强制特性!而且,你真的写了足够注释吗?) Eiffel提供了Precondition(前提)和Postcondition(结论)的语言概念,这对于程序的可读性和编译器对程序语义的理解无疑大有帮助,有助于确保程序的正确。这也正是面向对象设计领域中“设计基于约定”(Design By Contract)在程序语言中的具体体现。 HYPERLINK \l Ref5 5(“设计

文档评论(0)

d47fv82b5hI + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档