C语言会被替代吗?

众所周知,C 是一种广泛非常使用的语言,从操作系统内核到加密算法的编写,到处都在使用 C。如今,我们是否应该用另一种语言来替换 C 呢?
尽管C 语言发布于 1972 年,但至今仍是使用最广泛的语言之一,同时按照如今的标准来看,C 语言也存在许多限制和缺陷。

有人希望用另一种语言来替换 C 的关键原因也正在于此。用 C/C++ 编写的关键性软件实在太多了,但 C/C++ 中包含大量的“潜规则”。举个例子 OpenSSL 库中的 bug 就源于此。众所周知,C 语言非常不善于处理类似于缓冲溢出的问题。C 语言中的“坑”实在太多了。
C 语言没有类型安全,对于热衷于动态语言的人来说,这听起来可能有些奇怪。而 Python 或 Julia 等动态语言就可以捕捉到错误的类型用法,例如在 if 语句中使用整数的错误。虽然动态语言无法在编译时捕捉到这类问题,但如果它们具有强大的类型系统,那么就可以在运行时捕捉到很多问题。这对于安全性特别重要。在很大程度上,安全漏洞都会引发未定义的行为,而不会正常终止程序。
话说回来,如果 C 语言如此之糟糕,那么为什么还没有被替换掉呢?其中的原因很多。其实在某些地方,它已经被替换了。以前很多用 C 处理的任务如今都改用 Java、C#、C++ 以及其他语言了。
因此,我们需要深挖一下究竟还有哪些软件仍然以 C 语言为主:
操作系统内核。例如 Linux 等
微控制器,视频编解码器,底层共享库,例如 OpenSSL 等,Unix 命令行工具,例如 ls、cat 和 git 等
为什么这些领域仍然由 C 语言主导?因为直到最近,我们也没有更好的替代 C 语言的方案。
上个世纪 90 年代,许多语言(例如 Java、C#、VB.NET 和 F#)都将重点放在创建垃圾收集上。对于上述领域来说,这些语言都不是好的解决方案。
除此之外,还有其他 80 年代和 90 年代出现的语言,例如 Perl、Python、Ruby 和 JavaScript 等,它们都不适合这些任务。
当然,我们还有一些其他静态类型的语言,例如 Ada、Modula-2 等。但是,一般情况下,这些语言都很难与开发人员的技术结合,也很难与已有的 C 语言库配合使用。
还有 D 等其他语言,但是其复杂性与 C++ 差不多,因此对 C 开发人员没有吸引力。而且,最初它也需要垃圾收集,所以可能并不适合上述提到的许多领域。如果你开发的应用程序需要保持很高的帧速率,那肯定不希望启动垃圾收集。

8b19b54ae0ce48d99443e407bec2ab9f.png

今日学习寄语:

1、最累的时候,家人是你最好的归宿。

  2、程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。

  3、编程是一种单调的生活,因此程序员比普通人需要更多的关怀,更多的友情。

  4、程序不是年轻的专利,但是,他属于年轻。

  5、没有情调,不懂浪漫,也许这是程序员的一面,但拥有朴实无华的爱是他们的另一面。

  6、一个好汉三个帮,程序员同样如此。

  7、一个100行的代码调试都可能会让程序员遇到很多挫折,所以,面对挫折,我们永远不能低头。

  8、调试完一个动态连接函数,固然值得兴奋,但真正的成功远还在无数个函数之后。

  9、程序是我的生命,但我相信爱她甚过爱我的生命。

  10、信念和目标,必须永远洋溢在程序员内心。

  11、就算我们站在群山之颠,也别忘记雄鹰依旧能从我们头顶飞过。骄傲是比用Java进行底层开发更可笑的东西。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿阿存

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值