compiler-construction - 创建编译器 : Learn OCaml or Stick With Java/C/C++

标签 compiler-construction programming-languages ocaml

我必须为我本学期要上的类(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/

相关文章:

java - 没有大括号的 if 子句出现奇怪的编译器错误

c# - CLR 编译器优化示例

linux - 知道 OCaml IDE 吗?

list - 如何在 OCaml 中将字符列表转换为字符串?

windows - 使用 Indy 组件发送电子邮件

c++ - G++ 编译,但没有任何反应

programming-languages - 为什么大多数编程语言中没有更多的控制结构?

Python 语法糖 : function arg aliases

c# - 想开始编程

installation - OCaml 安装,找不到二进制文件