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

为什么C+语法这么复杂?C+难学的点究竟在哪些地方?

C++他爹Bjarne Stroustrup都曾开玩笑说自己已经搞不懂C++了,他也曾多次表达过C++似乎已经有点太庞大了。其实也不是说C++语法多么复杂,而是C++本身复杂,C++既想把C的事情干了,又想掺和掺和Java的事情,这语言能不复杂吗?

C++是在特定时期为了解决众多复杂场景而诞生的一门编程语言,为了符合时代不得不做妥协,又为了适应未来引入了很多新的理念,最终C++才会这么复杂。今天就着重带大家分析一下C++这门编程语言,到底为什么这么难学。

Google C++ Style

C++支持多种范式、这是C++难学的根本

大约是41载之前,一位刚刚拿到博士学位的研究员,为了更好的适应当时的需求,考虑到C语言不支持面向对象编程等多种问题,这位研究员就在C语言的基础上设计了一门新的编程语言,他把这门编程语言命名为C with classes,几年之后正式自立门户改成了C++这个更加好听的名字。

C++支持多种编程范式,面向过程、面向对象、泛型编程,事实上为泛型设计的模板早就证明C++是图灵完备的,C++也支持了模版元编程范式。C++继承了C语言,又支持了面向对象等编程理念。能够做低级语言能做的硬件编程、系统编程,同时又具备高级语言的特点,作为应用开发语言。

C++之父

C++的GC一言难尽、C++类型极其复杂

C++当然可以实现GC,但是说实话真的是太难受了,学过C++的也都知道,我不能用一门编程语言的时候,自己疯狂去造轮子吧,这也就太难受了一点。我记得好多年前我看到一个帖子,就是说这个问题的,有的人说C和C++没有GC的问题,还说什么操作系统GC凭什么不是GC?有的人评论得就很贴切,操作系统那叫收尸,事实上就是这么残忍。

C++的类型复杂很多也确实是历史遗留问题,比如C++的类型全都是值类型。C++17的标准都来了,可以说是最不安分的编程语言之一了。编程语言界Python2和Python3本质上可以算是两门完全不同的编程语言,这属于变动比较大的了,不过值得庆幸地是,现在有个比C++更狠的,这个编程语言就是Rust,Rust的健硕性那更是一言难尽。

C++17

C++类型丰富是为了提高性能,方便不同的开发者在不同的场景下使用不同的数据类型,这样能够提高效率节省内存,当然这也确实给开发者增加了很多负担。在C++中一切都是类型,地址、函数、对象、表达式、对象、事件全都是类型,类型还是类型,有的人确实不太习惯。

可是话又说回来,单单说语法的话,Python确实极其简单、Java极其臃肿,考虑到这点我建议大家直接学Go语言,你看Go语言性能也好、语法也比较简单、还能处理好大并发、还有着出色的商业实践,何乐而不选呢?

学习编程语言不能一蹴而就,我现在还建议每一个初学者,一定要学学C语言、尽可能了解一点函数式编程,当然能学学C++自然是最好的。Python作为一门语法相当简单的编程语言,作为入门是非常好的,最终你进入这个行业,使用Java、C#、PHP、Go其实都无所谓,关键是你自己更喜欢和适合哪一个。

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券