【C++初阶】前言——C++的发展简述及学习方法分享

这篇具有很好参考价值的文章主要介绍了【C++初阶】前言——C++的发展简述及学习方法分享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 =========================================================================

主页点击直达:个人主页

我的小仓库:代码仓库

C语言偷着笑:C语言专栏

数据结构挨打小记:初阶数据结构专栏

Linux被操作记:Linux专栏

LeetCode刷题掉发记:LeetCode刷题

算法:算法专栏 

C++头疼记:C++专栏

=========================================================================

目录

前言

什么是C++

C++语言和C语言的关系

C++发展史

每个阶段的版本内容

C++的重要性

语言的使用广泛度

在工作领域

在校招领域

如何学习C++

别人怎么学

自己怎么学习

多总结——写博客

思维导图

常看书

勤刷题



前言

之前我们一直分享C语言和使用C语言完成数据结构的初阶的文章,今天我们正式进入C++的学习,这篇文章主要是给大家带来的是C++由来以及和C语言的区别、更主要的是和大家分享自己的学习方法,给一些我的建议


什么是C++

 【C++初阶】前言——C++的发展简述及学习方法分享,C++头疼记,java,linux,开发语言

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

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


C++语言和C语言的关系

C++是在C语言的基础之上的,C++是兼容C语言的、用来弥补C语言的不足、容纳进去了面向对象的编程思想、并增加了许多有用的库,以及编程范式。


C++发展史

1979年,贝尔实验室的本贾尼等人试图分析unix内核的时候,试图将内核模块化,于是在C
语言的基础上进行扩展,增加了类的机制,完成了一个可以运行的预处理程序,称之为C with
classes。 

语言的发展就像是练功打怪升级一样,也是逐步递进,由浅入深的过程。我们先来看下C++的历
史版本。

每个阶段的版本内容

C with classes
类及派生类、公有和私有成员、类的构造和析构、友元、内联函数、赋值运算符
重载等

C++1.0
添加虚函数概念,函数和运算符重载,引用、常量等
C++2.0
更加完善支持面向对象,新增保护成员、多重继承、对象的初始化、抽象类、静
态成员以及const成员函数
C++3.0
进一步完善,引入模板,解决多重继承产生的二义性问题和相应构造和析构的处

C++98
C++标准第一个版本,绝大多数编译器都支持,得到了国际标准化组织(ISO)和美
国标准化协会认可,以模板方式重写C++标准库,引入了STL(标准模板库)
C++03

C++标准第二个版本,语言特性无大改变,主要:修订错误、减少多异性
C++05
C++标准委员会发布了一份计数报告(Technical Report,TR1),正式更名C++0x,即:计划在本世纪第一个10年的某个时间发布
C++11
增加了许多特性,使得C++更像一种新语言,比如:正则表达式、基于范围for循
环、auto关键字、新容器、列表初始化、标准线程库等
C++14
对C++11的扩展,主要是修复C++11中漏洞以及改进,比如:泛型的lambda表
达式,auto的返回值类型推导,二进制字面常量等
C++17
在C++11上做了一些小幅改进,增加了19个新特性,比如:static_assert()的文
本信息可选,Fold表达式用于可变的模板,if和switch语句中的初始化器等
C++20
自C++11以来最大的发行版,引入了许多新的特性,比如:模块(Modules)、协
程(Coroutines)、范围(Ranges)、概念(Constraints)等重大特性,还有对已有
特性的更新:比如Lambda支持模板、范围for支持初始化等

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


C++的重要性

语言的使用广泛度

下图数据来自TIOBE全球编程语言社区2023年9月最新的排行榜。不仅实在今年九月,在30多年的发展中C/C++几乎一直稳居前5.

【C++初阶】前言——C++的发展简述及学习方法分享,C++头疼记,java,linux,开发语言

 【C++初阶】前言——C++的发展简述及学习方法分享,C++头疼记,java,linux,开发语言

