C++印象
2011-09-13 15:35
295 查看
我是一个程序界的菜鸟,但是并不妨碍我评论计算机语言。
计算机程序运行,本质上是一组一组寄存器、内存和算术逻辑单元之间的电平变化,控制程序流程的是记录在存储点阵中的程序代码,直接翻译过来就是我们可爱的汇编语言,或者叫做机器语言,但是汇编语言晦涩难懂,又局限于硬件指令集,于是各种高级语言就应运而生了。高级语言语法更接近于实际生活(面向对象),更容易控制,也更安全,但是使用高级语言编写的程序执行效率肯定要低于编写良好的机器语言。其实这反映了一个成本的问题——机器时间比较珍贵的时代,机器语言无疑是更好的选择;而人员时间比较宝贵,编程周期一再缩短的时代,机器语言也就很少有人问津了。
那么现在是一个什么时代?计算机的速度一直在变快,但是程序发展更加迅速,动辄几G几十G的大小,造就了一个个运行异常缓慢的软件,所以单靠高级语言,难以完全适应程序的需要,而C++就是一个既有高级语言特性又兼顾了内存,指针这样的低级语言操作的语言,我觉得可以称呼C++为中级语言,灵活,强大,但是难学,复杂。
很多C++的使用,都要兼顾程序的运行速度。比如程序参数的传递,C++就提供了值传递、指针传递、引用传递几种,就是为了增加程序的执行效率;再比如基类定义引入virtual关键字可以定义虚函数,达到对象指针“智能化"的作用,当时我就想为什么C++语言设计者不把所有的类成员函数都隐藏定义成虚函数呢?这样C++就提升了(本应达到?)智能性,多么高级啊!C++之所以没有这么做,就是为了程序的执行效率,每个虚函数在对象实例化的时候都要新生成一个虚函数表,影响了程序的速度,所以需要程序设计者来控制是否使用虚函数!
由此可见,C++给予了程序员更大的权利,同时也给了程序员更大的责任,能力越大,责任越大,说的就是这个道理吧。
计算机程序运行,本质上是一组一组寄存器、内存和算术逻辑单元之间的电平变化,控制程序流程的是记录在存储点阵中的程序代码,直接翻译过来就是我们可爱的汇编语言,或者叫做机器语言,但是汇编语言晦涩难懂,又局限于硬件指令集,于是各种高级语言就应运而生了。高级语言语法更接近于实际生活(面向对象),更容易控制,也更安全,但是使用高级语言编写的程序执行效率肯定要低于编写良好的机器语言。其实这反映了一个成本的问题——机器时间比较珍贵的时代,机器语言无疑是更好的选择;而人员时间比较宝贵,编程周期一再缩短的时代,机器语言也就很少有人问津了。
那么现在是一个什么时代?计算机的速度一直在变快,但是程序发展更加迅速,动辄几G几十G的大小,造就了一个个运行异常缓慢的软件,所以单靠高级语言,难以完全适应程序的需要,而C++就是一个既有高级语言特性又兼顾了内存,指针这样的低级语言操作的语言,我觉得可以称呼C++为中级语言,灵活,强大,但是难学,复杂。
很多C++的使用,都要兼顾程序的运行速度。比如程序参数的传递,C++就提供了值传递、指针传递、引用传递几种,就是为了增加程序的执行效率;再比如基类定义引入virtual关键字可以定义虚函数,达到对象指针“智能化"的作用,当时我就想为什么C++语言设计者不把所有的类成员函数都隐藏定义成虚函数呢?这样C++就提升了(本应达到?)智能性,多么高级啊!C++之所以没有这么做,就是为了程序的执行效率,每个虚函数在对象实例化的时候都要新生成一个虚函数表,影响了程序的速度,所以需要程序设计者来控制是否使用虚函数!
由此可见,C++给予了程序员更大的权利,同时也给了程序员更大的责任,能力越大,责任越大,说的就是这个道理吧。
相关文章推荐
- C++的背影 ——C++之父Bjarne Stroustrup印象 [转]
- C++ 的背影{C++之父Bjarne Stroustrup印象 左轻侯}
- C++初学印象
- C++之父Bjarne Stroustrup印象
- 抛除C++旧印象(二):C#Dictionary源码剖析
- C++的背影 ——C++之父Bjarne Stroustrup印象(作者:左轻侯)
- C++的背影——C++之父Bjarne Stroustrup印象
- C++的背影——C++之父Bjarne Stroustrup印象
- C++ 的背影 --C++之父Bjarne Stroustrup印象
- C++的背影——C++之父Bjarne Stroustrup印象
- C++之父Bjarne Stroustrup印象
- C++之父Bjarne Stroustrup印象
- 抛除C++旧印象(一):C#List源码剖析
- C++中const关键字的使用方法,烦透了一遍一遍的搜,总结一下,加深印象!!!
- C++的背影——C++之父Bjarne Stroustrup印象
- C++xml文件操作 CMarkup学习方法说明 最近正在研究C++下的XML分析工具CMarkup。初次和XML相遇是基于C#对XML的操作。C#的XmlDocument和XmlNode给我印象
- 人与继承的C++实现
- C++字符串完全指南 - Win32字符编码(一)
- [c++]记录Windows程序“应用程序错误”到异常日志
- 堆栈的应用(1) 平衡符号 C++实现