设为首页 加入收藏

TOP

C++断想
2011-03-18 13:21:14 】 浏览:985
Tags:断想

C++(www.cppentry.com)断想

荣耀  2002

C++(www.cppentry.com)是一 门多范型(multi-paradigm)编程(www.cppentry.com)语言。

C++(www.cppentry.com)并非单单具有面向对象特性,它支持面向对象以及另外数种有用的编程(www.cppentry.com)风格。比如基于过程(procedure-based)、基于对象(object-based)、面向对象(object-oriented)、泛型编程(www.cppentry.com)(generic programming)等等。

那些具有根深蒂固的C情结的C++(www.cppentry.com)程序员大都习惯于生活在C风格程序设计之中,面向对象开发者则对OO风格着迷,而严肃的(前卫的)程序员正在探索着泛型编程(www.cppentry.com)技术

C++(www.cppentry.com)语言之所以如此成功,并不是因为其鼓吹者的煽风点火,而是它很好地解决了它适合解决的现实问题,比如低阶系统设计、特定领域企业级软件设计等。在这些领域,尚没有第二门语言能够象C++(www.cppentry.com)这样,理想地解决目标问题。

迄今为止,也没有第二门语言能够象C++(www.cppentry.com)这样,吸引如此之多的智力投入。C++(www.cppentry.com)自身的复杂性和解决现实问题的良好能力,使得它极具工业、学术研究价值。在C++(www.cppentry.com)之后,语言越发趋于“傻瓜”。

C++(www.cppentry.com)自身已经有二十多年的发展历史,但标准C++(www.cppentry.com)还只是一门年轻的语言。C++(www.cppentry.com)的标准化,对其持续发展至关重要。

当大多数语言朝着深度面向对象的方向执著发展时,早在大约15年前,C++(www.cppentry.com)就义无反顾地向模板和泛型编程(www.cppentry.com)技术大踏步前进。对模板和泛型编程(www.cppentry.com)技术的强力支持,使得C++(www.cppentry.com)根本不同于其它编程(www.cppentry.com)语言。

仅仅掌握C++(www.cppentry.com)面向对象编程(www.cppentry.com)技术,而对模板和泛型编程(www.cppentry.com)技术懵懵懂懂,等于只学会了一半C++(www.cppentry.com)。

别指望垃圾收集会成为一等C++(www.cppentry.com)语言特性,它违背了不止一条C++(www.cppentry.com)设计理念。比方说,不应该为用不到的东西付出代价,遇到可疑之处就提供手工控制手段,所有语言特性都必须能够承受得起,等等。这些设计理念,大都带有浓厚的学院派味道。

Bjarne Stroustrup拒绝深入评价Java和C#,他说,“我不是任何专有语言的爱好者,而是开放的正式标准的爱好者。”这样的理由,冠冕堂皇,让人无话可说。但是,我们还是要考虑到这里面毕竟有个人性格、所处环境、文化背景以及历史因素在内。

任何伟大的人物在从事任何伟大的事业时,都难免掺杂个人动机在内。一位语言设计师之所以会设计一门新的语言,首先应是出于对现有语言的不满,并对自己的语言设计理念坚信不疑。

C++(www.cppentry.com)最初的成功很大程度上是因为它完整地兼容C,C++(www.cppentry.com)最初的卖点也不过是更好的C。但长期以来,Bjarne Stroustrup最想从C++(www.cppentry.com)中拿掉的东西正是那些为了和C保持兼容的特性,这多少都具有一些讽刺意味。今天,Bjarne Stroustrup说,用C++(www.cppentry.com)来写C风格的程序对大多数应用来说不是使用C++(www.cppentry.com)的最佳方式,要成为真正的C++(www.cppentry.com)行家里手,你必须合理使用C++(www.cppentry.com)所提供的抽象机制和类型系统。

D&E一书中,Bjarne Stroustrup说道,“我们的历史从来都不是一张白纸,仅仅提供一种东西是不够的,我们还需要使人们能够从旧工具和旧思想转变到新东西中来。因此,假如C没有摆在那儿,C++(www.cppentry.com)无需与之兼容,我也会选择与另外的某种语言大体上兼容。假如一种作为基于C的语言但带有重大的不兼容性,或者想让一个白手起家的语言得到广泛应用,都会遇到更多的麻烦。”

