程序员入门教程:学C/C++不能不知道的硬知识

摘要

本文不是为C/C++站台,宣传其为全宇宙最好的语言,而以近二十年的从业经验来分析C/C++的优劣势,提出指导性建议。

4月份发布的全球编程语言排行榜

Java高居榜首,C屈居第二,C++紧随其后,C和C++的比例之和,超过Java5%,python借人工智能和DevOps的东风,扶摇直上,新秀GO语言,投胎技术好,有个好爹,依托容器技术和K8S,迅速走红。

这些是C/C++能做的

1. 服务器开发工程师

2. 人工智能

3. 云计算工程师

4. 信息安全(黑客反黑客)

5. 大数据

6. 数据平台

7. 嵌入式工程师

8. 流媒体服务器

9. 数据控解

10. 图像处理

11. 音频视频开发工程师

12. 游戏服务器

13. 分布式系统

14. 游戏辅助

C语言以过程式编程,比汇编更贴近人类思考方式,而迅速兴起,在性能上贴近于机器语言

在开发效率和执行性能上做了一个平衡

在系统控制上,给开发人员更多的自由,这是他的优点,也是缺点。对于资深人员来说,有很大的发挥空间,但对于新手来说,就是踩不完的坑,学习成本极高,稍不小心就是内存泄漏,死锁

因此,C语言主要应用场景在操作系统,如Linux;底层组件,如ceph;这些标准化程度高,性能要求苛刻的场景

C++在C基础上,引入对象模型,将数据和方法有机的绑定在一起,比C语言更一步贴近人类思维模式

引入模板编程,替换C中宏这样的语法糖

早期C编写的程序中,内联函数和宏满天飞,现在变成模板满天飞,在执行效率上不相上下,但在调试期,倒引入不少麻烦,实际上违反了接口和实现分离的原则

C++在开发效率上要高于C,执行效率上略逊于C,因此在开发周期要求比较严格,性能要求高的场景,有他的发挥空间,比如游戏的端游,比如行情软件

在客户端,有C#和C++竞争,在服务端,有JAVA、python、go与C++竞争,所以C++的市场份额就比较尴尬

C/C++由于底层绑定比较紧,所以在跨平台这块存在很高的难度,特别是大规模的软件系统,要考虑的可能性更多

在boost逐渐发展壮大后,这些情况会逐渐好转。boost为了跨平台,不得不牺牲一些平台特性,在性能上也会有一定损失,因此在一些应用场景中,还会存在定制自己API库的场景存在,相较于之前没有boost时代,依然要好很多

C/C++因为其自由度高,百花齐放,即使是同一个功能,也能整出个N多花样,开发人员需要在选择困难症中,痛并快乐着。这些状况,会随着标准化程度不断提高,而减少,但永远不会消失

原文发布于微信公众号 - IT大咖说(itdakashuo)

原文发表时间:2019-03-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券