专栏首页企鹅号快讯C加加是否到了生死存亡的时刻?不,C加加仍然在编程界任是不可替代的

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++的难点和优势

知识点广泛而且难度高。按照几年前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++都有着不可替代的优势。

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

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

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

C++属于面向对象的高级语言,相比于面向过程的编程语言或机器语言有绝对的开发便捷性优势,至于面向对象编程在大型程序开发中的优势网上很多。

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

C++的不可替代性

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

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

编程语言都是用来表达思想和完成需求的工具,随着时代的发展,不同语言在不同领域都做出了取舍,取代虽然存在,但不是必然现象。C++的需求随着时代发展会不可避免地越来越少,但不可能彻底消失,C++程序员也具有不可替代性,在市场上依旧有着竞争性。

本文来自企鹅号 - 轻松学习C语言媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C加加的学习方法!

    学习C++重在理解其各种语言设施所代表的语义,以及C++所能表示的语义所代表的设计思想。首先从宏观上入手,你需要明白的是C++是程序设计语言的本质。在此我把C+...

    企鹅号小编
  • C加加和游戏开发那些事,告诉你怎么用C加加纵横游戏编程

    C语言和C++ C 语言可以说是一门设计的非常成功的语言。但是C语言没有OOP的特性,在做一些大型项目的时候力不从心。一些大型的C项目,随着项目的臃肿,人类基本...

    企鹅号小编
  • C经典类库 需要的收藏

    现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。本文为你介绍了十一种类库,有我们常见的,也有不常见的,一起来看。 C++类库介绍 ...

    企鹅号小编
  • C加加零基础初学者该如何学习C加加以及编程

    都说Java是世界上最受误解的语言,其实C++何尝不是。现在网上流传的错误的C++学习方法一抓就是一大把。很多人在学习C++的过程中也走了许多弯路,浪费了不少时...

    企鹅号小编
  • TIOBE 9月编程语言排行榜发布,C++增速最快,C++20的功劳?

    TIOBE 公布 2020 年 9 月的编程语言排行榜,C++ 位列第四,仅次于 C、Java 和 Python。而且 C++ 相比去年同期增长 1.48%,成...

    机器之心
  • 大厂程序员教你如何学习C++(内附学习资料)

    目前准备面试同学都知道,C++是百度和腾讯的主流开发语言,而java是阿里的主流开发语言。

    代码随想录
  • 畅行全球20年,最值得拥有的殿堂级C++入门神作!!

    它融合了令全球无数程序员为之迷醉的C++大师Stanley B. Lippman的丰富实践经验,注入了C++标准委员会原负责人Josée Lajoie 对C++...

    博文视点Broadview
  • 学好 C/C++,走遍天下都不怕

    与 Java、Python 等语言相比,C/C++ 语言是离操作系统更近的一种高级语言,因此其执行效率也更高。可以说,就像武侠小说中的“九阳神功”一样,C/C+...

    CSDN技术头条
  • 左清华,右C++,你Pick哪边?

    比清华大学在疫情期间使用的直播教学工具雨课堂,功能上更加强大的在线教学系统——雷课堂。

    老九君
  • 如果平行宇宙也有编程语言

    C++最近不太开心,自己曾经也是红极一时的编程语言,参与构建了无数的基础设施软件。但随着互联网时代的崛起,以PHP和Java为首的语言在Web开发领域以势如破竹...

    轩辕之风

扫码关注云+社区

领取腾讯云代金券