网易首页 > 网易号 > 正文 申请入驻

为什么感觉 C和C++ 不火了?

0
分享至

为什么感觉 C和C++不火了?

你身边的所有电子设备内,都是C或者C++写的, 会淘汰吗,有本事你们别用电子设备,C语言和C++在互联网领域热度肯定不如Java、python、js,我现在做的是工业软件,在工业软件、机器人、自动驾驶、嵌入式等等工业自动化相关领域,C/C++仍然是绝对的霸主地位。我这里有一套单片机物联网资料大全,想自学的小伙伴把,我想白嫖已经三连打在评论区,我给你发哦。选择什么编程语言不是根据难易程度,而是生态,比如做工业软件开发也可以选择Java,毕竟Java可以非常简单的调用C++的代码,android里面应用比较多,但是做工业软件开发一个团队都是Java,那底层C++算法出问题谁去解决,一个团队编程语言越多扯皮也是越多。

首先C和C++是两个非常不一样的编程语言。C语言在系统开发领域地位非常稳固,几乎没有替代产品。应用层开发今年来略微有被Rust取代的迹象。C++由于支持的编程范式过多,导致不同水平的人写出来的代码质量差异太大,这给软件的稳健性带来了很大的问题。所以除了对性能有很高要求的系统,一般都会选择其他编程语言。Java之所以流行,一部分原因就是它比较死板,不太容易玩出骚操作。招来的Java程序员写出来的代码质量差异不至于太大。

长期来看,C++不会被淘汰,但是会变得小众。说穿了,C++只不过是C语言的升级版,但C语言中存在的弊端在C++中依旧存在,直到后来,1995年,Java被SUN公司正式推出,Java的一些特性很受程序员们的欢迎,比如再也没有C语言那样的指针,再也不用考虑内存管理,而且还有真正的可移植性,编写一次,到处运行,为了实现跨平台,Java中在操作系统和应用程序之间增加了一个抽象层叫Java虚拟机。用Java写的程序都跑在虚拟机上,除非个别情况,都不用看到操作系统。

编程语言只是工具

工具的意义在于被使用

c被发明出来,有其历史的局限性,当时的人,只能做到那个程度

科学技术要发展,就不可能局限在当时那个程度,所以才会有后来的c++

以及c++++--,也就是java最开始的名字

当然java在诞生之初,有各种问题,但是有问题就去解决问题,并不代表因为它有问题,所以人类科技就不要进步了

这里要特别感谢苹果和谷歌这种公司,尤其是在硅谷的那一干企业,因为正是他们的努力,才使得我们的编程语言越来越简单

比如java在一开始就提供了内存自动管理机制,也就是gc,有了gc之后,内存泄漏的可能性就大幅下降了,但是gc会有在执行时候整个程序暂停的问题,那怎么办?这是一个问题,就要去解决这个问题,苹果提出了arc,谷歌提出了将heap按照runner切割,java自身则在尽一切可能优化gc暂停时间,那到现在,即便是最暴力的缩短gc停顿时间这一维度上,都已经优化到了1ms以内,目前测试结果是16t的内存,可以在1ms以内完成,而且最大的暂停时间,只有区区的0.13ms[1],然后这个还在不断优化中,并且在这个科技树上,还进一步衍生出了比如shenandoah,lxr[2]等多种短暂停gc的选择,并且这些gc策略,都由不同的公司完成,比如shenandoah主要有red hat红帽完成,而lxr则是由Google的人完成,这进一步促进了这个领域的繁荣和发展

那gc都能被优化到1ms以内,还有几个软件不能接受这个时长的暂停呢?

作为参照和对比,人的反应时间是0.2秒,也就是200ms以上,经过训练的运动员,可以达到0.1s也就是100ms,再低就不太可能了,然后人的眼睛,对于动画的敏感度,大概在60帧左右,也就是1/60,大约是16-17ms之间这样子,所以低于1ms的暂停,人是感觉不到的,你感觉得到的话应该去国家安全机构应聘,因为国家需要你这种超能力者

这是一方面

另外一方面,c++对于c的兼容性,在早期也是一个优势,就比如你用c++,调用c写的类库,比较简单,相比之下,用java的jni,就很麻烦,那jni就是ffi的一种,所谓ffi,就是调用其他语言的api的这么一个功能

比如你用java,要调用c写的类库,dll/so/dylib这种,就非常麻烦,jni用起来,既要懂c,又要懂java,那这个就明显阻碍了普通用户的使用

那ffi这一块这些年也是发展迅速,改善明显,现在普遍能够实现的就是,让用户不需要碰c等代码,通过工具,可以自动生成对应的语言接口,这样就可以让用户在不懂c的前提下,也能调用c编写的api,那native部分语言,大部分都提供了跟c兼容的方式,比如说swift的@_cdecl,那通过c,就可以将大部分语言连接起来,而且不需要用户了解c的知识,也能够将其利用

