【C++】C++学习前言

C++前言与发展

  • 一.什么是C++
    • 二.C++的发展史
      • 三.C++的重要性

一.什么是C++

在这里插入图片描述

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

1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。

二.C++的发展史

1979年,贝尔实验室的本贾尼等人试图分析unix内核的时候,试图将内核模块化,于是在C语言的基础上进行扩展,增加了类的机制,完成了一个可以运行的预处理程序,称之为C with classes。语言的发展就像是练功打怪升级一样,也是逐步递进,由浅入深的过程。我们先来看下C++的历史版本。
在这里插入图片描述

C++还在不断的向后发展。但是:现在公司主流使用还是C++98和C++11,所有大家不用追求最新,重点将C++98和C++11掌握好,等工作后,随着对C++理解不断加深,有时间可以去琢磨下更新的特性。

三.C++的重要性

先来了解各种语言使用的广泛性:
在这里插入图片描述
我们可以发现在30多年的发展中,C/C++几乎一致稳居前5。所以C/C++的发展前景依旧非常的好,那么学好C++就是我们的重中之重了。那么C++我们可以用来做些什么工作呢?接下来我们要介绍的就是它的工作领域。

A. 操作系统以及大型系统软件开发

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

B.服务器端开发

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

C.游戏开发

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

D.嵌入式和物联网领域

嵌入式:就是把具有计算能力的主控板嵌入到机器装置或者电子装置的内部,能够控制这些装置。比如:智能手环、摄像头、扫地机器人、智能音响等。谈到嵌入式开发,大家最能想到的就是单片机开发(即在8位、16位或者32位单片机产品或者裸机上进行的开发),嵌入式开发除了单片机开发以外,还包含在soc上、系统层面、驱动层面以及应用、中间件层面的开发。常见的岗位有:嵌入式开发工程师、驱动开发工程师、系统开发工程师、Linux开发工程师、固件开发工程师等。

E.数字图像处理

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

F.人工智能

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

G. 分布式应用

近年来移动互联网的兴起,各应用数据量业务量不断攀升;后端架构要不断提高性能和并发能力才能应对大信息时代的来临。在分布式领域,好些分布式框架、文件系统、中间组件等都是C++开发的。对分布式计算影响极大的Hadoop生态的几个重量级组件:HDFS、zookeeper、HBase等,也都是基于Google用C++实现的GFS、Chubby、BigTable。包括分布式计算框架MapReduce也是Google先用C++实现了一套,之后才有开源的java版本。

最后祝愿小伙伴们能够好好的去学习C++,C++的生命力绝对是我们难以估量的,C++的能量也绝对是难以掌握的,但是一旦掌握了,我相信一定会获益无穷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

猫生骨肉冻干价格合理区间是多少?真正性价比高的生骨肉冻干推荐

随着养猫知识的普及,生骨肉冻干喂养受到越来越多铲屎官的欢迎。然而,价格因素仍是部分铲屎官的阻碍。实际上,像我这样的资深铲屎官,早已认识到生骨肉冻干的价值。虽然生骨肉冻干的价格相对于烘焙粮和膨化粮要高一些,但…

前端之用HTML做一个汇款单

例子 代码 里面注释是我我对运用到的知识的理解 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>工商银行电子汇款单</title> </head> <body><h3>工商银行电子汇款单</…

面试题02.07.链表相交

方法一&#xff1a;暴力 public ListNode getIntersectionNode(ListNode headA, ListNode headB) {//先获得链表长度ListNode l1 headA;ListNode l2 headB;int m 0, n 0;while(l1 ! null){m;l1 l1.next;}while(l2 ! null){n;l2 l2.next;}ListNode l3 headA;for(int i …

什么是Redis的数据分片?

Redis的数据分片(sharding)是一种将一个Redis数据集分割成多个部分&#xff0c;分别存诸在不同的Redis节点上的技术。它可以用于将一个单独的Redis数据库扩展到多个物理机器上&#xff0c;从而提高Redis集群的性能和可扩展性 Redis数据分片的实现方式通常是将数据按照某种规则(…

独家直播!手机无人APP,让你跟上最新潮流

手机无人APP&#xff0c;是一款极具创新力和前瞻性的应用&#xff0c;旨在让用户随时随地跟上最新潮流。通过独家直播功能&#xff0c;用户可以第一时间了解世界各地的潮流资讯&#xff0c;与时俱进&#xff0c;展现出自己的个性和风采。 无人APP的直播功能实现了信息的即时传…

工业涂装行业的物联网解决方案

工业涂装行业的物联网解决方案 工业涂装行业在制造业中占据重要地位&#xff0c;其产品质量直接影响到最终产品的外观和性能。然而&#xff0c;传统涂装生产线容易出现质量问题&#xff0c;如色差、光泽度不均、橘皮现象等。为了解决这些问题&#xff0c;工业涂装行业需要寻求…

String 底层为什么使用 final 修饰?

