我目前正在玩编程语言。我花了一些时间用高级语言编写解析器和解释器(最着名的是Haxe)。
我有一些结果,我认为其实很不错,但现在我想让它们变得快速。
我的想法是将输入语言翻译成C.
我的C知识仅限于你在大学学到的知识。除了一些练习,我从未编写过实际的C程序。但我相信我能让它发挥作用。
当然,我可以尝试为LLVM编写前端或生成MSIL或JVM字节码。但是我觉得现在学到的东西太多了,实际上并没有太大的收获 C也完全是人类可读的,所以如果我搞砸了,理解其中的原因要容易得多。毕竟,C是高水平的。我可以真正地从输入语言中翻译概念,而不需要过多的思维弯曲。我应该在合理的时间内完成一些工作并运行,然后根据需要对其进行优化。
所以:使用C有什么缺点吗?你能推荐一个替代方案吗?
感谢您的见解:))
编辑:一些澄清
答案 0 :(得分:6)
不过,请看一下LLVM的中间语言(IR)。它具有很强的可读性,我认为它比C更清晰,更容易生成和解析.LLVM附带了大量的工具来处理它。您可以为各种平台生成本机代码(与C一样,但对输出稍微控制一些)或虚拟机。 JIT编译的可能性也是一个优势。
有关LLVM方法和IR的一些片段的介绍,请参阅The Architecture of Open Source Applications, Chapter 11。
您的目标环境是什么?这可能有助于我们为您提供更好的答案。
答案 1 :(得分:2)
其他语言也可以使用 - C的主要优点是无处不在。
答案 2 :(得分:2)
您可能会考虑使用C--,这是一种类似C语言,旨在成为比C更好的代码生成目标。
答案 3 :(得分:0)
因为语法在C(括号和大括号,块和语句,表达式的使用)中非常一致,所以你不会进入无限的语言扩展世界。 C是一种成熟的语言,已经很好地度过了时间,现在是一个“已知数量”(很难说很多其他语言,甚至是“成熟”语言)。