那这个就很方便了,就会出现一种情况,就是,我不需要知道你是怎么做的,我也不需要懂你所用的知识,但是这都不妨碍我使用你的劳动成果

ffi领域这些年的发展,主要就是要达成这个目标

这一块不管是苹果还是谷歌,都有自身相应产品,比如上文说的swift的@_cdcel,swift没有gc,所以跟c兼容起来比较容易,那flutter和java这种,需要的工作量就大一点,因为c没有gc,所以c画出来的内存,你是不是也要将其纳入gc扫描的范畴之内呀?你看,这里就有很多工作要做

但是经过七八年的发展,也基本上接近完工了,相关文档,直接看官方文档就行了,java的内容多一点,那有了ffi之后,你对有gc的软件性能不满意,你完全可以自己动手,用native语言实现一个,然后嫁接到你的代码中去

然后是第三个发展方向,就是将带有gc的语言编写出来的软件自身,编译成native

之前java等语言,跟c等native语言,一个实质性的差别就是编译产物,java编译成字节码,然后在执行时候,再将字节码翻译成机器码执行,而c,c++语言则是直接编译成机器码

那除了字节码以外,还有其他的中间码,比如llvm用的bitcode,当然原因不是为了跨平台,而是为了复用编译器后端,为动态类型和静态类型语言提供一个统一的编译器后端

那因为在这些代码执行的时候,多了编译成机器码这一步,所以启动时候相对较慢,而且运行时也相对大一点,因为多了一步工作嘛,那这个在某些场景下,就会降低用户的体验

所以将源码编译成机器码的需求,其实是存在的

那最早开始对这一块动手的,还就是谷歌,的安卓,因为客户端app对这些性能比较敏感,你下载一个app,又大又慢,用户肯定会有意见,早些年的安卓,被诟病说,不如ios流畅,就是因为jvm变种dalvik的缘故,时至今日,苹果在介绍swift的时候,还在畅谈aot和jit对比下,aot的好处

所谓aot就是将源码编译成机器码,而jit就是传统java那种方式,先编译成字节码,然后在运行时再编译成机器码再执行

那既然苹果和谷歌都认为,aot有好处,那这里就有需求存在,所以安卓后来就制作出了art,android runtime,安卓运行时,就是把app直接编译成机器码,就是aot

随后诞生的flutter,也同时提供了jit和aot两种编译选项,允许用户在测试时候,使用jit编译,编译执行,并在app发布的时候,使用aot编译,编译成机器码,以给终端用户更好的使用体验

随后java又提供了graal等项目,实现了aot,时至今日,java也已经表态,要制作project leyden,也就是正式的aot功能

这一块是将来大概十年左右时间的发展重点,那java等语言能够同时提供jit和aot两种选择,那相比之下,c/c++只能aot,不能jit,那自然受众就要小一点了

其他还有一些功能性上的特性,比如值类型,可以连续内存,在软件吃特别大内存时候,这些特性可以帮助节省内存,还有虚拟线程等等,不一一列举

但是总得说来,这些年,编程语言发展方向是朝着开发越来越简单,对用户要求越来越低的方向上去在发展

过去,我们需要一个程序员懂指针,懂得回收内存垃圾,懂各种古里古怪的语法,还有各种知识

但是随着科学技术的发展,我们越来越不需要一个程序员什么都懂,你不懂也没关系,不妨碍我们实现我们的目的就好了

随着科学技术的发展和进步,编程手段会越来越丰富,越来越简单,越来越规范

这或许能回答你的问题,为什么不火了,因为现在你有更加简单的手段去实现你的目的

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
800万的包,1200万的表,600万的眼镜,LV总监来成都炸街。

800万的包,1200万的表,600万的眼镜,LV总监来成都炸街。

室内设计师阿喇
2024-05-24 03:18:59
看到一个网友的房贷月供,我惊呆了!月供18693元,看得我腿发软

看到一个网友的房贷月供,我惊呆了!月供18693元,看得我腿发软

知秋侃史
2024-05-23 03:22:10
谭咏麟病愈后首次公开现身,瘦到青筋毕现感慨声线不好

谭咏麟病愈后首次公开现身,瘦到青筋毕现感慨声线不好

小萝卜天下事
2023-07-21 21:57:53
卢克文:按购买力,欧元对人民币真实汇率是1比3!但欧洲物价更高

卢克文:按购买力,欧元对人民币真实汇率是1比3!但欧洲物价更高

杂谈空间社
2024-05-18 23:41:05
突发悲剧!浙江2人遇难!最新通报

