首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C加加是否到了生死存亡的时刻?不,C加加仍然在编程界任是不可替代的

C++是否逐步被取代

C++最能考察一个人对计算机知识掌握的能力。windows使用C、C++写的,现在又有qt、codeblocks等跨平台开发工具。可以这样说,基本上大型软件的底层使用C或者C++开发,上层使用C#、C++、Java开发,这样可以导出对应版本的API以提供开发者进行二次开发。比如说windows系统、AutoCad、matlab等。

现在用纯c写底层的已经很少了,因为比如你做个图形库就要不知要写几千几万行代码,这对程序员来时是一种考验,在这种竞争日趋激烈的社会,时间就是生命,效率就是金钱,C++以其开发效率高而性能只比C损失10%的情况下具有无可比拟的优势,也不能完全这样,因为C++是C的超集,也可以完全采用c语言编程。所以说为什么现在的库都往面向对象方向发展,连gcc也开始转向C++了,图形方面的XBOX、OpenGL都有很多C++版本。比如google和百度搜索引擎底层是用C和C++写的。

所以,对效率要求高的一般是C、C++混合编程,而对于网络前段和二次开发用Java和.net的居多。MySQL是用C++开发的,Oracle是用C写的。

所以学习C++用途是很广的。

语言没有好坏,只有学习的人掌握的深浅。

编程最重要的是实践,就是写代码、看别人写的代码、再写代码,你看再多的书,不写代码,你还是不会编程。但是写代码也要讲究方法循序渐进,不能刚学了几天语法,就想写个操作系统什么的,树立这种不切实际的目标只会让你的自信受到严重打击迷失自我。推荐一个学C/C++的学习群五六七六二五六六八无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!群内有很多干货和技术分享!

C++的难点和优势

知识点广泛而且难度高。按照几年前Scot Mayer在Effective C++中对C++的定义来看,C++是一门多范型语言,包括了C、面向对象编程和泛型编程。程序员需要正确理解很多基础概念,比如,堆和栈的区别、指针、指针的指针、虚函数的内部原理、继承引发的对象内存布局、多继承引发的模棱两可、模板以及编译器推导、STL算法等。C++的内容如此广泛,因此每个知识点的学习和积累都不是件容易的事情, 自然误用的情况常会发生。

C++打开了直接面向操作系统API编程的大门,因此使用C++完成工作,很多时候需要学习大量的平台相关的API,这些API有的非常复杂。比如被称为噩梦般的技术,Windows提供的COM/COM+库,其实就是需要了解一大堆基础知识才能操纵好。再比如:面向接口编程、虚函数表、设计模式中的工厂模式、Windows DLL地狱的由来、Windows注册表、序列化、Windows安全、RPC、IDL语言、支持脚本语言的自动化技术(IDispatch)、对象引用计数器,线程安全和套间和ATL模板技术等。

而在C++的演化过程中,因为缺乏商业公司的大力赞助,缺乏良好设计的跨平C++类库,多数人只能使用标准C++库,但跨平台效果也不佳。直到近几年Boost为代表的现代C++库起到了很大的作用。同时,Java程序员早就享受着非常好的支持,SUN的丰富的JDK,大量活跃的开源社区(比如Apache) 对Java的推动也是非常明显的。

C++程序员成长周期长,特别是中国很多靠做项目挣钱的成长型企业面对选用C++作为编程语言会有所顾虑。

优势同样很明显:

假定程序员能很好的运用C++,那么程序可以获得很高的性能,消耗较少的资源。在云计算时代,C++在很多关键业务上起到不可替代的作用,也为这个地球节能。举个例子,我有一次要在美国服务器上部署一个JSF编写的网站,安装GlassFish失败是因为虚拟机核心线程和进程的总数被限制,只能换成C++编写的网站。这台服务器还同时运行着C++编写的TCP服务程序和NoSQL数据库。

在那些领域是不可代替的存在

在大型软件、游戏的开发或者与操作系统有密切关联的软件开发中,C++都有着不可替代的优势。

在游戏和工具领域仍然是主流

学C/C++的学习群五六七六二五六六八无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!群内有很多干货和技术分享!

首先是游戏领域,Milo Yip表示——程序员必须使用C++框架/库,如大部分游戏引擎(如Unreal/Source)及中间件(如Havok/FMOD),虽然有些C++库提供其他语言的绑定,但通常原生的API性能最好、最新。

其次是工具领域,无论是网络安全还是杀毒软件,C++仍是主流语言。

C++属于面向对象的高级语言,相比于面向过程的编程语言或机器语言有绝对的开发便捷性优势,至于面向对象编程在大型程序开发中的优势网上很多。推荐一个学C/C++的学习群五六七六二五六六八无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!群内有很多干货和技术分享!

C++与C#、Java等同为面向对象的高级语言不同,C#和Java需要在自己的虚拟平台上运行,具有较强的可移植性,对系统的依赖较小,但由于多了一层虚拟平台程序,执行效率较慢。C++程序可以直接运行于系统上,效率要高很多,并且对于一些如图形、系统调度方面的处理可以更加精细,但是相应的,其开发难度较大,开发时间较长。

C++的不可替代性

从应用领域来说,C++适用于高性能计算、嵌入式系统、开发服务器软件、游戏、实时系统等,所以,短期内能彻底取代C++语言并不存在。

当某一种编程语言在市场需求明显比另一种语言更强时,强需求语言中的缺陷则容易被淡化,衰退的语言则不断被人挑出致命硬伤。这种编程语言之间的比较并不公平,且没有意义。

编程语言都是用来表达思想和完成需求的工具,随着时代的发展,不同语言在不同领域都做出了取舍,取代虽然存在,但不是必然现象。C++的需求随着时代发展会不可避免地越来越少,但不可能彻底消失,C++程序员也具有不可替代性,在市场上依旧有着竞争性。推荐一个学C/C++的学习群五六七六二五六六八无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!群内有很多干货和技术分享!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171223A015QU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券