• 初识C++


    什么是C++?

            C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言并不适合用来编写,为了解决软件危机,在20世纪80年代,计算机界提出了OOP(object oriented programming:面向对象)思想,于是支持面向对象的程序设计语言应运而生。

            1982年,Bjarne 博士在C语言的基础上引入并扩充了面向对象的概念,发明了一 种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而 产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的 程序设计,还可以进行面向对象的程序设计。也就是说C++是在C语言的基础上进行了大量的扩展,例如:增加了类的机制,完成了一个可以运行的预处理程序,称之为C with classes。语言的发展就像是练功打怪升级一样,也是逐步递进,由浅入深的过程。

    C++语言的发展例程

           如上图,这是各类编程语言在近些年中使用的热门程度。在这30多年的编程语言发展史中,C++一直排在前列经久不衰,排名不能说明哪个语言就更好,哪个就很差,其实每门编程语言都有适应自己的应用场景。

    C++的应用领域

    其实C++是偏向于底层开发用的,所以它的应用领域大多用在以下几种方面:

    1. 操作系统以及大型系统软件开发 所有操作系统几乎都是C/C++写的,许多大型软件背后几乎都是C++写的,比如: Photoshop、Office、JVM(Java虚拟机)等,究其原因还是性能高,可以直接操控硬件。

    2. 服务器端开发 后台开发:主要侧重于业务逻辑的处理,即对于前端请求后端给出对应的响应,现在主流采 用java,但内卷化比较严重,大厂可能会有C++后台开发,主要做一些基础组件,中间件、 缓存、分布式存储等。服务器端开发比后台开发跟广泛,包含后台开发,一般对实时性要求 比较高的,比如游戏服务器、流媒体服务器、网络通讯等都采用C++开发的。

    3. 游戏开发 PC平台几乎所有的游戏都是C++写的,比如:魔兽世界、传奇、CS、跑跑卡丁车等,市面上 相当多的游戏引擎都是基于C++开发的,比如:Cocos2d、虚幻4、DirectX等。三维游戏领 域计算量非常庞大,底层的数学全都是矩阵变换,想要画面精美、内容丰富、游戏实时性 搞,这些高难度需求无疑只能选C++语言。比较知名厂商:腾讯、网易、完美世界、巨人网 络等。

    4.嵌入式和物联网领域 嵌入式:就是把具有计算能力的主控板嵌入到机器装置或者电子装置的内部,能够控制这些 装置。比如:智能手环、摄像头、扫地机器人、智能音响等。 谈到嵌入式开发,大家最能想到的就是单片机开发(即在8位、16位或者32位单片机产品或者 裸机上进行的开发),嵌入式开发除了单片机开发以外,还包含在soc片上、系统层面、驱动 层面以及应用、中间件层面的开发。 常见的岗位有:嵌入式开发工程师、驱动开发工程师、系统开发工程师、Linux开发工程 师、固件开发工程师等。 知名的一些厂商,比如:以华为、vivo、oppo、小米为代表的手机厂;以紫光展锐、乐鑫为 代表的芯片厂;以大疆、海康威视、大华、CVTE等具有自己终端业务厂商;以及海尔、海 信、格力等传统家电行业。 随着5G的普及,物联网(即万物互联,)也成为了一种新兴势力,比如:阿里lot、腾讯lot、京 东、百度、美团等都有硬件相关的事业部。

    5. 数字图像处理 数字图像处理中涉及到大量数学矩阵方面的运算,对CPU算力要求比较高,主要的图像处理 算法库和开源库等都是C/C++写的,比如:OpenCV、OpenGL等,大名鼎鼎的Photoshop 就是C++写的。

    6. 人工智能 一提到人工智能,大家首先想到的就是python,认为学习人工智能就要学习python,这个 是误区,python中库比较丰富,使用python可以快速搭建神经网络、填入参数导入数据就 可以开始训练模型了。但人工智能背后深度学习算法等核心还是用C++写的。

    总结:

            有人说C++很难学,转而去学Java,Python,这是因为C++偏向于底层的开发设计,也是C++缺点之一,是相对许多语言复杂,而且难学难精;而Java,Python等后起之秀很多人用是因为它们比C++偏应用层,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,在功能模块等方面的优化比C++更加齐全。但语言只是工具,它们是各有千秋。

            比起Java,学习C++更能帮助你理解计算机体系结构的语言,作为底层语言,C++可以高度自由地使用和分配内存,包括在使用C/C++语言解决问题的过程,都能更深入地理解计算机体系。

            最后给各个学习C++朋友的建议就是是,在C++语言部分的学习要一鼓作气学下来,一定要规划好时间,坚持下去,否则很容易泄气之后半途而废。好的 C++ 开发者从来不怕找不到工作,就是因为想要学好它不容易,换一种思路就是好好学好它,这对于你以后的裨益可能巨大的,即使你日后在公司被要求得用Java/Puthon等语言工作,也会很快很容易的就能上手,因为语言的原理都是相通的。

    加油吧~少年!

           

  • 相关阅读:
    OPT华东产业园封顶,机器视觉产业版图再扩大!
    BI业务分析思维:现金流量风控分析(三)风险控制
    第21章_瑞萨MCU零基础入门系列教程之事件链接控制器ELC
    matlab习题 —— 矩阵的常规运算
    Spring 04: IOC控制反转 + DI依赖注入
    Java 设置免登录请求接口被拦截问题
    SpringBean
    《opencv学习笔记》-- SURF 特征提取
    minio元数据实现单独存储
    应用安全迁移的五个步骤
  • 原文地址:https://blog.csdn.net/weixin_69283129/article/details/127724637