1.什么是C++?
C语言是一种结构化、模块化的语言,适合处理小型程序。 C语言不适合复杂问题或需要高度抽象和建模的大型程序。为了解决软件危机,计算机行业在20世纪80年代倡导了OOP(object-orientprogramming:面向对象)的思想,出现了支持面向对象编程的编程语言。
1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩展了面向对象的概念,发明了一种新的编程语言。它被命名为C++,以表达其与C语言的渊源关系。因此,C++是在C语言的基础上实现的,可以实现C语言的过程式编程、以抽象数据类型为特征的基于对象的编程以及面向对象的编程。
2.C++发展史
1979年,Benjani和他在贝尔实验室的同事尝试分析Unix内核并寻求将其模块化,因此他们扩展了C语言基础,添加了类机制,并创建了可执行的预处理器。我们称之为带有类的C。
语言的发展类似于*武、打怪、升级,由浅入深分阶段进行。首先,让我们看一下C++ 的历史版本。
C++ 仍处于落后发展阶段。然而,没有必要追逐最新的,因为C++98 和C++11 仍然是当今公司的主要使用方式。重点是:
掌握C++98 和C++11。下班后,随着您对C++ 的理解不断加深,您将有时间反思更新的功能。
3.C++的重要性
3.1 语言的广泛运用
下图数据来自TIOBE编程语言社区2024年1月排名。在30多年的发展过程中,C/C++几乎一直稳居前三。
TIOBE 编程语言社区排名是编程语言流行趋势的指标,每月更新一次。该排名基于互联网上经验丰富的程序员、课程和第三方供应商的数量。排名是使用Google、MSN、Yahoo!Wikipedia、YouTube 和百度等著名搜索引擎计算的。 注意:排名不能告诉你哪些语言更好或更差。每种编程语言都有自己的应用场景。
3.2 在工作领域
1、操作系统及大型系统软件开发
几乎所有的操作系统都是用C/C++、Photoshop、
这是因为Office和JVM(Java虚拟机)性能很高,可以直接控制硬件。
2、服务端开发
后端开发:主要侧重于处理业务逻辑。也就是说,后端返回与前端的请求相对应的响应。目前主流是使用Java,但各大厂商可能主要开发C++后端。基础组件、中间件、缓存、分布式存储等
服务器端开发比后端开发更广泛,包括后端开发,一般都是用C++开发,对于实时性要求较高的东西,比如游戏服务器、流媒体服务器、网络通信等。
3. 游戏开发
PC平台上几乎所有的游戏都是用C++编写的,包括魔兽世界、传奇、CS、卡丁车赛车等。市面上相当多的游戏引擎,如Cocos2d、Unreal 4、DirectX等,在3D游戏领域都是计算密集型的,底层数学都是矩阵变换。如果你想要漂亮的图形、丰富的内容和实时的游戏性能,C++是你唯一的选择。要求难度高。比较著名的厂商:腾讯、网易、完美世界、巨人网络等。
4.嵌入式/物联网领域
嵌入式:是指将具有计算能力的主控板集成到机械或电子设备中来控制这些设备。例如:智能手环、摄像头、清洁机器人、智能音箱等。
当人们想到嵌入式开发时,大多数人想到的是单片机开发(即在8位、16位或32位单片机产品或裸机上进行的开发),而除了单片机开发之外,还有还有嵌入式开发。还包括片上SOC、系统级、驱动程序级、应用程序和中间件级开发。
常见的职位包括嵌入式开发工程师、驱动程序开发工程师、系统开发工程师、Linux开发工程师和固件开发工程师。
以华为、vivo、oppo、小米为代表的手机厂商,以大疆、海康威视、大华、视源股份为代表的芯片厂商等知名厂商也都有自己的终端业务厂商。类似于海尔、海信、格力等传统家电行业。
随着5G的兴起,物联网(又名万物互联)也在兴起。例如阿里地勤、腾讯地勤、京东、百度、美团等都有硬件相关业务。单元。
5.数字图像处理
数字图像处理涉及大量的数学矩阵运算,需要较高的CPU计算能力。所有主要的图像处理算法库和开源库都是用C/C++编写的,包括OpenCV和OpenGL。这就是著名的Photoshop。用C++ 编写。
6.人工智能
当我们想到人工智能时,我们首先想到的就是Python。人们认为需要学*Python才能学*人工智能,但这是一个误解。 Python 使构建神经网络变得容易。输入参数、导入数据并开始训练模型。然而,人工智能背后的核心,例如深度学*算法,仍然是用C++编写的。
7. 分布式应用程序
近年来,随着移动互联网的兴起,各种应用的数据量不断增加,后端架构的性能和并发能力必须不断提升,以应对大信息时代的到来。在分布式领域,很多分布式框架、文件系统、中间组件等都是用C++开发的。 Hadoop生态系统中对分布式计算产生重大影响的几个强大组件,例如HDFS、Zookeeper和HBase,也是基于GFS、Chubby和BigTable,这些组件是Google用C++实现的。包括分布式计算框架MapReduce,Google首先用C++实现,然后出现了开源的Java版本。
除了上面提到的领域外,科学计算、浏览器、流媒体开发、网络软件等都是C++非常适合的场景,作为老牌语言的常青树,一直占据编程语言的前三名。存在的价值一定是别人。
4. 如何学*C++
学*C语言需要大量的练*,而学*数据结构则需要大量的思考。学*C++怎么样?
4.1 其他人如何学*?
以下摘自2010年8月出版的第《程序员》号文章的最后一段,第《C++强大背后》号。
C++ 的缺点之一是它比许多语言更复杂、更难学*和掌握。很多人说学C语言只需要一本KR 《C程序设计语言》的书,但关于C++的书数不胜数。我从C 转到C++,并通过阅读书籍自学了一切。欢迎在此分享您的学*经历。我个人认为学*C++可以分为四个层次。
第一级,C++基础(典型)
选择一本入门书,例如《C++ Primer》、《C++大学教程》,或者Stroustrup 写的经典《C++程序设计语言》 或一年半的新书《C++程序设计原理与实践》。通用C++ 课程也到此结束以及其他010- 选集。请参阅30000和《C++ 标准程序库》。
第二个层次是关于正确、高效(轻松)地使用C++。
到了这个级别,只有阅读了《The C++ Standard Library Extensions》、《(More)Effective C++》、《(More)Exceptional C++》、《EffectiveSTL》等之后才能进入专业C++开发。
第三关,C++详解(精彩)
对于全球问题,请阅读《C++编程规范》、《深入探索C++对象模型》、《Imperfect C++》、《C++沉思录》。如果你想挑战你的智商,请阅读有关模板和模板元编程的书籍,例如《STL源码剖析》、010-3。 0000、《C++ Templates》。
4级C++学*(自然回归)
《C++设计新思维》、《C++模版元编程》(包括STL设计背后的数学基础)、C++标准文档《C++语言的设计和演化》、C++标准委员会提案和报告以及有关C++的学术文献。我主要使用C++,所以我可能停留在第二或第三级别。然而,C++只是软件开发的一部分,仅靠该语言无法解决业务和工程问题。读者不要坚持在几年内“学透C++”,但一旦达到第二级,如果有兴趣,可以从实践经验中学*,逐步继续学*更高层次的知识。学*C++很困难,但是非常有趣和充实。
如果提问者所说的“掌握”指的是上面的第二个层次,那么一年的全职工作可能不足以“掌握”它。首先,阅读这些书本身就需要花费大量的时间,而且对于一般人(除了一些学*能力和记忆能力好的人)来说,有可能你要读好几遍才能记住内容。性的。另外,读完之后还需要练*。除了介绍性练*之外,您还需要执行几个面向工程的项目,以了解各种语法和编程范例的用法和时间安排。我们鼓励您参与开源项目。然而,学*需要不断的思考和积累成果,而实现这一点的方法包括与朋友交谈、写博客、写石虎答案,这些都需要时间。
我们建议您不要将“精通C++”视为一年的目标。学*语言应该被视为一个持续的过程,并在特定的应用中使用该语言。
4.2 如何自学
1. 详细概述
博客
定期写博客不仅可以记录自己的学*过程和知识点,同时也成为复*的法宝。
2. 中间阶段后用思维导图画出总结
3.
经常阅读
入门级,简单,
是一本薄薄的书,可以帮助你轻松理解C++的语法特征。
如果您已经学*了C++ 一半以上,您可能已经了解了继承和多态性。本书解释了如何使用推荐的方法编写更好的C++程序。还没读过。
如果您学完C++课程体系后有时间,请阅读《编程的本质》,全面理解所讲授的知识点。这本书有一定的深度,从基础角度介绍了C++语法。
《ISO/IEC 14882:2003》可以作为参考书,如果你对语法特征不清楚的话可以快速查一下,所以建议利用下班后的空闲时间慢慢欣赏。
版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。