1、典型回答 对于这个问题&#xff0c;Java之父詹姆斯 高斯林&#xff08;James Gosling&#xff09; 是这样回答的&#xff1a; I would use an immutable whenever I can 翻译为中文&#xff1a;只要允许&#xff0c;我就会使用不可变对象 而作为普通人的我们来说&#xff0…

算法---双指针练习-8(四数之和)

四数之和 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;四数之和 2. 讲解算法原理 首先对输入的数组进行排序&#xff0c;以便后续使用双指针法。初始化一个空的二维向量 ret&#xff0c;用于存储结果。对数组中的每个元素 nums[i] 进行遍历&#…

mysql主键和外键的区别

mysql主键和外键的区别 一、主键与外键存在的意义 主键和外键在关系数据库中扮演着至关重要的角色&#xff0c;它们共同维护着数据的完整性和一致性。 主键&#xff1a;它是每条记录的唯一标识符&#xff0c;犹如人的身份证号码&#xff0c;具有唯一性和非空性。例如&#x…

Linux基础命令[15]-less

文章目录 1. less 命令说明2. less 命令语法3. less 命令示例3.1 不加参数3.2 -N&#xff08;显示行号&#xff09;3.3 打开多个文件3.4 标记导航3.5 搜索内容 4. 总结 1. less 命令说明 less&#xff1a;用来分页查看文件&#xff0c;与 more 相比更加的灵活&#xff0c;并且…

算法之二分查找算法

二分查找算法简介 1. 首先说明二分查找算法是比较恶心, 细节很多, 很容易写出死循环的算法, 但熟悉了之后是最简单的算法. 2. 其次我们可能听说过二分查找的前提是数组有序的前提下进行, 但其实不一定. 3. 二分查找算法有一套模板: 朴素的二分模板: 比较简单, 但是有局限性查找…

docker——启动各种服务

1.Mysql 2.Redis 3.nginx 4.ES 注意&#xff1a;ES7之后环境为 -e ELASTICSEARCH_HOSTS http://ip地址:9200

【libwebrtc】基于m114的构建

libwebrtc A C++ wrapper for binary release, mainly used for flutter-webrtc desktop (windows, linux, embedded).是 基于m114版本的webrtc 最新(20240309 ) 的是m122了。官方给出的构建过程 .gclient 文件 solutions = [{"name" : src,"url

用信号的方式回收僵尸进程

当子进程退出后&#xff0c;会给父进程发送一个17号SIGCHLD信号&#xff0c;父进程接收到17号信号后&#xff0c;进入信号处理函数调用waitpid函数回收僵尸进程若多个子进程同时退出后&#xff0c;这是切回到父进程&#xff0c;此时父进程只会处理一个17号信号&#xff0c;其他…

植物病害识别:YOLO水稻病害识别/分类数据集(2000多张,2个类别,yolo标注)

YOLO水稻病害识别/分类数据集&#xff0c;包含疾病和正常2类&#xff0c;共2000多张图像&#xff0c;yolo标注完整&#xff0c;可直接训练。 适用于CV项目&#xff0c;毕设&#xff0c;科研&#xff0c;实验等 需要此数据集或其他任何数据集请私信

解决input事件监听拼音输入法导致高频事件

1、业务场景 在文本框中输入内容&#xff0c;执行查询接口&#xff0c;但遇到一个问题&#xff0c;当用拼音打字写汉字去搜索的时候&#xff0c;会输入一些字母拼成汉字&#xff0c;怎么能监听等拼音文字输入完成后再触发文本框监听事件 2、解决方案 通过查阅资料得知在输入中…

算法学习11:树与图的 DFS、BFS

算法学习11&#xff1a;树与图的 DFS、BFS 文章目录 算法学习11&#xff1a;树与图的 DFS、BFS前言一、树与图的深度优先遍历1.例题&#xff1a;树的重心&#xff1a; 二、树与图的宽度优先遍历1.例题&#xff1a;图中点的层次&#xff1a; 三、拓扑排序&#xff1a;&#xff0…

vue.js 页面中设置多个swiper

效果&#xff1a; 设置主要设置了 动态的 包含类、 左右按钮的类 <template><div class"swiper-container_other"><!-- 右侧按钮 --><div :class"[(id)?swiper-button-nextid:swiper-button-next, swiper-button-next]"></div…

浅易理解:卷积神经网络(CNN)

浅易理解卷积神经网络流程 本文的目录&#xff1a; 1 什么卷积神经网络 2 输入层 3 卷积层 4 池化层 5 全连接层 1 什么是卷积神经网络 1.1卷积神经网络&#xff08;Convolutional Neural Networks, CNN&#xff09; 是一种前馈神经网络&#xff0c;它的人工神经元可以响应一…

golang中new和make的区别

1. 先看一个例子 package mainimport "fmt"func main() {var a *int*a 10fmt.Println(*a) }运行结果是啥呢&#xff1f; 问&#xff1a;为什么会报这个panic呢&#xff1f; 答&#xff1a;因为如果是一个引用类型&#xff0c;我们不仅要声明它&#xff0c;还要为…