现在的编程语言越来越多,为什么C和C++ 还没有被现在的时代淘汰呢?:小编断言,只要还有编程语言在,C语言和C++就很难被淘汰。计算机的编程语言的发展可分为三个
小编断言,只要还有编程语言在,C语言和C++就很难被淘汰。
计算机的编程语言的发展可分为三个阶段。
首先是机器语言,本质上是计算机CPU可以直接识别的指令集合。芯片之争的时候,我们知道了CPU的雏形是集成电路。根据电路的开关信号的变化进行运算是编程语言最朴素的理论基础。实际编程时,使用二进制的0和1进行编码,编写一个计算机可以运行的Helloworld的程序,其实就是0和1排列组合。有密集恐惧症的人程序没写完,就先疯掉了。机器语言毕竟让机器理解的,与人类思维的方式还是有很大区别的,因此记忆起来非常的麻烦。现在能懂这种编程语言的程序员是国宝级的存在。
其次汇编语言,用一些程序员容易理解和记忆的字母,单词来代替一个特定的指令。譬如:“ADD”表示数字逻辑上的加减,“ MOV”表示数据传递等。有了汇编语言,程序从此有了可读性。尽管编程是方便了,汇编语言依然没有摆脱机器的束缚,程序员要根据不同的CPU学习相应的汇编语言,通常情况我们还是称汇编语言为低级语言。
再其次高级语言,高级语言是参照数学语言而设计的近似于日常会话的编程语言。高级语言独立于机器,程序员在编程时也只需关注问题本身。
了解了上述背景之后,咱们再回到题主的问题。题主说的编程语言越来越多中的编程语言是高级语言,为了解决特定问题而生。大家常说的JAVA、Python、PHP、GO、R语言等包括C++都是高级语言。
C语言比较特殊,它兼具了汇编语言的高效,高级语言的灵活,常常被称为中级语言。鉴于此C语言被广泛的应用到对处理速度要求比较高的应用场景,也有很多高级语言的编译器最初都是由C语言编写的。C++被看做是带类的C语言,受到广大程序员的欢迎。
总之,其他高级语言一般情况是为解决具体业务问题而生,C或者C++在一定程度上是支持他们的基础语言,且没有更好的替代。
最后,题主跟屏幕前的您了解了么?
我是@代码Go说科技 ,码农的视角看科技,带给大家不一样的感受。欢迎大家阅读评论转发加关注。
声明:图片来自网络,如有侵权,联系必删!
C和C++一下子被替代是不可能的,但是其实已经慢慢的在淡出很多领域了。
最近,连Linus(Linux的创造者)也已经在感叹,他们很多人已经老了,但是Linux的社区维护却很难找到合适的人。
C和C++的流行伴随着计算机的兴起,在那个时候,并没有像现在这么多编程语言可供选择,也导致基本所有计算机都是用C/C++写的,包括Windows、Linux还MacOS的内核,以及各种嵌入式硬件的驱动代码。
而除非这些东西被时代所淘汰,否则它们的维护和更新依然会使用C/C++语言,它们牵涉到的东西太广太庞大了。
即使现在编程语言越来越多,但是大部分都只是对开发者更加友好了,相应的对硬件的消耗却也增加了,如果用这些语言来开发底层系统的话,现在的硬件性能也没有好到可以不用在乎这部分损耗的程度。
即使现在Go语言号称性能可能达到C/C++的水平(官方测试与C语言的性能差距在10%~20%)之间。
一来Go语言的流行度相比C/C++还是太低,还需要时间的沉淀,还有C/C++这么多年累积的第三方库也不是都能找到替代。
二来C/C++留下的历史包袱太重,很难让人愿意投入这么多时间和人力去重写全部代码,据微软公开的信息,Windows Vista的代码量超过5千万行,开发投入的人力在1000人左右,投入的资金在200亿美金。这还是在有之前系统的积累之下,如果完全使用新的编程语言来开发的话,时间、人力还有资金至少需要翻几倍,即使完成之后的收益比现在高,也很难让人有魄力下这么大的决心,更不要说还牵涉到现有开发人员的安排问题。
再者,C语言特性也一直随着时间保持着更新,最新的C++ 20标准也已经制定好了,功能上并不会差其它语言太多。
但是,Linux除了内核依然是使用C语言维护之外,对于驱动等比较外围的代码已经在考虑使用其它语言来替代了。C语言虽然可以达到很高的性能,但是想要优化到这个程序对于程序员的要求会很高,其它语言则会降低这一门槛。
另外,如果硬件出现大变革,比如量子计算机研发成功,那时候还会不会用C/C++来开发量子操作系统就不一定了。
所以,C/C++不是不可能被时代淘汰,只是需要的时间可能比我们的想像要长而已。
就打一个很简单的比方吧:房子修得再高、再华丽,没有稳固的地基和坚实的底层结构,都不能长久,甚至可以说根本就禁不住稍微大点的风雨地冲击。地基和底层结构重要,所以用来建设地基的钢筋和枕木也是非常重要的。
在计算机中扮演地基角色的就是计算机硬件和操作系统。而高级程序语言C和C++就是用汇编语言编写而成,通过操作系统调用函数来完成对硬件的调用。
而这意味着C和C++语言就是用来建设地基的钢筋和枕木,对于建设高楼大厦是非常重要的。所以无论编程语言再多都还不能撼动其地位。
C和C++这两个编程语言自从1985年诞生以来,就很很多相关大神编写、完善它的函数库。就目前为止,还没有哪个高级编程语言比它们的效率更好。同时,很多人使用多年、已经习惯了。
现在的版本已经更新到20,而且C++就是在C的基础上进行拓展的。它还是吸收了JAVA,Python,Ruby等等高级编程语言面向对象的特性。
要是觉得@种花家的科技兔珺 写的对您有所帮助,还请动动您发财的小手,点点赞。要是想要了解更多计算机,编程算法相关的知识,也可以顺手关注一下我。
交通工具再多,代替不了人的两只脚??
说C语言要被淘汰都是美国等发达国家骗人的,他们用C语言做底层,掌握了核心技术,然后让你用他们的开发的高级语言工具为他们工作,现在看似增加了越来越多的编程语言,其实都是鸦片,语言越高级,离底层越远,看起来越用越简单,培养出了一堆堆应用层编码工人,但核心的东西一点没有,于是你就看到了美国一制裁,我们芯片没有,操作系统没有,连设计软件也没有,如果再制裁狠一些,像CAD,PHOTOSHOP都不让你用,更甚连编译器都不让你用,那你学那一堆无法编译的语言就一点用都没有,你就会发现中国一堆堆的码农结果啥都不会做,所以如果真的爱编程,就要学C,开发有核心技术的东西,那样才不会被淘汰和被制约
首先,C和C++是永远不会过时的语言!
只要操作系统还是用C来写,C就永远不会被淘汰。国内的C岗位主要是做内核相关的开发,以及一些嵌入式的需求,当然嵌入式的也有用C++的。
C++不会被淘汰的原因之一是C不会被淘汰,因为C++抱紧了C的大腿,C++最基础的定位就是better C。也有一些领域是C++专属的,比如说游戏引擎等。
C++是基于C语言发展而来,起初,C语言并不支持面向对象,后来引入了面向对象的概念,即成了C++,C++是编译型语言,编译器将代码编译成机器码,一般用于追求高效的,底层的开发,例如单片机。一些底层的驱动都需要用C++写。
另外,这两种语言掌握了,学习其他语言将会是一种轻而易举的事情。
吃水还不忘挖井人,没有C/C++,如今这些孙子语言都不知如何下凡。
如果我们把编程语言分为三类,可以这样分:第一、汇编;第二、C/C++;第三、其他语言。可以看出C/C++与汇编的不可替代性。
基本上几乎所有的软件系统,其底层都是C/C++(有时还包含汇编,为方便叙述,以下不再强调汇编)。C/C++具有基础作用。所谓基础不牢,地动山摇。
首先操作系统,基本上内核都是主要用C写出来的。主流的操作系统,数都数得过来。一些非主流操作系统,也是以linux、unix为基础。
应用软件都是要运行在操作系统上的,只要涉及和底层打交道,就很难绕开C/C++,因为操作系统开放的接口就是C接口。这个还好说,多数人或许一辈子也涉及不到,比如网页前端程序员。
但是硬件开发商就没有那么幸运了,硬件要和软件打交道,就离不开设备驱动。写驱动,那就是C/C++的主战场,特别是C。这已经是内核级别的编程了。已经“潜入”到虚拟机、解释器、shell(外壳)下面了。像我们熟知的Java、C#等,都是要依赖虚拟机的。内核级别为什么非要用C/C++?依然是那个原因,操作系统开放的内核接口就只有C(暂忽略汇编,下同)。所以只能用与C兼容的语言,包括C++。
编程,除了亲密接触操作系统,还有一些重要的东西,那就是编程语言和编译器、解释器。
刚已经说了,很多编程语言都离不开虚拟机的,有的要用到解释器。很不幸,多数虚拟机都是用C/C++写出来的。以最流行的Java虚拟机来说,它必然有些场景只能用C/C++完成。与操作系统内核相关的部分,那是绕不开的。还有就是一些复杂的高性能算法。最常见的就是压缩、加密,还有图像处理、音频处理、视频处理、3D渲染。如果你不信,请马上去阅读JVM中有关JPG、PNG图片处理的程序,看看是不是用的C?
现在python似乎非常火爆,可以用来做算法、做数据挖掘。其中一个典型就是tensorflow,他也是用C/C++写出来的。我们在写python的时候,以为是用的纯python,实际上不论是库函数还是第三方高性能库,都是C/C++写的。
嵌入式开发,又是另一个应用场景了。它的其中一个特点就是小巧、成本低、功耗小,这时候,C也是主战场。设想,你如何在一块手表上集成很多高性能低功耗的功能?比方说,除了C/C++,你还可以用什么去开发蓝牙功能?或许你会说,技术在进步,硬件性能在提高。但是别忘了,人类的需求也在提高。比如,未来如何在一粒芝麻大的(医疗)机器人上进行开发?你别告诉我:等会,我先装个几百兆的虚拟机再说……
说了这么多,总结一下,C/C++之所以常青,与操作系统关系密不可分。操作系统是基础的基础,它们既然已经选择了C,我们又很难去发明一个更好的不是基于C的操作系统内核,那就只好“将错就错”。第二,C/C++确实快,确实消耗资源少。因为它有几个特点:一、不依赖虚拟机和解释器,直接就是本地(native)代码。二、保留指针,可以灵活操作内存。第三、没有GC(垃圾回收)。如果要替代,那至少得满足这三个条件。
满足这些条件的,其实也有,比如rust,最近也比较火。它就是C/C++的竞争者。只不过,因为历史原因,还多基础设施已经用C去构造了。这就好比,我们的铁路轨道已经这么宽了,你不能说改就改,大家就继续沿用吧,要不然火车如何“兼容”?难道全部改底盘?
总之,即使我们用不到C/C++,还有其他领域的人用到:做设备驱动的、做操作系统内核的、做高性能算法内核的、做编程语言的、做嵌入式的。没有这些人跟我们打基础,我们几乎是寸步难行。除非它们永远不更新换代,不再维护。
首先是粘性,毕竟这么多人用了半辈子。其次还是粘性,毕竟很多关键系统是用他们开发的,重构成本很高。再次还是粘性,无论观念还是实操,他们更接地气(硬件),性能最优。
现在各种网红小说,穿越小说。科幻小说这么发达。为什么汉字还不淘汰?
一天中什么时候运动减肥效果好抓 小孩能不能练哑铃多大的孩子适合 小孩嘴唇起皮怎么办怎样才能预防 孩子的罗圈腿是怎么形成的三大因 孩子早恋怎么办如何有效疏导孩子 医生婆婆称自己专业孩子的事必须 儿子成人礼送什么礼物好呢给你孩 有孩子的夫妻千万不要离婚对于孩 小孩千万别让老人带的说法正确吗 自卑缺乏安全感的孩子怎么改善 怎么让孩子开口说话 这几个方法 怎么让孩子吃饭 教你如何让孩子 怎么管教不听话的孩子 家长首先 顽皮的孩子怎么管教的 这些方法 叛逆期的孩子怎么管教 引导孩子 孩子性格软弱怎么办 懦弱的性格 孩子性格偏激怎么办 孩子性格偏 孩子性格固执怎么办 家长们不妨 爱惹事的孩子怎么管教 不妨试试 养育优秀的孩子具备特征,家长要 高考数学难出新天际,可有的孩子 “做胎教”和“不做胎教”的孩子 花费十几万只考了302分 妈妈觉得 甘肃作弊考生留下来的疑团,是怎 一举夺魁!高三学生离校时,校领 高考钉子户:26次参加高考,今年 D2809次列车因泥石流脱线!此类 “女儿16岁,学校宿舍里分娩了” 扭曲邪门的内容,频频出现在教科 川渝地区几所大学实力很牛!四川