存在可能替代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语言也是编程学习者们要学习的第一门语言。

(0)

相关推荐

  • 有人说C++20变得越来越陌生,从颜值派到理性派,浅谈对C++的看法!

    背景 之前看到了一篇很有意思的帖子"C++20会变得陌生".楼主贴出了分别用C++11 和 C++20编写的代码,如下:   以上代码实现了数据操作: ● 从向量v里筛选出偶数的元 ...

  • 「技术分享」WebAssembly能否重新定义前端开发模式?

    如果提及近年来让人最为兴奋的新技术,非WebAssembly 莫属.作为一种低级的类汇编语言,WebAssembly以紧凑二进制的格式存储,为C/C++, Rust等拥有低级内存的模型语言提供了新的编 ...

  • 为什么我十分喜欢C却很不喜欢C(尽管你可以在 Excel 中编写光线追踪程序但最好还是使用其他语言)

    (尽管你可以在 Excel 中编写光线追踪程序但最好还是使用其他语言) https://m.toutiao.com/is/eXb3Ueb/ 以下为译文: 为什么说C不是最好的语言? 首先,这个世上没有 ...

  • Rust是一场革命

    Rust是一场真正的革命. 所有的软件用RUST重新写一遍是值得的,应该的. C语言最大的问题是底层操作太多,虽然高效但是没有意义. Rust是一个真正的高级语言,很简单的事情都要说得很复杂.这是应该 ...

  • Rust vs. Go:为什么强强联合会更好

    本文翻译自乔纳森·特纳(Jonathan Turner)和史蒂夫·弗朗西亚(Steve Francia)的文章<Rust vs. Go: Why They're Better Together& ...

  • 胡盼:艺术的语言才能表现出语言的艺术(略谈)

    今天下午,听了一位同事上了数学公开课,其课堂语言运用让我对此有了自己的见解及自我反思. 教师的语言是课堂上最具有表现力的.如果运用得当,会有事半功倍的效果,反之则会出现问题甚至造成伤害. 镜头一:开课 ...

  • 初学编程,如何玩转C语言?C语言中最重要的知识献上!

    一.C语言的指针 1.指针说明 指针是包含另一变量的地址变量. (1)int *p p是一个指针,指向一个整形数. (2)int *p() p是一个函数,该函数返回一个指向整数的指针. (3)int ...

  • 第005节:Go语言和其他语言的对比

    一.Go语言设计初衷 1.设计Go语言是为了解决当时Google开发遇到的问题: 大量的C++代码,同时又引入了Java和Python 成千上万的工程师 数以万计行的代码 分布式的编译系统 数百万的服 ...

  • 积极语言与消极语言

    请了6个孩子帮助录一个叠杯子的步骤视频.看到高高架在头顶的摄像机,孩子们很紧张,做起来反倒没有上课那天来得流畅顺利. "上课那天,你们可是只花了30秒钟,就已经完成了哟!"我尝试着 ...

  • 多种语言的AI语言翻译

    GoogleTranslate运作良好,通常看起来像魔术.但这不是魔术,而是深度学习! 在本系列文章中,我们将向您展示如何使用深度学习创建自动翻译系统.本系列可以视为分步教程,可以帮助您了解和构建Ne ...

  • 诗词语言对传统语言习惯的逆反——越逆反,越经典

    西方结构主义诗论对于诗歌语言的特征,有着非常精到的观点.它认为,诗歌语言是对常规语言的系统违反. 省略的字词虽多,表达的内容依然丰富 诗词语言与散文有明显不同.散文中会有很多虚字,如'之.乎.者.也. ...

  • 如何学习SCL语言?SCL语言编程入门

    随着现代工控技术的不断发展,可能很多使用过 PLC 的技术人员都有这么一个感受: 传统的'梯形图'编程方式在面对越来越复杂的控制要求时,已显得力不从心. 其实,现在很多大品牌的中高级 PLC 都支持国 ...

  • 音乐语言与日常语言

    音乐语言大讨论(一) 人类一思考 上帝就发笑 人类不思考 上帝都不屑一笑 I. Allegro (第一乐章 快板)Clara Haskil;Arthur Grumiaux - Vintage Pian ...

  • 那些 Go 语言实现的语言现在发展怎么样了?

    原创 站长polaris polarisxu 1周前 大家好,我是站长 polarisxu. Go 是一门通用编程语言,Go1.5 实现了自举,也就是说,Go 语言是用它自身实现的.经过十来年的发展, ...