突发悲剧!浙江2人遇难!最新通报

西湖之声
2024-05-26 13:16:24
13岁女孩遭男生霸凌,体液流出差点被强奸!老师:一个巴掌拍不响

13岁女孩遭男生霸凌,体液流出差点被强奸!老师:一个巴掌拍不响

三月柳
2024-05-25 17:11:17
王传君瘦身亮相戛纳,形象大变引关注,新片角色备受期待

王传君瘦身亮相戛纳,形象大变引关注,新片角色备受期待

明星爆料客
2024-05-25 20:26:14
出卖孟晚舟的真凶被挖出来后,如今遭到了哪些报应?

出卖孟晚舟的真凶被挖出来后,如今遭到了哪些报应?

老白调研室
2024-01-23 12:11:51
张成泽处决前8天:被禁足,仅2名情妇陪伴,每天上书金正恩表忠心

张成泽处决前8天:被禁足,仅2名情妇陪伴,每天上书金正恩表忠心

古今档案
2023-12-09 16:05:40
皇马0-0,终结主力门将悬念!安帅敲定决赛首发,C罗欧冠之王不保

皇马0-0,终结主力门将悬念!安帅敲定决赛首发,C罗欧冠之王不保

球场没跑道
2024-05-26 08:11:16
整容脸,烂演技!《庆余年2》的4位“关系户”演员,看着让人难受

整容脸,烂演技!《庆余年2》的4位“关系户”演员,看着让人难受

银河卧谈会
2024-05-25 19:26:40
网红rose女儿越来越黑!曝老公真实年龄差18岁,诸多行为被指不适

网红rose女儿越来越黑!曝老公真实年龄差18岁,诸多行为被指不适

裕丰娱间说
2024-05-25 00:05:59
记者:若国米估价超欠款,张康阳将获得一定出售分成

记者:若国米估价超欠款,张康阳将获得一定出售分成

直播吧
2024-05-26 19:41:12
王健林还清6000亿债务后终于现身!却与往日精神模样判若两人!

王健林还清6000亿债务后终于现身!却与往日精神模样判若两人!

柠檬有娱乐
2024-05-18 09:56:07
亲美辱华,背刺祖国,吃中国饭却长美国心的吕丽萍,现在自食恶果

亲美辱华,背刺祖国,吃中国饭却长美国心的吕丽萍,现在自食恶果

番茄说史聊
2024-05-16 17:41:40
全体注意!澳洲将大变天:禁止中国人买房+限制国人移民!留学生大砍95%,他要上台了!

全体注意!澳洲将大变天:禁止中国人买房+限制国人移民!留学生大砍95%,他要上台了!

澳洲红领巾
2024-05-25 12:10:42
韩庚高调现身厉旭婚礼,Super Junior实现了十三人合体,瞬间泪目

韩庚高调现身厉旭婚礼,Super Junior实现了十三人合体,瞬间泪目

娱乐的小灶
2024-05-26 21:13:42
俄代表:这是对俄的“最后通牒”

俄代表:这是对俄的“最后通牒”

参考消息
2024-05-25 20:04:16
一眼假,明目张胆造谣,竟然说李梅火攻先在武汉进行试验

一眼假,明目张胆造谣,竟然说李梅火攻先在武汉进行试验

知兵堂军事
2024-05-25 08:42:50
一年1.3万人报名也追不上,差距巨大的中美舰载机飞行员数量

一年1.3万人报名也追不上,差距巨大的中美舰载机飞行员数量

万乘之尊
2024-05-13 18:00:09
2024-05-27 02:02:44
大方老师单片机
大方老师单片机
领单片机速学资料,点我头像~
259文章数 1144关注度
往期回顾 全部

科技要闻

刘强东:只要拼搏公司永远不会辞退你

头条要闻

李强赴韩先后会见尹锡悦、岸田文雄 释放多个重要信号

头条要闻

李强赴韩先后会见尹锡悦、岸田文雄 释放多个重要信号

体育要闻

俄媒:巴黎接近签下萨福诺夫,转会费可能接近1500万欧

娱乐要闻

霍启仁求婚成功,郭晶晶要有妯娌了

财经要闻

李嘉诚,为何频频“打折卖楼”?

汽车要闻

底盘升级/首搭DM5.0混动技术 比亚迪秦L到店

态度原创

本地
数码
亲子
健康
公开课

本地新闻

2024沈阳皇姑第二届半程马拉松

数码要闻

库克:首次使用 Vision Pro 的用户往往会感到“情感上的触动”

亲子要闻

萌娃自己拍视频跳舞的一幕,沉浸在音乐中跟着节奏嗨起来!

在中国,到底哪些人在吃“伟哥”?

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版