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

没有大东家的C+,和其他语言相比到底难在哪里?

看过编程语言排行榜的都知道,C/C++ 自02年以来,不管时代如何发展,其排名一直在前五以内,足见其在编程语言界的地位。

编程界流行这么一句话:

C几乎什么都能做,C++几乎什么都能做好,足见其功能的强大。

大家都知道C++完全兼容C,C++是C语言的增强版,如果没有学习过C语言或者先学习的其他语言,比如c#,再学习C++就会觉得好难呀,那么C++相比其他语言到底难在哪里呢?

一、C++历史包袱太多

C++ 是上世纪80年代的发明,算是比较古老的了,在长期的发展中,存在大量的历史问题,在解决某个问题时,面临的选择太多,为了兼容以前的代码和以前的规范,不得不使整个系统复杂庞大。

二、C++没有一个唯一的大东家

我们知道很多语言背后都有一个团队在运营,比如微软的C#、甲骨文的Java、谷歌的Go,再看C++,它不隶属于任何一个团队,它没有唯一的编译器开发商,微软的msvc、Linux的g++,还有clang等等;

这么多厂商,谁也不占主导地位,谁也不听谁的,最后只能成立一个C++标准协会,大家协商着来,相互妥协,这种相互妥协,导致C++变得异常复杂,既兼容这个又兼容那个,迄今为止没有一个公认的严格的C++规范,C++是非常自由的,而自由也意味着难度大

三、C++没有完善的自动垃圾回收机制

当我们一提到C/C++,大概首先能够想到的就是指针,指针是C/C++的精髓,同样也是难度的根源之一;

像Java、Python等很多编程语言是没有指针的,因为他们的虚拟机或者解释器自带垃圾回收机制,编程者完全不用操心内存回收的问题;

而C/C++在使用完申请的内存空间之后,又要回收,最常见的问题就是忘了回收或者其他变量正在引用就提前回收了;

而带垃圾回收的语言,编程者根本不需要操心这些事,完全不需要知道内存是如何分配的,该谁来回收以及如何回收;

自动垃圾回收有利有弊,利是对开发者简单,弊是运行效率相对低下,C/C++ 是注重运行效率而牺牲了简单性。

四、C++语法博大精深

上面说了这么多,强调的都是背后原因,那具体说来,到底C++难在哪里呢?

相比Java、C#、Python、PHP、JavaScript、Go、C、R、scala、F#...

在纯语法上,和C++的难度完全不在一个量级,而说C++简单的,大概都是刚毕业没几年,只玩过C++而不知道其他语言的,比如复杂的const和static语义,指针运算,取地址运算、模板、多态、构造函数、继承等等。

五、第三方库不多

相对来说,C++主张从轮子造起,第三方库不是太多,很多看似简单的功能都得自己实现或者拼命的找库;

一般来说,C++使用的时间长了,就会掌握的更好,因为可以不断积累库函数。

没有哪一种语言是绝对好绝对不好的,都各自都各自的优势和劣势;

C++是一种非常灵活的语言,具有撰写高性能代码的能力,几乎覆盖了我们能够想到的所有的领域,包括航空航天、半导体和设备驱动等等;

而C++除了性能优势,也非常的稳定,20年前的代码现在依然可以使用。

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券