我必须为我本学期要上的类(class)创建一种新语言和该语言的编译器 - 这意味着截止日期大约是 3.5 个月。我读过 OCaml 是编写编译器的更好语言之一,但我以前没有使用它的经验。因此,我的问题如下:尝试使用我已经熟悉的语言(Java、C、C++)创建编译器,或者花一些时间来学习 OCaml 并使用它是更好的主意吗?
最佳答案
这取决于您如何评估每个选择的兴趣。
如果您的目标是尽快完成类(class)项目,那么坚持使用您已经熟悉的工具可能是最佳选择。语言很重要,我确实相信 ML 语言最适合编写编译器,但在短期内,熟悉语言、工具、错误消息和常见习语可能会胜过与语言相关的生产力优势。或者至少在垃圾收集语言中;您可以使用 C 提高效率,但您必须非常了解该语言(在这种情况下,您可能不会将它归为 C++ 和 Java)。
如果您对构建编译器和更一般的语言工具感兴趣,或者在类(class)结束后学习编程语言,那么学习静态类型函数式语言当然是一项值得的投资,而编译器类(class)是这样做的绝佳借口。
编辑:一些指针
rgrinberg 的有用评论提醒我指向您 MinCaml作为一种可能的灵感来源。
我的第一个想法是 Andrew Appel 所著的“{C,Java,ML} 中的编译器实现”一书,但正如亚马逊评论所说,这本书太先进了,不能用作编译器或机器学习的介绍。
安德烈的鲍尔 Programming Language Zoo也是一个很好的资源,但它更倾向于通过解释器实现发现各种各样的编程语言,而不是编译本身(尽管一些动物园动物被编译为抽象机器)。
关于compiler-construction - 创建编译器 : Learn OCaml or Stick With Java/C/C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14632870/