冒号课堂§6.1:系统语言 - 编程入门网
万缕的联系,但一个简单,一个复杂;一个纯过程式,一个集过程式、对象式、泛型式和元编程于一体。貌合神离,不宜混为一谈。”
叹号一个问题憋了半天,不吐不快:“我有一个问题:如今电脑性能这么高,C与C++如此强调程序的性能和效率还有必要吗?” “绝对有必要!”冒号斩钉截铁,“其一、纵向看,用户的耐心与电脑的性能成反比,早年一个386人们就满足了,如今却忍受不了586;以前16M内存就不错了,现在1G都嫌小。其二、横向比,占用资源过多、运行相对缓慢的软件竞争力也低。其三、在一些应用领域如人工智能、大型计算等方面,普通电脑的性能还远远不能满足要求,超级计算机的存在就是明证。其四、仍有些程序跑在资源有限的主机上,比如嵌入式系统。” 引号再次要求:“能推荐一些C++方面的书吗?” 冒号直言相告:“学好C一本书足矣,学好C++即使推荐十本仍有遗珠之憾。可以说C++是苦了编程者,甜了著书人。开个小书单:初级——《C++ Primer》和《Thinking in C++》;中级——《The C++ Programming Language》和《Effective C++》系列;高级——《The C++ In-Depth》系列。这里还要特别推荐一下《The Design and Evolution of C++》,从中你可以看到 C++的设计和演变的来龙去脉,极具启发性。其他的C++精品书籍还有不少,恕不一一列举了。C++是匹无辔无鞍的野马,看似桀骜不驯,若能顺性而御,必能足踏飞燕,行千里而不劳。” 冒号课堂§6.1:系统语言(5)时间:2011-06-27 BlogJava xyz98,插语 [1] 更官方的说法是“#”来自音乐中的高半音符号。 [2] 比如文献【4】设计了一种用C来实现OOP的机制。 [3] RAII是由Bjarne Stroustrup首先提出的,参见文献【2】。 [4] 说它更准确,是因为资源获取的代码不一定需要出现在constructor中,但资源释放的代码一定出现在destructor中。 [5] 指即使发生异常(exception)也不会导致资源泄露。 [6] 比如,在静态导入Math类(import static java.lang.Math.*;)后,代码中可以直接调用sqrt、log、max等数学方法,不再需要“Math.”的前缀了。 。总结 ·C++对C语言的兼容是其成功的一个重要因素,但同时也继承了C的一些缺陷。 ·C++设计者没有直接支持自动垃圾回收,是担心它造成过大的时空开销,同时会削弱底层开发能力。 ·除了手工释放内存外,C++提倡运用RAII原则解决包括内存在内的资源管理问题。 ·C与C++对指针的全面支持和宽松的类型转换限制,均出于底层系统开发的需要。 ·C可以借鉴C++的命名空间、重载、异常处理和STL等非OOP的特征。 ·D语言提供了可控制的垃圾回收器,支持线程同步、动态数组、嵌套函数和契约式设计,并废除了头文件和前置声明(forward declaration)。 ·在程序性能与生产效率之间,系统语言更看重前者,它们在赋予程序员更多的权利的同时,也带给程序员更多的负担。 ·程序的性能和效率永远是重要的。一方面,用户对软件性能的期望越来越高;另一方面,有时硬件性能与软件需求并不匹配:有些应用(如人工智能、大型计算)对程序的性能和效率要求极高,有些系统(如嵌入式系统)的资源十分有限。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |