欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

35.扩展书中看到的有意义的例子;36.请注意C中的异常处理技术 并应用到自己的程序中 37.经常复习自己以前写过的程序 并尝试重写 以应用所学的新知识;38.不要泄漏

墨初 知识笔记 79阅读

n等多范式语言)的开发设计思路是:

1. 首先选定一种思维方式(即范式),尽可能只用这一种思维方式解决问题;
2. 如果在局部遇到其他思维方式更得力的问题,则经慎重考虑后,可以将另一种风格包装在局部,解决局部问题。但整个系统在某一层次之上看来,应当是统一一致的。一般C++的开发,应以OB为基本风格。除非有类似MFC那样庞大而成熟的OO库支持,不应贸然在整体上使用OO风格。
3. 多种风格混用,除非有已被充分讨论并验证的方案(即成熟模式),可提供单一风格不能提供的较大优势,否则应极力避免。当然鼓励在研究中探索,但实践是另一回事。

C++完全可以在90年左右摆脱C的约束,随后简化模板语法,完善异常模型,接纳可选GC,建立完整的单根类库,付出性能小幅度下降的代价之后,实现语言整体升级。

但是C++选择了另一条路,三大约束坚持到底,坚守系统层面,以替代C为己任。是福是祸,实难判别。如果90年代初选择升级,胜则扼死Java于摇篮之中,败则寸土不保。不过以C++之高性能,胜面应稍大。如今看来,在系统面彻底取代C已无可能。

1994年为STL拖延标准立案时间长达四年,如今来看功过亦存争议。错过黄金时机不说,STL典范一立,库设计风气为之一改。然而在解决应用问题上,泛型较之OO,适应能力远逊之,且应用困难。

总之,C++的三大约束,既是其兴起之要素,也是其衰落之源头,同时,又是其今天得以屹立不倒的重要基石。其是非功过,实难一言以蔽之。

补充:2004年10月20日
C++/CLI之对于C++的意义,其实并不在于使C++重新获得了制胜Java或者C#的机会,而在于巩固了C++作为.NET平台上系统语言的地位。由此知,C++/CLI的发展,的确如Stan Lippman所说,是C++一贯发展思路的延续。三大约束固然已经放弃,但其精神实质仍在,形攻而实守,未来将可作为.NET上唯一最强之系统语言而长命百岁。

C++/CLI决不简单,但在大多数时候,它能够比传统的C++表现的简单些。这就是Andrew Koenig说的,通过复杂实现简单。

C#和Java的繁荣期,则有赖于人们对于大一统的中层次语言的信仰有多坚持。此两种语言无论在系统开发还是在应用开发中都非最优选。目前C#出现一些迹象,引入一些动态语言特性如cmdlet,又强化系统编程能力,想上下通吃。这是一条不归路,必会使C#变得更加复杂怪异。

学习编程语言,通语法能实践,不过十分之一。真正重要的是掌握其多种多样的实用的idioms或模式。这些模式才是体现了语言精神的东西。未掌握各种语言中的主要应用模式,则应羞于用“会”字。常听有人说语言一周乃至一两天即可掌握,这个掌握的层次肯定是很低的。真正要“掌握”语言,则我等凡人,诸事缠身,非得集中精力学习实践一两年,将该语言所擅长领域的应用问题熟悉过一遍,才有可能。若论精通,则十年也不容易。Henry Spencer用了30年C,仍乐此不疲;Pragmatic Programmer中评价Ruby说,学上四个小时就可以用它解决实际问题,但是10年之后还为它层出不穷的新意感到惊讶。偶见有人举出自己“精通和掌握”的工具和语言,动辄长达八九上十种,实为笑柄。真正掌握一种,已经是难能可贵,熟练掌握两种层次不同,思维不同的语言,应是有抱负的程序员的自我要求。何况如今之软件开发涉猎甚广,仅通编程层次还显不够。不过总之百招会不如一招精,做什么工作都要有自己的过人之处。

标签:
声明:无特别说明,转载请标明本文来源!