存在可能替代C语言的其余语言吗?

尽管C编程语言早在1972年就已发布,但它还是当今使用最普遍的语言之一,而且按照当今的标准存在许多限制和缺陷。
这就是为何应该替换C的关键缘由。太多关键软件都是用C / C ++编写的,其含义普遍。一个示例是OpenSSL之类的库中的错误。众所周知,C在捕获诸如缓冲区溢出之类的问题方面表现不佳。C是一种容许您以多种方式让本身陷入麻烦的语言。

 
可是若是C太糟糕了,为何尚未被替换呢?有不少缘由。在某种程度上,它已经被替换了。Java,C#,C ++和许多其余语言已经接管了之前用C完成的任务。
所以,这其实是关于剩下的那种软件,其中C仍然占主导地位:
  • 操做系统内核。如Linux
  • 微控制器
  • 视频编解码器
  • 共享的低级库,例如OpenSSL
  • Unix命令行工具,如ls,cat和git

 
为何C仍然主导着这些领域?由于到如今仍然没有找到完美的替代方案。
曾经有诸如D之类的语言,可是它具备C ++级别的复杂性,可能对C开发人员没有吸引力。它最初还要求进行垃圾收集,这极可能使其不适用于所提到的许多领域。您不想在尝试保持帧速率时启动垃圾收集器。
Go和Rust表现出可能性
我认为,对C和C ++的现代化表现出浓厚兴趣的第一个真实迹象是Go和Rust的日益普及。咱们看到过去一般使用C或C ++编写的许多典型工具如今都用Go或Rust编写。弹出了许多命令行工具,例如,已经用这些语言之一编写过。我 在这里 介绍了其中一些工具。您会看到人们试图用Rust编写游戏引擎。
LLVM:缺乏的难题
因为LLVM的成熟,现在,存在提供CI替代方案的很大一部分可能性。LLVM意味着生成高性能代码并针对许多平台的真正复杂的工做已解决。它使更多人能够进行语言开发。
Go和Rust为如何LLVM带来了一些启发,一些可能替代C的家庭手工业正在兴起:
  • Zig,我已经在 这里 和 这里 详细介绍了。
  • Odin ,看起来像Go的C替代品。
  • V语言 。另外一种相似C的语言,具备大量的Go和Rust启发。
什么是C替换语言?
要替换C,一般须要一种语言来适应C仍占主导地位的壁垒。并不是全部类型的语言都适合于此。所以,我列出的语言具备许多共同点,能够替代C:
  • 现有的C库易于重用。Ada,Modula-2等在很大程度上失败了,由于您没法在大型C生态系统中有效使用它们。
  • 以已创建的知识和惯例为基础。Go确实很快就可使用,由于尽管语法有所更改,但API和编码方式与C程序员很是类似。
  • 没有垃圾收集/手动内存管理。C在须要严格控制内存使用的区域中占主导地位。在这个空间中,垃圾收集机制不会动摇它。这就是阻止Go彻底替代C的缘由。
  • 小二进制文件。像C同样,Zig例如容许您制做很小的二进制文件。若是要在嵌入式空间中使用其余语言,则不能使用会产生较大二进制代码的语言(例如Go)。
  • 系统级友好。您须要可以操纵位和字节。您须要良好的二进制运算符和指针。在过去的几十年中,许多语言都没有正确的指针。Java使指针成为一个脏话,但Go却部分地将其带回来。
  • 逐步替换C代码。与C具备很好的二进制兼容性。
让咱们扩展最后一点。若是这意味着您须要一次性重写整个程序,那么甚至没有人会开始着手替换现有的C基础结构。以个人经验,能够轻松地从Objective-C过渡到Swift的一件事是,我实际上能够一次重写一个方法,从新编译并测试该程序。
使用诸如Zig之类的语言,您能够轻松地作到这一点。

 
C语言是很古老的一门语言,如今仍旧在编程语言里有不可替代性。C语言也是编程学习者们要学习的第一门语言。
 

若是你也想要自学C语言,接受全面系统的指导。这里有一个交流群推荐给你。不管是小白仍是进阶者,在这里都能得到成长。群内含有,学习书籍电子书资源,素材包,还有免费教学课程哦~git

相关文章
相关标签/搜索