没有合适的资源?快使用搜索试试~ 我知道了~
01为什么C语言不会过时 评价任何一门编程语言,都是招人骂的。永远是这样。就像是春寒料峭的季节, 街上穿棉袄和穿单衣的擦肩而过,双方一定是同时在心里出现了两个字:“s b!”这个在心理学上有个专业的名字:叫做“二b”现象! 先说一个表,这个就是著名的TIOBE语言排行榜。目前它是一个最权威的一个语言流行度的排行榜,从这个排行榜上看,你会得到一个最直观的结论。Java和C都在下降,而下降的部分被第三名以后的语言所瓜分。 而就在5月,时隔5年,C语言再次领先Java,荣登TIOBE编程语言排行榜第一! 排名前十的分别是: C,Java,Python,C++,C#,Visual Basic.NET,
资源推荐
资源详情
资源评论
为什么说为什么说C语言是永不过时的语言语言是永不过时的语言
01为什么为什么C语言不会过时语言不会过时
评价任何一门编程语言,都是招人骂的。永远是这样。就像是春寒料峭的季节, 街上穿棉袄和穿单衣的擦肩而过,双方一定
是同时在心里出现了两个字:“s b!”这个在心理学上有个专业的名字:叫做“二b”现象!
先说一个表,这个就是著名的TIOBE语言排行榜。目前它是一个最权威的一个语言流行度的排行榜,从这个排行榜上看,你会
得到一个最直观的结论。Java和C都在下降,而下降的部分被第三名以后的语言所瓜分。
而就在而就在5月,时隔月,时隔5年,年,C语言再次领先语言再次领先Java,荣登,荣登TIOBE编程语言排行榜第一!编程语言排行榜第一!
排名前十的分别是:
C,Java,Python,C++,C#,Visual Basic.NET,JavaScript,PHP,SQL和R。
有没有发现亮点?没错, 第一易主了,C 语言反超了 Java 。要知道,C 语言上次第一还是在 5 年前,是什么原因让其“东山
再起”了呢?
时隔五年,C语言重回榜首。受冠状病毒的影响。
据TIOBE CEO Paul Jansen 的猜测,“这听起来可能很不可思议,但是某些编程语言确实可以从这种情况中受益。”
嵌入式语言(嵌入式语言(C 和和 C++ 等)越来越流行,因为它们被用于医疗设备软件中。等)越来越流行,因为它们被用于医疗设备软件中。
对所有的编程语言,他们的最后的目的其实就是两种:提高硬件的运行效率和提高程序员的开发效率。提高硬件的运行效率和提高程序员的开发效率。
遗憾的是,这两点是不可能并存的!你只能选一样。在提高硬件的运行效率这一方面,C语言没有竞争者!举个简单的例子,
实现一个列表,C语言用数组int a[3],经过编译以后变成了(基地址+偏移量)的方式。对于计算机来说,没有运算比加法更
快,没有任何一种方法比(基地址+偏移量)的存取方法更快。
C语言已经把硬件的运行效率压缩到了极致。语言已经把硬件的运行效率压缩到了极致。这种设计思想带来的问题就是易用性和安全性的缺失。例如,你不能在数组中混
合保存不同的类型,否则编译器没有办法计算正确的偏移量。同时C语言对于错误的偏移量也不闻不问,这就是C语言中臭名
昭著的越界问题。
C语言自诩的“相信程序员”都是漂亮的说辞,它的唯一目的就是快,要么飞速的运行,要么飞速的崩溃。C语言只关心程序飞
的高不高,不关心程序猿飞的累不累。就是这样!
现在来看看那些非现在来看看那些非C的语言,他们的长处都在于提高程序员的开发效率上。的语言,他们的长处都在于提高程序员的开发效率上。或者支持动态的列表,或者支持安全的列表。但是
加入任何的中间层,加入任何的安全检验,它不可能比(基地址+偏移量+无检验)的方式更快。这个世界上不存在“开发容
易,运行快”的语言,开发容易毕竟来源于对底层的一层一层又一层的包装。
现在回答两个最普遍的问题:
硬件这么便宜了,有必要让软件更快吗?硬件这么便宜了,有必要让软件更快吗?有这种疑问的人大部分都是网吧的固定客户,他们理解的计算机只在电脑城,他们理
解的计算只是游戏和播放硬盘中的小电影。不要玩个游戏开个挂就乐得不行不行的,别忘了还有全实景仿真,还有3D渲染,
还有自动驾驶。
人在开车的时候,每秒要收集60个不同的物体,然后根据这60个物体的不同组合和反映来做20个最重要的决定。然后从这20
多个决定中选一个执行。所以就算用上最快的硬件,自动驾驶现在还不敢说能像人那样开车。就算是自动驾驶成功了,下一步
还要自动飞行呢?因为我们老早就预言了:你咋不上天呢!
所以说:计算速度永远是不够的!因为新的应用会越来越复杂,越来也实时计算速度永远是不够的!因为新的应用会越来越复杂,越来也实时。。对了!我还忘了一个更重要的限制:计算的能
耗!NASA飞行器上的CPU最多就是32位的,说出来你可能不信,国际空间站上没有一个CPU是64位的,我猜一个最主要的
原因是航天员不爱看硬盘小电影吧。
另外一个流行的疑问是:我可以发明一种同样快的语言,但是没有C语言那么多的坑。想法是可以的,而且还真巧有这个语
言,真巧它的名字叫D语言,真巧没有太多的人用!这是因为一个基本的事实。
现在有太多,太多太多的C代码,他们大部分都在正常工作,就像Linux, Window, MacOS,Unix,Vxworks。你没有看错,这
些操作系统的内核都是C,我虽然不确定C在Window中所占的比例,但是我相信微软的人不会傻到用C#去全部改写一个操作
系统的内核。你想让这些人去用你的全新的语言,这就不是“有点”很傻,很天真了!
而且有些代码,我们根本就不能改!NASA一个简单的5个CPU飞控软件编写完毕后,要进行一种“全覆盖”测试。如果CPU A
坏了会发生什么?如果CPU A,B坏了呢?如果CPU A,C坏了呢。。。。?
如果你愿意,你可以做个简单的数学组合。测试完毕后,别说重写,就算加个注释都不行。因为主管payload的大妈会非常严
肃的质问你,为什么你上报的东西数量增加了,但是质量没有增加?你需要和她详细的解释:硬件和软件是不同的,硬件是那
种摸起来硬硬的东西,但是软件不是那种摸起来软软的东西。
看着大妈鄙夷的眼神,这个时候你会非常后悔自己手欠加入的哪一行注释。你还别不当真,这个是NASA的真实故事。
哪为什么C语言还下降这么多呢?很简单,有些任务本身就不是C语言的。我上学的时候还用C语言编过窗口界面呢?然后很
快微软的人就推出了MFC,就是一大堆宏把底层的C windowAPI包装了起来。
再后来这个技术也过时了。因为微软的人认识到,带有窗口的应用程序说到底不是C语言的本职工作,再这么一层一层包下去
就有露馅的危险,于是他们发明了一个全新的语言C#来负责这个任务。
Java也是这样,突出网络,易用,安全,跨平台。无论是Java, c#还是python, 他们都有意避开提高硬件的运行效率这个问
题,因为这个问题上没办法和C竞争,也无法撼动Linux, Unix,GNU tool这些已有C代码的位置。
剩下的就只是提高程序员的开发效率上大作文章。这对C语言是好事,把自己不善长的东西去掉,让自己跑的更快!
伴随着嵌入和实时系统的兴起,伴随着嵌入和实时系统的兴起,AI,机器人,自动驾驶等。这些都是,机器人,自动驾驶等。这些都是C语言的核心应用,而且在这种应用上面,语言的核心应用,而且在这种应用上面,C语言没有竞语言没有竞
争者。争者。所以我感觉C语言会稳定在自己核心的应用中,并开始逐步回升。(码农翻身注:赵老师预料对了,果然回升了。)
但是Java语言我个人不乐观。小型和灵活性上,Python更胜一筹。一行python代码后,你根本不知道自己还是不是duck类
型?平台领域,每个平台都推出自己专属的语言。Windows会继续支持C#,苹果偏爱Swift, Android推出Kotlin,Google用
go。Java宣称自己可以自由到每家做客,但是无论是到谁家,都会发现客厅里面坐着一个亲儿子,这个时候自己这个干儿子
多多少少有点尴尬。所以我猜测,最后Java会稳定在对跨平台有严格要求的,大型非实时应用上。
最后说点闲话,C++不会淘汰C语言。有了对象后你会发现再简朴的对象也耗费资源,而且有了对象以后,总是不由自主的去
想继承这个事,一但继承实现了,你会发现继承带来的麻烦远超过你的想象。Java的发明人James被问到如果可以从新设计
剩余7页未读,继续阅读
资源评论
weixin_38688969
- 粉丝: 3
- 资源: 939
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功