TIOBE 编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互
联网上有经验的程序员、 课程和第三方厂商的数量。排名使用著名的搜索引擎(诸如 Google、
MSN、Yahoo!、Wikipedia、YouTube 以及 Baidu 等)进行计算。
注意:排名不能说明那个语言好,那个不好,每门编程语言都有适应自己的应用场景。 


在工作领域

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++写的。
7. 分布式应用
近年来移动互联网的兴起,各应用数据量业务量不断攀升;后端架构要不断提高性能和并发
能力才能应对大信息时代的来临。在分布式领域,好些分布式框架、文件系统、中间组件等
都是C++开发的。对分布式计算影响极大的Hadoop生态的几个重量级组件:HDFS、
zookeeper、HBase等,也都是基于Google用C++实现的GFS、Chubby、BigTable。包括分
布式计算框架MapReduce也是Google先用C++实现了一套,之后才有开源的java版本。
除了上述领域外,在:科学计算、浏览器、流媒体开发、网络软件等都是C++比较适合的场景,
作为一名老牌语言的常青树,C++一直霸占编程语言前5名,肯定有其存在的价值。


在校招领域

2024字节跳动校园招聘

【C++初阶】前言——C++的发展简述及学习方法分享,C++头疼记,java,linux,开发语言

2024腾讯校园招聘

【C++初阶】前言——C++的发展简述及学习方法分享,C++头疼记,java,linux,开发语言

2024阿里巴巴校园招聘

【C++初阶】前言——C++的发展简述及学习方法分享,C++头疼记,java,linux,开发语言 2024深信服招聘

【C++初阶】前言——C++的发展简述及学习方法分享,C++头疼记,java,linux,开发语言


如何学习C++

学习C语言需要多多练习,学习数据结构要多多画图思考,那学习C++呢?

别人怎么学

以下引用自2010年8月号《程序员》刊登的拙文《C++强大背后》最后一段:
C++缺点之一,是相对许多语言复杂,而且难学难精。许多人说学习C语言只需一本K&R《C程序
设计语言》即可,但C++书籍却是多不胜数。我是从C进入C++,皆是靠阅读自学。在此分享一点
学习心得。个人认为,学习C++可分为4个层次:
第一个层次,C++基础 (平平常常)
挑选一本入门书籍,如《C++ Primer》、《C++大学教程》或Stroustrup撰写的经典
《C++程序设计语言》或他一年半前的新作《C++程序设计原理与实践》,而一般C++课程也
止于此,另外《C++ 标准程序库》及《The C++ Standard Library Extensions》可供参
考;
第二个层次,正确高效的使用C++ (驾轻就熟)
此层次开始必须自修,阅读过《(More)Effective C++》、《(More)Exceptional C++》、
《Effective STL》及《C++编程规范》等,才适宜踏入专业C++开发之路;
第三个层次,深入解读C++ (出神入化)
关于全局问题可读《深入探索C++对象模型》、《Imperfect C++》、《C++沉思录》、
《STL源码剖析》,要挑战智商,可看关于模版及模版元编程的书籍如《C++
Templates》、《C++设计新思维》、《C++模版元编程》;
第四个层次,研究C++ (返璞归真)
阅读《C++语言的设计和演化》、《编程的本质》(含STL设计背后的数学根基)、C++标准文
件《ISO/IEC 14882:2003》、C++标准委员会的提案书和报告书、关于C++的学术文献。由
于我主要是应用C++,大约只停留于第二、三个层次。然而,C++只是软件开发的一环而
已,单凭语言并不能应付业务和工程上的问题。建议读者不要强求几年内“彻底学会C++的知
识”,到达第二层左右便从工作实战中汲取经验,有兴趣才慢慢继续学习更高层次的知识。
虽然学习C++有难度,但也是相当有趣且有满足感的。 


自己怎么学习

多总结——写博客

