这篇博客文章是这一系列解释如何将Rust发射到地球以外的许多星系的文章的一部分: 前奏, WebAssembly 星系 ASM.js星系 C星系(当前这一集) PHP星系,以及 NodeJS 星系 今天将要探索的是C语
这篇博客文章是这一系列解释如何将Rust发射到地球以外的许多星系的文章的一部分:
- 前奏,
- WebAssembly 星系
- ASM.js星系
- C星系(当前这一集)
- PHP星系,以及
- NodeJS 星系
今天将要探索的是C语言星系。这篇文章会解释什么是C语言(比较简要),理论上怎样编译Rust供C使用,以及如何在实际使用从Rust和C两方面来实现我们的Rust解析器。我们还将看到如何测试这样的绑定。
什么是C语言,为什么有C?
C应该是在全球范围内被应用和被知道的最为广泛的一种编程语言。Wikipedia的引用:
C[...] 是一种通用的命令式计算机编程语言,支持结构化编程、词法变量作用域和递归,而静态类型系统可以防止许多意外操作。通过设计,C提供了有效地映射到典型机器指令的构造,因此它在以前用汇编语言编码的应用程序中得到了持久的使用,包括操作系统,以及从超级计算机到嵌入式系统的各种计算机应用软件。
Dennis Ritchie, C语言的发明者.
C语言对编程语言世界的影响可能是史无前例的。从操作系统开始以及之上的几乎所有的东西都是用C语言写的。今天,它是世界上为数不多的通用标准,链接任何机器上的任何系统上的任何程序。换句话说,与C语言兼容为所有事情打开了一扇大门。您的程序将能够直接与任何程序轻松对话。
因为像PHP或Python这样的语言都是用C语言编写的,在我们特定的Gutenberg解析器用例中,这意味着解析器可以被PHP或Python直接嵌入和使用,几乎没有开销。非常整洁!