【发布时间】:2011-09-14 20:45:18
【问题描述】:
我目前正在玩编程语言。我花了一些时间用高级语言(最著名的是 Haxe)编写解析器和解释器。
我得到了一些结果,我认为它们实际上相当不错,但现在我想让它们变得更快。
我的想法是将输入语言翻译成 C。
我的 C 知识仅限于你在大学里学到的东西。除了一些练习之外,我从未编写过真正的 C 程序。但我有信心我可以让它发挥作用。
当然,我可以尝试为 LLVM 编写前端或生成 MSIL 或 JVM 字节码。但是我觉得现在要学的东西太多了,实际上我并没有看到太多的收获。
C 语言也完全是人类可读的,所以如果我搞砸了,更容易理解为什么。毕竟,C 是高级别的。我真的可以从输入语言中翻译概念,而无需费神费力。我应该在合理的时间内启动并运行一些东西,然后在我认为合适的时候对其进行优化。
那么:使用 C 有什么缺点吗?你能推荐一个替代品吗?
感谢您的洞察力:)
编辑:一些澄清
- 我想一路走下去的原因是,我正在编写一种支持 OOP 的语言,并且我想手动实现我的方法调度,因为我有一些非常具体的想法。
- 主要使用领域是编写 HTTP 服务,但我可以想象将绑定添加到 GUI 库(可能是 wxWidgets)或其他任何东西。
【问题讨论】:
-
我能想到的大多数编译器都会在原生转到 C 之前采取中间步骤,所以,是的,我认为 C 是一个不错的选择,尤其是因为它自动为您提供了很大的可移植性。如果您的语言是面向对象的,那么您可能会更好地翻译成 C++ 或 Objective-C;同样,如果它是功能性的,你可能有更好的时间翻译到 Haskell。
-
@Rafe Kettler:将其发布为答案,为什么要限制评论? :)
标签: c compiler-construction intermediate-code