Cpp入门引言(0)


前言

哈!这是第一篇C++的有关内容,就来介绍一下C++的历史和一些我的看法吧
PS:Cpp == C plus plus == C++


一、什么是C++?

不如先来看看我们的祖师爷Bjarne Stroustrup吧!
在这里插入图片描述

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

什么是面向对象?为什么C语言不太行?没事,你先这样记着,之后会慢慢讲解

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

Cpp兼容C的 98% ~ 99% 的语法

二、C++的发展历程

  前文也说了C++是在C的基础上发展而来的,根源在于模块化的需求,具体来说,1972年的贝尔实验室,本贾尼等人试图分析unix内核的时候,试图将内核模块化,于是对C语言增加了类的机制,完成了一个可以运行的预处理程序,称之为C with classes

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

阶段内容
C with classes类及派生类、公有和私有成员、类的构造析构、友元、内联函数、赋值运算符重载等
C++1.0添加虚函数概念,函数和运算符重载,引用、常量等
C++2.0更加完善支持面向对象,新增保护成员、多重继承、对象的初始化、抽象类、静态成员以及const成员函数
C++3.0进一步完善,引入模板,解决多重继承产生的二义性问题和相应构造和析构的处理
C++98C++标准第一个版本,绝大多数编译器都支持,得到了国际标准化组织(ISO)和美国标准化协会认可,以模板方式重写C++标准库,引入了STL(标准模板库)
C++03C++标准第二个版本,语言特性无大改变,主要∶修订错误、减少多异性
C++05C++标准委员会发布了一份计数报告(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++23C++23是一个小版本更新,进一步完善和改进现有特性,增加了if consteval、数、falt_map、import std导入标准库等

在这里插入图片描述

三、C++的重要性

  我们总得知道学了C++能干什么,意义在哪里?

根据TIOBE信息数据显示,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开发工程师、固件开发
工程师等。

  除此以外,数字图像处理人工智能分布式应用都有C++的身影

四、一些C++的常见疑问

C++难不难?

 相信很多人都听说过C++是最难的一门语言,对此,比较客观的看法是什么呢?

答案是确实挺难的,说是最难之一完全不为过,它的缺点就是难学难精,一两年之内能正常使用就相当不错了

C++如何学?

 1.写博客,C++语法很复杂,像我这样记下博客,后期复习帮助很大,整理成体系
 2.常看书,切记贪,缓缓图之是一门智慧,不然可能会走火入魔

网络上很多人推荐《C++ Primer》,嗯~怎么说呢,《中国汉字词典》是一本好书,但是你学语文不会拿来翻的,同样,把它作为词典书,就是这个意思

3.勤刷题:
  力扣
  牛客网


总结

  第一篇总是轻松的,但是打起精神,C++,要来力!~
  其实,C++也是一门哲学,或者往大了说,编程境界高了也是一门艺术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值