c++是在c语言的基础上演变来的,那为何c++没有代替c语言呢?

C++确实是在C语言的基础上演变而来的,但为什么C++没有完全代替C语言有以下几个原因:


向后兼容性:C++保留了C语言的大部分语法和特性,使得现有的C代码可以在C++中进行编译和运行,这种向后兼容性使得C语言仍然广泛应用于许多项目和系统中。


学习曲线:C++相对于C语言来说,语法和特性更加复杂和庞大,学习和掌握C++需要更多的时间和精力。对于一些简单的项目或初学者来说,使用C语言更加容易上手。


运行效率:C语言是一种较为底层的语言,对于一些对性能要求较高的系统或嵌入式开发来说,C语言的运行效率可能更高。


生态系统和库支持:C语言有丰富的开发工具和库支持,已经形成了庞大的生态系统。许多项目和系统依赖于这些C语言的库,迁移到C++需要重写和重新适配这些库,对于一些项目来说可能不切实际。


尽管C++在面向对象编程、模板编程等方面提供了更多的特性和功能,但C语言仍然具有自己的优势和应用领域。因此,C语言和C++在不同的场景和需求下仍然共存和发展。




为何C++没有替代C语言?


C++和C语言的关系

C++确实是在C语言的基础上演变而来。确切说,是在原始的C,即K&R C的基础上演变而来的。和现代的C99,C11,C18之间是分支关系。

要明确一点:C++并非C语言的继承者


从C语言演变而来的其它语言

从C语言演变出许多其它语言,关系很近的除了C++,还有Objective C(就是苹果大力使用的那种语言)。其它的如D,Go等语言也深受C的影响。

需要说明的是:即使C语言需要继承者,C++并非唯一候选人


C++的来历

C++是在OOP理念流行时,针对C不能原生支持OOP的问题而推出的改良品种,刚开始只是一套预处理标准,后来则发展成了另一种语言。

C++并不孤单,Objective C几乎与其同时诞生(80年代初期)。

由于性能优势(相对于Objective C),C++在竞争中压倒了Objective C,流行了起来。


C语言的优势

C语言是为操作系统级底层开发而设计的。在实践中,C语言在这一领域长期处于统治地位。

相对于C++,C语言不包含那些针对大型应用级程序所增加的复杂性,这也带来了一些优势,比如:

  • 简单易学,稳定一致:C语言简单,易学。一个认真学习了一年C语言的人,能看懂绝大多数的他人编写的C程序源代码;相对来说,一个认真学习了三五年C++的人,也很难确保能看懂绝大多数他人编写的C++源代码。
  • 编译简单、快捷:C编译器比C++编译器简单很多,要支持一颗新CPU的代价也低很多;同时,编译速度也快很多;在C++发展的早期,编译器跟不上语言标准的发展是一种常态,也说明了C++语法的复杂对编译造成了很大影响。
  • 基本运行时简单:举个例子,在典型的CPU上,只需十几行最多几十行汇编代码,即可启动一套完整可用的C语言运行时,跳转到C的main(或同等)函数执行;对于其它语言,这一步要复杂和漫长很多。
  • 和汇编语言接口简单:比如汇编代码中调用C函数,相对于调用C++函数,方便、简单。

其实C语言从来就不是功能特别多的一种语言。比C语言更古老的ALGOL系列语言功能和语法特性都远超C语言。C语言本身就是精简功能的产物。是做减法、而不是做加法的产物。


如果有一种语言能完全替代C,那这种语言一定要在C语言的主场,即操作系统级底层开发领域超越C语言。这种语言一定是减法做得好的语言。C++不是这种语言,至于哪种语言能达成此目标?且让我们拭目以待吧。




十倍速时代,与对手竞争,对语言要求是编程快,适合团队,摩尔定律下硬件越来越便宜。与用户需求做平衡。

c++语言是面向对象语言,是大规模团队需求,编译出目标代码效率高,与C语言兼容,但语言复杂。C语言与硬件关系近有有移殖性好得特点,很多手持和其它嵌入式设备内存处理器资源小 ,c语言在这些场合更有效率。现在嵌入设备处理器和内存强大,例如手机,用Java多,JAVA更容易,团队协作效率更高,c++也地位下降。

linux操作系统是用c语言编,c语言生命力保持另一大原因。

后来得语言,例如python调用c语言包,来平衡易用性与效率。

C语言在嵌入式挑战是树莓派python。

以用户为导向,根据需要选择语言。

与有多因素关得,同样用c语言,同功能设备,内存是256看k,另一帮人用8兆,因为前者敢投片专用集成电路,另一帮人直接用汇编语言用2兆内存。

还有市场决策和技术决策,用数据库软件比直接用c语言编,虽然较贵,投入市场快且系统稳定。

很多是对技术掌握程度,例如微软vb不稳定效率低,结果编出工业监控软件比用c编得另一家稳定。




C++发展历史简单介绍

C语言之所以要起名为“C”,是因为它是主要参考那个时候的一门叫B的语言,它的设计者认为C语言是B语言的进步,所以就起名为C语言;但是B语言并不是因为之前还有个A语言,而是B语言的作者为了纪念他的妻子,他的妻子名字的第一个字母是B; 当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,那就是C++最早的版本,在C语言中增加class关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,所以就叫C++,也成立了C++标准委员会;

美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、命名空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 1488-1998。C++是具有国际标准的编程语言,通常称作ANSI/ISO C++。1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准,下一次标准更新将是在2009年,目前我们一般称该标准C++0x。遗憾的是,由于C++语言过于复杂,以及他经历了长年的演变,直到现在(2009年)只有Visual C++ 2010 CTP开发环境的编译器完全符合这个标准。

另外,就目前学习C++而言,可以认为他是一门独立的语言;他并不依赖C语言,我们可以完全不学C语言,而直接学习C++。根据《C++编程思想》(Thinking in C++)一书所评述的,C++与C的效率往往相差在正负5%之间。所以有人认为在大多数场合C++ 完全可以取代C语言(然而我们在单片机等需要谨慎利用空间、直接操作硬件的地方还是要使用C语言)。




你好,我是比特币二师兄。

1、首先,大学肯定教的都是大众性,即普遍程度很高的东西,C语言相对C++而言,就比较普遍,因为大家基本上都会一些C语言相关的基础。

2、大学只是给你打了一个基础,为了让你在进入社会公司之后,有一个逻辑上的思维,好进行培训,以及打磨,适合本公司的研发方向的人才。

3、C++是面向对象思维的,一般而言,初学者学习时,对于面向对象而言还是比较难理解的,因此大部分学校都会教C语言,而不是C++。

4、C++语言来说,相对复杂一些,类的继承,封装、多态等都是比较复杂的概念,这些对初学者来说并不友好。

5、相较于C++语言而言,C语言具有更强的灵活性,更快的运行速度,并且适用于底层编程,比如嵌入式开发等等。像Linux系统,基本上都是纯C语言开发完成的。

对于编程功底强大的人,C语言就是其首选的编程语言。

展开阅读全文

页面更新:2024-03-05

标签:语言   编译器   底层   嵌入式   语法   函数   特性   效率   内存   优势   版本   简单   功能   标准   财经   系统

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top