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

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

2020-07-31 14:41阅读(72)

c++是在c语言的基础上演变来的,那为何c++没有代替c语言呢?不同的专业有的学c++有的学c语言,为什么不都学c++呢?:为何C++没有替代C语言?C++和C语言的关系C++

1

为何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++不是这种语言,至于哪种语言能达成此目标?且让我们拭目以待吧。

2

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语言)。

3

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

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

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

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

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

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

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

4

各有各的用处。不能说因为有了??,??就没用了。电灯蜡烛各有所爱。

比如嵌入开发,C语言就轻便灵活。

另外,Cpp也不是C基础上发展起来的,只是部分语法延续,它们是两种语言体系。

5

虽然说C++是在C语言的基础上演变而来的,C++是面向对象的,C语言是面向过程的,每个语言都有各自适用的场景,可以这么说,无论用什么语言来开发,都只是我们实现功能的一个工具而已,关键是掌握他,并且学精了;

c++更多的是一些游戏,服务器端的开发,C语言呢更多的是底层操作系统的开发;

以前学习C语言的时候看的是如鹏网的视频教程——《C语言也能干大事》系列,蛮有意思的,通过开发超级玛丽,飞机大战等经典小游戏,开发网站的方式来讲解C语言的知识点,挺好玩的,没想到C语言还可以这么学,没想到C语言还可以写出这么漂亮的界面程序,蛮有成就感的,具体的可以到如鹏网官网上去了解一下;

6

C++ 是 C 的超集,C只有少量功能 C++是 不支持。C一般都用于嵌入式还有一些精简的库,而C++一般都用来写大型的项目,从底层到用户界面,它都可以写。

其实并不是取代和不取代的问题,因为这两种语言目前都有适用的地方和平台。

用法也是因人而异,一般来说你会C++那么肯定也就会C了,其实C++的很多语法特性基本是用不到的,但是你如果学会了,会觉得没有什么语言可以难得倒你。

现在最热门的rust和python,这两个将被用来构建下一层次的计算机编程哦。

7

1、以编程语言发展历程上讲,是先有C语言,后才有C++语言。基于C语言的语法,最大的好处是让广大C语言程序员过渡到C++语言。这点在当时是取得很大成功的。实例是当时也出现过多种面向对象的编程语言,但现在大家熟悉的只有C++。

2、从使用C++语言的角度讲,精通C++语言的前提是精通C语言。C++语言的强大之处是进行大型程序的构架,即框架类与类之间的关系,对象与对象之间的关系。但具体落实到功能的实现,还是体现在C语言上,即一个一个函数的实现细节上。因此,说精通C++而不会C语言的人,是从来没有真正做的实际项目的人吹吹而以。

3、C++语言比Java和C#语言难学的原因在于:学习C++语言,要尽可能的了解C++编译器相关的知识。因为在当时的硬件条件下,为了尽可能的提高程序的运行效率,将一些本来可以放在运行时解决的功能,全部放在编译过程中解决了。因此,在了解编程语言本身的情况下,要多了解C++编程器相关的知识,才能更好地理解C++编程语言。

8

同学,作为一个工科毕业生,我在学习C语言的时候就感觉要比C++好学一点,虽然C++=C+1,C++是在C基础之上发展而来,增加许多C没有的语句,但绝对不是简单的堆叠,我觉得应该是分道扬镳,自立一派了,应运在别的方向了。打个比方HUAWEI mate 30 和HUAWEI mate 30 Pro,是不是有了mate 30 Pro就不卖mate 30 了,显然不是嘛,mate 30还有很大的市场份额,我也会买。所以说:

1、C语言是面向过程的,而C++是面向对象的。

2、C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而C++对于大多数的函数都是有集成的很紧密,特别是C语言中没有的C++中的API是对Window系统的大多数API有机的组合,是一个集体。

3、C语言中的图形处理函数基本上不能用在C++中的。C语言标准中不包括图形处理。

呃,C语言可以应运在单片机、Linux底层编程,C++不能,我知道的就这么多了,所以不能取代,承让承让,谢谢。

9

c++是完全包含c的,谈什么替换。c++语法细节太多,上手较难。如果只用c语法写c++代码,那效率基本是一致的。但没人这么干,毕竟c++最重要的是面向对象和模板编程

10

c是面向过程

c++是面向对象