为什么C和C 难以被取代?
时间:2021-10-08 16:44:19
手机看文章
扫描二维码
随时随地手机看文章
[导读]大家好,我是张巧龙。大家应该发现了,近些年编程语言发展很快,各种新编程语言非常多,有些热门编程语言如Pythonjsgoswift等迅速流行了起来,使用者越来越多。但是在嵌入式开发领域,C和C却是YYDS,几十年一直排名前列,甚至是唯一的选择。这是为什么呢?难道没有其他语言能取代...
大家好,我是张巧龙。
大家应该发现了,近些年编程语言发展很快,各种新编程语言非常多,有些热门编程语言如Python js go swift等迅速流行了起来,使用者越来越多。
但是在嵌入式开发领域,C和C 却是YYDS,几十年一直排名前列,甚至是唯一的选择。
这是为什么呢?难道没有其他语言能取代C/C 吗?
我个人认为确实很难有。即使技术上有了(如rust)也很难真的流行起来,在市场使用上打败C/C 。原因有这么几个。
原因1:人们总是倾向于使用自己熟悉的技术,总是在不得不改变时才会去改变。
C和C 经过几十年的发展,已经培养了大量的成熟开发者,孵化了大量优质项目和基础软件,这些都是全人类全行业的优质基础设施资产,不可能丢弃,也没必要重写,继续使用是非常合理的选择。
你想让这些成熟开发者放弃C和C 去用某种新语言,除非有非常明确且充分的理由,有大的好处,否则没人会理你。也许你的新语言会好一些,但是没有带来本质优势的95分到99分的好,其实很难说服成熟的传统开发者。
毕竟,人都是念旧的。
原因2:C和C 从技术上已经很难被优化了。
因为这两个语言已经是直接操作内存,并且都支持很好的指针操作,内存对象的建立和维护。熟悉汇编语言和CPU指令集的同学们就会清楚,这些特性和硬件层已经深度接轨,效率最高了。
所以不管是java,还是js,python,他们本质上都是在更上层和人(程序员)接轨的部分在做文章,提供更多编程者觉得更好用的特性(譬如垃圾回收机制),然后在内部又使用C和C 式的内存对象建立和管理来实现这些特性。
所以你对这些有所了解后就会发现,在和硬件接轨的嵌入式开发领域,技术上确实很难去优化C和C 了。除非CPU自己发生很大的变化,譬如打破了冯诺依曼结构,否则C和C 稳如泰山。
那在性能上没文章做,在靠近程序员的易用性和语法安全上是否可以优化呢?当然可以,实际上java和go,rust等语言就是这样的思路。
但是要么就是要牺牲效率导致嵌入式领域不想用,要么就是必要性不大发展缓慢推动艰难。rust目前看来最有希望,但是仍然很幼小,继续观望吧!
最后,C和C 本身都是开放使用的。既没有限制任何人使用,又不用付费,没有隐患,为什么不用他呢?
综合以上,大家就会明白为什么这俩兄弟这么强,并将一直强下去!
大家如何看待呢?欢迎在留言区讨论,截止到10月8号12点前,点赞前三位同学将获取三个红包(88.88、66.66、33.33)
大家应该发现了,近些年编程语言发展很快,各种新编程语言非常多,有些热门编程语言如Python js go swift等迅速流行了起来,使用者越来越多。
但是在嵌入式开发领域,C和C 却是YYDS,几十年一直排名前列,甚至是唯一的选择。
这是为什么呢?难道没有其他语言能取代C/C 吗?
我个人认为确实很难有。即使技术上有了(如rust)也很难真的流行起来,在市场使用上打败C/C 。原因有这么几个。
原因1:人们总是倾向于使用自己熟悉的技术,总是在不得不改变时才会去改变。
C和C 经过几十年的发展,已经培养了大量的成熟开发者,孵化了大量优质项目和基础软件,这些都是全人类全行业的优质基础设施资产,不可能丢弃,也没必要重写,继续使用是非常合理的选择。
你想让这些成熟开发者放弃C和C 去用某种新语言,除非有非常明确且充分的理由,有大的好处,否则没人会理你。也许你的新语言会好一些,但是没有带来本质优势的95分到99分的好,其实很难说服成熟的传统开发者。
毕竟,人都是念旧的。
原因2:C和C 从技术上已经很难被优化了。
因为这两个语言已经是直接操作内存,并且都支持很好的指针操作,内存对象的建立和维护。熟悉汇编语言和CPU指令集的同学们就会清楚,这些特性和硬件层已经深度接轨,效率最高了。
所以不管是java,还是js,python,他们本质上都是在更上层和人(程序员)接轨的部分在做文章,提供更多编程者觉得更好用的特性(譬如垃圾回收机制),然后在内部又使用C和C 式的内存对象建立和管理来实现这些特性。
所以你对这些有所了解后就会发现,在和硬件接轨的嵌入式开发领域,技术上确实很难去优化C和C 了。除非CPU自己发生很大的变化,譬如打破了冯诺依曼结构,否则C和C 稳如泰山。
那在性能上没文章做,在靠近程序员的易用性和语法安全上是否可以优化呢?当然可以,实际上java和go,rust等语言就是这样的思路。
但是要么就是要牺牲效率导致嵌入式领域不想用,要么就是必要性不大发展缓慢推动艰难。rust目前看来最有希望,但是仍然很幼小,继续观望吧!
最后,C和C 本身都是开放使用的。既没有限制任何人使用,又不用付费,没有隐患,为什么不用他呢?
综合以上,大家就会明白为什么这俩兄弟这么强,并将一直强下去!
大家如何看待呢?欢迎在留言区讨论,截止到10月8号12点前,点赞前三位同学将获取三个红包(88.88、66.66、33.33)