【C++篇】迈入新世界的大门——初识C++(上篇)

2024-10-09 19:20:41 浏览数 (5)

前言

下篇已出:【C 篇】迈入新世界的大门——初识C (下篇)

C 发展历史

C 起源

C 的起源可以追溯到1979年,当时**Bjarne Stroustrup(本贾尼·斯特劳斯特卢普)**在⻉尔实验室从事计算机科学和软件⼯程的研究⼯作。⾯对项⽬中复杂的软件开发任务,特别是模拟和操作系统的开发⼯作,他感受到了现有语⾔(如C语⾔)在表达能⼒、可维护性和可扩展性⽅⾯的不⾜。

1983年,Bjarne Stroustrup在C语⾔的基础上添加了⾯向对象编程的特性,设计出了C 语⾔的雏形,此时的C 已经有了类、封装、继承等核⼼概念,为后来的⾯向对象编程奠定了基础。这⼀年该语⾔被正式命名为C 。

在随后的⼏年中,C 在学术界和⼯业界的应⽤逐渐增多。⼀些⼤学和研究所开始将C 作为教学和研究的⾸选语⾔,⽽⼀些公司也开始在产品开发中尝试使⽤C 。这⼀时期,C 的标准库和模板等特性也得到了进⼀步的完善和发展。

C 的标准化⼯作于1989年开始,并成⽴了⼀个ANSI和ISO(International Standards Organization)国际标准化组织的联合标准化委员会。1994年标准化委员会提出了第⼀个标准化草案。在该草案中,委员会在保持斯特劳斯特卢普最初定义的所有特征的同时,还增加了部分新特征。

在完成C 标准化的第⼀个草案后不久,STL(Standard Template Library)是惠普实验室开发的⼀系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室⼯作时所开发出来的。在通过了标准化第⼀个草案之后,联合标准化委员会投票并通过了将STL包含到C 标准中的提议。STL对C 的扩展超出C 的最初定义范围。虽然在标准中增加STL是个很重要的决定,但也因此延缓了C 标准化的进程。

1997年11⽉14⽇,联合标准化委员会通过了该标准的最终草案。1998年,C 的ANSI/IS0标准被投⼊使⽤。

祖师爷


C 版本更新

C 23小故事

C ⼀直被诟病的⼀个地⽅就是⼀直没出⽹络库(networking),networking之前是在C 23的计划中的,现在C 23已经发布了,但是没有networking,⽹上引发了⼀系列的吃⽠和吐槽。中间过程就像发⽣了宫⽃剧⼀样。

P2452R0: 2021 October Library Evolution and Concurrency Networking and Executors Poll Outcomes (open-std.org)

C 23的目标


C 在工作领域的应用

C 的应⽤领域服务器端、游戏(引擎)、机器学习引擎、⾳视频处理、嵌⼊式软件、电信设备、⾦融 应⽤、基础库、操作系统、编译器、基础架构、基础⼯具、硬件交互等很多⽅⾯都有。

  1. ⼤型系统软件开发。如编译器、数据库、操作系统、浏览器等等
  2. ⾳视频处理。常⻅的⾳视频开源库和⽅案有FFmpeg、WebRTC、Mediasoup、ijkplayer,⾳视频开发最主要的技术栈就是C 。
  3. PC客⼾端开发。⼀般是开发Windows上的桌⾯软件,⽐如WPS之类的,技术栈的话⼀般是C 和 QT,QT是⼀个跨平台的C 图形⽤⼾界⾯(Graphical User Interface,GUI)程序。
  4. 服务端开发。各种⼤型应⽤⽹络连接的⾼并发后台服务。这块Java也⽐较多,C 主要⽤于⼀些对 性能要求⽐较⾼的地⽅。如:游戏服务、流媒体服务、量化⾼频交易服务等
  5. 游戏引擎开发。很多游戏引擎就都是使⽤C 开发的,游戏开发要掌握C 基础和数据结构,学习 图形学知识,掌握游戏引擎和框架,了解引擎实现,引擎源代码可以学习UE4、Cocos2d-x等开源 引擎实现
  6. 嵌⼊式开发。嵌⼊式把具有计算能⼒的主控板嵌⼊到机器装置或者电⼦装置的内部,通过软件能够 控制这些装置。⽐如:智能⼿环、摄像头、扫地机器⼈、智能⾳响、⻔禁系统、⻋载系统等等,粗略⼀点,嵌⼊式开发主要分为嵌⼊式应⽤和嵌⼊式驱动开发。
  7. 机器学习引擎。机器学习底层的很多算法都是⽤C 实现的,上层⽤python封装起来。如果你只想准备数据训练模型,那么学会Python基本上就够了,如果你想做机器学习系统的开发,那么需要学会C 。
  8. 测试开发/测试。每个公司研发团队,有研发就有测试,**测试主要分为测试开发和功能测试,**测试开发⼀般是使⽤⼀些测试⼯具(selenium、Jmeter等),设计测试⽤例,然后写⼀些脚本进⾏⾃动化测试,性能测试等,有些还需要⾃⾏开发⼀些测试⽤具。功能测试主要是根据产品的功能,设计测试⽤例,然后⼿动的⽅式进⾏测试。

C 参考网站及文档书籍

编程语言排行榜

TIOBE排⾏榜是根据互联⽹上有经验的程序员、课程和第三⽅⼚商的数量,并使⽤搜索引擎(如 Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube和Baidu(百度)统计出排名数据,只是反映某个编程语⾔的热⻔程度,并不能说明⼀⻔编程语⾔好不好,或者⼀⻔语⾔所编写的代码数多少。

TIOBE

2024年8月排行榜

可以发现C/C 占比很高

1 人点赞