【vc++精品源码栏目提醒】:网学会员为需要vc++精品源码的朋友们搜集整理了C++与其他语言的比较(整理) - 培训教程相关资料,希望对各位网友有所帮助!
在31年前1979年一名刚获得博士学位的研究员为了开发一个软件项目发明了一门新编程语言该研究员名为Bjarne Stroustrup该门语言则命名为——C with classes四年后改称为C。
C是一门通用编程语言支持多种编程范式包括过程式、面向对象object-oriented programming OP、泛型generic programming GP后来为泛型而设计的模版被发现及证明是图灵完备的因此使C亦可支持模版元编程范式template metaprogramming TMP。
C继承了C的特色既为高级语言又含低级语言功能可同时作为系统和应用编程语言。
C广泛应用在不同领域使用者以数百万计。
根据近十年的调查C的流行程度约稳定排行第3位于C/Java之后。
C经历长期的实践和演化才成为今日的样貌。
1998年C标准委员会排除万难使C成为ISO标准俗称C98当中含非常强大的标准模版库standard template library STL。
之后委员会在2005年提交了有关标准库的第一个技术报告简称TR1并为下一个标准C0x而努力。
可惜C0x并不能在200x年完成各界希望新标准能于2011年内出台。
流行的C编译器中微软Visual C 2010已实现部分C0x语法并加入TR1扩充库而gcc对C0x语法和库的支持比VC2010更多。
应否选择C 哪些程序适宜使用C C并非万能丹我按经验举出一些C的适用时机。
C适合构造程序中需求较稳定的部分需求变化较大的部分可使用脚本语言 程序须尽量发挥硬件的最高性能且性能瓶颈在于CPU和内存 程序须频繁地与操作系统或硬件沟通 程序必须使用C框架/库如大部分游戏引擎如Unreal/Source及中间件如Havok/FMOD虽然有些C库提供其他语言的绑定但通常原生的API性能最好、最新 项目中某个目标平台只提供C编译器的支持。
按应用领域来说C适用于开发服务器软件、桌面应用、游戏、实时系统、高性能计算、嵌入式系统等。
使用C还是C C和C的设计哲学并不一样两者取舍不同所以不同的程序员和软件项目会有不同选择难以一概而论。
与C相比C具备编译速度快、容易学习、显式描述程序细节、较少更新标准后两者也可同时视为缺点等优点。
在语言层面上C包含绝大部分C语言的功能例外之一C没有C99的变长数组VLA且提供OOP和GP的特性。
但其实用C也可实现OOP思想亦可利用宏去实现某程度的GP只不过C的语法能较简洁、自动地实现OOP/GP。
C的RAIIresource acquisition is initialization资源获取就是初始化特性比较独特C/C/Java没有相应功能。
回顾历史Stroustrup开发的早期C编译器Cpre/Cfront是把C源代码并且C标准库也较丰富。
有时候C的语法可使程序更简洁如运算符重载、隐式转换。
但另一方面C语言的API通常比C简洁能较容易供其他语言程序调用。
因此一些C库会提供C的API封装同时也可供C程序调用。
相反有时候也会把C的API封装成C形式以支持RAII和其他C库整合等。
为何C性能可优于其他语言 相对运行于虚拟机语言如C/JavaC/C直接以静态形式把源程序编译为目标平台的机器码。
一般而言C/C程序在编译及链接时可进行的优化最丰富启动时的速度最快运行时的额外内存开销最少。
而C/C相对动态语言如Python/Lua也减少了运行时的动态类型检测。
此外C/C的运行行为是确定的且不会有额外行为例如C/Java必然会初始化变量也不会有如垃圾收集GC而造成的不确定性延迟而且C/C的数据结构在内存中的布局也是确定的。
有时C的一些功能会使程序性能优于C当中以内联和模版最为突出这两项功能使C标准库的sort通常比C标准库的qsort快多倍C可用宏或人手编码去解决此问题。
另一方面C/C能直接映射机器码之间没有另一层中间语言因此可以做底层优化例如使用内部intrinsic函数和嵌入汇编语言。
然而许多C的性能优点并非费午餐代价包括较长的编译链接时间和较易出错因而增加开发时间和成本这点稍后补充。
我进行了一个简单全局渲染性能测试512x512像素每像素10000个采样C 1小时36分、Java 3小时18分、Python约18天、Ruby约351天。
C常见问题 C源代码跨平台吗 C有不错的跨平台能力但由于直接映射硬件因性能优化的关系跨平台能力不及Java及多数脚本