都说好记性不如烂笔头,固定的将自己的学习笔记和内容分享在CSDN,不仅在写博客的过程中让自己深入思考自己所学习的内容,也为自己后面的复习提供便利之处,更能和CSDN上面的大牛交流。学习C++一定要做笔记,不像我们之前学习C语言很多人虽然只听课不做笔记,也觉得自己学的很好,但是C++语法特性繁琐复杂,光听课是很难深入理解的。

思维导图

现在是信息流的社会,碎片化信息越来越多,思维导图能够很好的将碎片化的信息整合起来。思维导图都已经成为构建思路、了解知识、梳理框架、要点总结的必备软件。运用思维导图能够让你思路更加清晰。

常看书

我们现在只处于看见C++大门的阶段,还算不上入门。合理的看书按排,不要心存贪念,更不要走火入魔。

初窥门径

入门阶段,找一本简单、薄一点的书快速入门,《C++程序设计》就挺适合的,可以简
单快速了解C++的语法特性。

潜心修行

【C++初阶】前言——C++的发展简述及学习方法分享,C++头疼记,java,linux,开发语言

【C++初阶】前言——C++的发展简述及学习方法分享,C++头疼记,java,linux,开发语言

当C++学习过半之后,大概继承和多态学完,建议看下《Effective C++》,该书以建议
的方式告诉你如何写出更好的C++程序,看和不看差别非常大。C++课程系统学完后,有时间可以看下《C++编程思想》对讲过的知识点融会贯通,该本书有一定深度,从原理方面对C++语法进行介绍。《C++ Prime》可以当成工具书对待,有不清楚的语法特性可以快速去查,建议工作之
后可以利用闲暇时间慢慢品味下。

深入浅出

【C++初阶】前言——C++的发展简述及学习方法分享,C++头疼记,java,linux,开发语言

【C++初阶】前言——C++的发展简述及学习方法分享,C++头疼记,java,linux,开发语言

这两本书都有一定难度,如果基础知识掌握不扎实,不建议看,强烈建议好好把基础知
识打扎实。
《STL源码剖析》将六大组件逐一剖析,看完之后对STL的设计框架以及内部实现原理
有更深的认识,面试时可以游刃有余和面试官交锋。
《深度探索C++对象模型》会让你对C++语法设计原理有更深层次的认识,有些疑惑的
知识点看完之后里面就清晰了。

勤刷题

刷题可以让我们更快、更深入的理解知识点,锻炼我们的编程思维,更何况在以后的校招中也是通过做题来筛选的。

牛客网

LeetCode

洛谷


我们既然已经选择C++方向,肯定是以后要靠这门语言支撑我们找工作的,把这门语言作为我们的长期目标,都说万事开头难任何东西都是从简到繁的,就像我们开始学习C语言的时候也是什么都不懂,搭个框架printf、scanf。随着学习的深入,我们也是慢慢成长起来。文章来源地址https://www.toymoban.com/news/detail-714513.html

