Programming languages 创建编程语言和编译器设计。他们有关系吗?

Programming languages 创建编程语言和编译器设计。他们有关系吗?,programming-languages,compiler-construction,Programming Languages,Compiler Construction,好吧,我想这个问题已经被问了很多次了 我想创建一种编程语言,不一定从今天开始,但需要2-3年的时间。我不是一个很好的程序员,但我正在改进。我想问的是,创建一种语言和编写一个编译器有多紧密的关系 因为,编译器将一种语言从一种形式转换成另一种形式,所以我想这一切都是关于为一段特定的文本编写编译器。因此,如果我学习编译器设计,我是否能够编写自己的编程语言?火影忍者,这取决于你想要创建什么样的“语言”。如果它很简单,只是为了学习语言,而你选择了语法等等,那么你就不需要了解很多编程知识。但是,如果你要处理

好吧,我想这个问题已经被问了很多次了

我想创建一种编程语言,不一定从今天开始,但需要2-3年的时间。我不是一个很好的程序员,但我正在改进。我想问的是,创建一种语言和编写一个编译器有多紧密的关系


因为,编译器将一种语言从一种形式转换成另一种形式,所以我想这一切都是关于为一段特定的文本编写编译器。因此,如果我学习编译器设计,我是否能够编写自己的编程语言?

火影忍者,这取决于你想要创建什么样的“语言”。如果它很简单,只是为了学习语言,而你选择了语法等等,那么你就不需要了解很多编程知识。但是,如果你要处理一个严肃的问题,你必须深入学习至少一种计算机编程语言,不仅要使用它,还要尝试达到它的几个概念,例如,OO、泛型、lambda表达式等


相信我,这不是几个月的任务,而是一次严肃的旅程。无论如何,我祝你好运;)

密切相关。你真的没有一种语言,除非你有办法把它解释/编译成一种可执行的形式。

你可以设计一种编程语言,而不必知道如何实现编译器,反之亦然。语言设计者可以为该语言编写一个规范,然后编译器实现者可以采用该规范并创建编译器

但是,如果这是一个个人项目,那么您可能需要学习如何同时完成这两项工作。没有编译器的编程语言纯粹是理论上的,如果不使用它编写和执行真正的程序,就很难判断一种编程语言有多好。即使您确实找到了愿意为您实现编译器的人,您也可能不希望每次有新想法要尝试时都要等待那个人,因此您需要知道如何自己实现它


实现一个编译器是一个相当高级的编程项目,所以如果你刚刚开始作为一个程序员,你有一个陡峭的学习曲线在你前面。您可能希望首先查看的教程和示例,尽管这可能不是适合您的语言的编译器基础结构。

这取决于您所说的“编译器”是什么意思。编译器/解释器通常由两大部分组成:解析器部分,用于读取语言中的文本并从中构建内部结构(AST);代码生成/解释部分,用于读取AST并将其转换为机器码或字节码。虽然您肯定需要知道如何为您的语言编写解析器,但代码生成并不那么重要,至少在早期阶段是如此。您可以从简单地将您的语言翻译成C开始,然后看看您将从那里走到哪里。

这就是我想做的。我买了Aho、Lam、Sethi和Ullman的《编译器:原理、技术和工具》。让我们看看我离那里有多远。