【问题标题】:High-level system language that compiles to c?编译为 c 的高级系统语言?
【发布时间】:2012-03-20 02:27:04
【问题描述】:

如果可能的话,我正在寻找一种更高级的系统语言,它适用于形式验证,可以编译为标准 C,以便它可以跨平台运行,并且(相对)低开销。

过去几天我偶然发现的两种最有前途的此类语言是:

  1. BitC - 虽然这种语言的设计目标符合我的需求(它甚至支持功能范式),但它处于非常不稳定的状态,文档已过时,而且通常看起来非常现实世界项目的远景。

  2. Lisaac - 它支持按合同设计,非常酷并且性能开销相对较低。但是该网站已经死了,自 08 年以来就没有新版本了,而且通常看起来语言已经死了。

我还想指出,它不适用于实时系统,因此 GC 或通常的非确定性(在实时意义上)不是问题。

该项目主要涉及音频处理,但必须是跨平台的。

我想有人会指出一个显而易见的答案——“plain ol' C”。虽然它确实是跨平台的并且非常有效,但代码量可能会更大。

编辑:我应该澄清我的意思是跨平台和跨架构。这就是为什么我只考虑语言,首先编译成 C,但如果你能指出另一个例子,我将不胜感激:)

【问题讨论】:

  • 你看过 C++ 吗?它(是|可以是)一种高级系统语言。
  • 是的,但我觉得 C++ 引入的复杂性不值得额外的麻烦。另外,地球上的每个编译器都支持语言标准的不同部分,并且具有例如例外,就是一团糟。 RTTI 和通常使 C++ 更高级别的每个特性也是如此。
  • 如果你真的不喜欢 C++,你可以看看 D,它有一个 GC 等等,比 C++ 简单。虽然它不太受欢迎,也没有那么多库,但它可以像 C++ 一样与 C 代码互操作。这些语言实际上都没有编译成 C,它们编译成机器代码。
  • 好的,我希望你能找到你要找的东西。

标签: c programming-languages cross-platform high-level


【解决方案1】:

我想你可能会对ATS 感兴趣。它编译为 C (实际上它从形式类型理论的角度表达和解释了许多 C 习语和模式,甚至有人提议准备一本书来展示这一点——如果我们有更多的时间......)。

该项目主要涉及音频处理,但必须是跨平台的。

我对音频处理了解不多,我主要是在做一些计算机图形学的东西(主要是基本的东西,只是为了尝试一下)。

另外,我不确定 ATS 是否适用于 Windows(从未尝试过)。

(免责声明:我使用 ATS 已经有一段时间了。它是庞大而庞大的语言,有时难以使用,但我非常喜欢我能够使用它制作的程序的质量,因为例如,一些实际程序见GLES2 bindings中的TEST子目录)

【讨论】:

  • +1,这是我所需要的最接近的答案,但乍一看,生成的 C 代码似乎只需要由 GCC 编译,尽管它在许多平台上运行,并非无处不在。
  • @K.Steff,如果您真的需要一种可以编译为 C 并且可以由 any C 编译器编译的语言,那么这是一个问题。但是,我认为您现在可以选择一些适合您需要的特定编译器(例如 GCC 和 Clang)。然后我们可以一起工作,使 ATS 可以通过 Clang 编译(我记得上次我尝试 C 文件确实用 Clang 编译,但是有一些“丢失”的标题,所以......)。如果您需要一些异国情调的平台/编译器,请更具体;也许我们也可以解决。
【解决方案2】:

以下内容并不严格遵守要求,但我还是想提一下,评论太长了:

Pypy 的 RPython 可以翻译成 C.Here's a nice talk about it。它已用于实现Smalltalk, JavaScript, Io, Scheme, Gameboy(具有不同程度的完整性),但您可以在其中编写独立程序。它主要以其实现runs on Intel x86 (IA-32) and x86_64 platforms的Python语言而闻名。

翻译过程需要有能力的 C 编译器。工具链提供了推断代码(由翻译过程本身使用)的各种方法的方法,您可以将其重新用于形式验证。

如果您同时了解 Python 和 C,则可以使用 cython 将类似 Python 的语法转换为 C。它用于编写 CPython 扩展。

【讨论】:

  • 谢谢,这个东西很有用,我去查一下:)
猜你喜欢
  • 2019-12-12
  • 2020-04-22
  • 2014-12-14
  • 2020-02-16
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多