这就是这门语言设计者的自白。这种设计出发点和Java以及C#是截然不同的,对设计哲学的不同崇尚,导致了今天存在这些不一样的语言,而对某种设计哲学的普遍认同,导致Java和C#如此酷似,而这,又无不与语言产生的历史背景和时代要求有关。

永远都不要指望Bjarne Stroustrup和ANSI/ISO标准委员会会从C++(www.cppentry.com)中拿掉象多重继承这样的诡异的玩意儿,或许,缺了诸如此类的语言特性,C++(www.cppentry.com)就不再是C++(www.cppentry.com)了。

一个人总可以站在自己的立场,杜撰出一套利于自己并力图说服别人的论点和论据。D&E解释了为什么C++(www.cppentry.com)会成为今天这个样子,你可以对Bjarne Stroustrup的解释点头称是,也可以对Bjarne Stroustrup的某些辩解不以为然,但是,从Bjarne Stroustrup对语言设计的折衷权衡考虑之中,我们应该能够领悟到不少语言设计乃至软件设计的思维方法。

D&E是、但也不仅仅是一部语言设计者的自我辩词。

单从诞生时间来看,C++(www.cppentry.com)是有些年头了。和Smalltalk、Eiffel这样的语言相比,C++(www.cppentry.com)的普及应用范围之广,有目共睹,和Java、C#这样的“现代语言”相比,似乎它不够时髦,但有一点毋庸置疑:C++(www.cppentry.com)在它擅长的工业领域取得的成就,现在将来Java和C#都难以望其项背。

C++(www.cppentry.com)会过时吗?对这个问题的最好的回答是,C++(www.cppentry.com)所擅长解决的问题领域会过时吗?或者说,C++(www.cppentry.com)所擅长解决的问题领域会消失吗?

Java和C#会危及C++(www.cppentry.com)的地位吗?Java已经存在数年,并已取得巨大的商业上的成功,但今天C++(www.cppentry.com)仍然保持着良好的发展势头,C#同样也没有能力挤掉C++(www.cppentry.com)。

我们可以注意到,和当初C++(www.cppentry.com)诞生时以“更好的C”为宣传口号不一样,今天,包括它的创建者在内,从来都没有人说过C#是更好的C++(www.cppentry.com),尽管C#借用了大量的C++(www.cppentry.com)语法表达形式,但C#(也包括Java)同C++(www.cppentry.com)的设计理念存在着根本不同,因为它们要解决的目标问题领域,大不一样。

在C++(www.cppentry.com)所擅长解决的问题领域,比如说,低阶系统程序设计和严肃的嵌入式系统设计领域,C++(www.cppentry.com)真正的竞争对手,目前也只有C。事实上,在过去十几年以来,在C++(www.cppentry.com)的压力下,C的地盘就在不断紧缩。以后也不大可能在相同的领域出现可以和C++(www.cppentry.com)一较高下的语言。

在大多数高阶程序设计领域,许多语言都可以完成C++(www.cppentry.com)能够完成的任务,有些任务用别的语言甚至会比C++(www.cppentry.com)来得更便捷,但C++(www.cppentry.com)在运行效率、灵活性以及用户社团背景、资源等方面的优势,使得它一直处于有利的竞争位置。

但我相信 — 事实也已经证明,C++(www.cppentry.com)在攻城掠地的同时,也被Java、Object Pascal以及C#这样的语言所挤压,在某些高阶程序设计领域,C++(www.cppentry.com)的领地已经呈现紧缩趋势。

C++(www.cppentry.com)已经足够成熟,同时还有更加惊人的智力投入来保持其持续发展完善。但标准委员会的委员们向来都是以保守而不是激进而著称,不要指望ANSI/ISO标准委员会会轻易向C++(www.cppentry.com)语言自身加入更多的特性 — 它已经够复杂的了,也别指望它们会轻易对C++(www.cppentry.com)进行删繁就简。

C++(www.cppentry.com)说到底不过是一门语言而已,它并非是一个系统或平台 — 它也拒绝成为一个系统或平台。作为一项国际标准,保持自身的纯洁至关重要。不过,可以肯定,已经成为标准C++(www.cppentry.com)的一个重要组成部分的标准库,将会不断膨胀。

从某种意义上说,库就是C++(www.cppentry.com)的平台。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇纯真IP数据库格式详解 下一篇如何在linux下检测内存泄漏

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目