• 谁能撼动C语言的霸主地位?是Go?是Rust?还是...


    尽管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的家庭手工业正在兴起:

    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之类的语言,您可以轻松地做到这一点。


     

    最后,如果你也想成为程序员,想要快速掌握编程,赶紧加入学习企鹅圈子!

    里面有资深专业软件开发工程师,在线解答你的所有疑惑~编程语言入门“so easy”

    编程学习书籍:


     

    编程学习视频:


     
  • 相关阅读:
    课程总结
    课程总结
    十四周实验报告&&课程总结
    记事本代码
    第十三周课程总结
    第十二周课程报告
    PTA实验 链表拼接 (20point(s))
    课程总结
    第十四周课程总结&实验报告
    第十三周课程总结
  • 原文地址:https://www.cnblogs.com/mu-ge/p/14105818.html
Copyright © 2020-2023  润新知