到了这里,关于【C++初阶】前言——C++的发展简述及学习方法分享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [office] Excel中函数进行计算两个日期参数差值的方法 #职场发展#学习方法#媒体

    Excel中函数进行计算两个日期参数差值的方法 在excel使用中,如果想计算两个日期参数的差值,该用什么函数和如何使用呢?今天,小编就教大家在Excel中函数进行计算两个日期参数差值的方法。 Excel中函数进行计算两个日期参数差值的步骤 在excel中计算两个日期参数的差值,

    2024年02月20日
    浏览(41)
  • 大神们分享STM32的学习方法

        单片机用处这么广,尤其是STM32生态这么火!如何快速上手学习呢?     为什么使用STM32而不是8051? 是因为51的频率太低,无法满足计算需求?是51的管脚太少,无法满足众多外设的IO? 是51的功耗太大,电池挺不住?是51的功能太弱,而你要使用SPI、I2C、ADC、DMA? 是51的内存

    2024年02月01日
    浏览(61)
  • [经验] wps怎么设置行间距离28磅 #学习方法#知识分享#媒体

    wps怎么设置行间距离28磅 1、Wps怎么设置行间距 WPS是一款广受欢迎的办公软件,可以实现文字处理、演示文稿、电子表格等多种功能。在使用WPS时,经常会涉及到设置文字的行间距的情况,这有助于让文章更加清晰易读,有效提高排版效果。下面就让我们一起来了解一下WPS怎

    2024年02月21日
    浏览(45)
  • [word] 如何将word文本转换成表格? #知识分享#学习方法#媒体

    如何将word文本转换成表格? 如何将word文本转换成表格? 不管是Word入门新手还是老手,相信这个技巧会让你更加熟练Word,操作起来得心应手! 1.文本转换成表格 同样的要怎么把一堆凌乱的数据转换成表格呢?这里我们选中数据后,点击【插入】-【表格】-【文本转换成表格

    2024年02月21日
    浏览(30)
  • [word] word定时自动保存功能的作用是什么 #知识分享#学习方法#媒体

    word定时自动保存功能的作用是什么 word定时自动保存功能的作用是什么 这是word提供的一个保护用户文档的功能,一般情况下是为了预防在未知原因的情况下,用户电脑关闭,或者不小关掉Word,导致正在使用的文档丢失,给用户造成不必要的损失。 主要是针对使用Word频率高

    2024年02月21日
    浏览(29)
  • 深度学习论文解读分享之diffGrad:一种卷积神经网络优化方法

    diffGrad: An Optimization Method for Convolutional Neural Networks Shiv Ram Dubey , Member, IEEE, Soumendu Chakraborty , Swalpa Kumar Roy , Student Member, IEEE, Snehasis Mukherjee, Member, IEEE, Satish Kumar Singh, Senior Member, IEEE, and Bidyut Baran Chaudhuri, Life Fellow, IEEE Adaptive moment estimation (Adam), difference of gradient, gradient descent,

    2024年01月17日
    浏览(41)
  • 前人踩过的雷,绕过的弯,何必重蹈,前端学习路径方法分享题

    在上篇文章中,我和你简单回顾了前端行业的发展,到现在为止,前端工程师已经成为研发体系中的重要岗位之一。可是,与此相对的是,我发现极少或者几乎没有大学的计算机专业愿意开设前端课程,更没有系统性的教学方案出现。大部分前端工程师的知识,其实都是来自

    2024年02月08日
    浏览(60)
  • 自媒体人的日常ai写作神器:9款超级实用的工具分享! #人工智能#媒体#学习方法

    我们做自媒体运营,想要快速的创作内容,提供文章的创作速度是我们的目标,我们别的大佬可以很快地就创作出一篇内容,而自己墨迹半天确出不了一个字呢?其实这关乎到创作技巧,下面小编就跟大家分享如何利用自媒体工具辅助自己创作的技巧。 1.七燕写作 这是一个微

    2024年04月22日
    浏览(40)
  • 大学建筑专业的搜题软件?大学搜题工具中的高级搜索功能有哪些? #学习方法#微信#经验分享

    学习和考试是大学生生活中不可避免的一部分,而在这个信息爆炸的时代,如何快速有效地获取学习资源和解答问题成为了大学生们共同面临的难题。为了解决这个问题,搜题和学习软件应运而生。今天,我将为大家介绍几款备受大学生青睐的搜题和学习软件,让我们一起来

    2024年02月20日
    浏览(30)
  • 程序员自学编程的一些误区,你中招了没?自学编程到底为什么重要?给你分享我的5个高效学习方法

    今天又来分享干货了 今天讲一下 就是之前朋友们提的一个问题 就是如何来自学编程 我今天来讲一些 自学编程的话其实最重要的是什么 其实就是一个驱动力 也就是你学习他的目标是什么 很多人没想明白这点就开始去跟着学 最终学的比较痛苦又没有结果 我在高中的时候家里

    2023年04月21日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包