编程语言编译器和数据库编译器有什么区别?

时间:2016-05-29 14:54:38

标签: database compiler-construction programming-languages

我对数据库编译器比较熟悉,但对编程语言编译器则不熟悉。我开始阅读Crafting a compiler以帮助我更好地理解编程语言编译器。但是,我想知道是否有人可以提供可能有什么区别的大图?非常感谢!

1 个答案:

答案 0 :(得分:1)

假设您正在使用数据库编译器编译SQL。 SQL是第四代语言(4GL)。

因此,您的编译器将花费大量资源来确定满足程序员请求的最佳方法。例如,可以使用各种不同的查询计划来执行 select 语句来获取数据。

程序员只指示要做什么,而不是确切地说如何做。数据库编译器的任务就是解决所有问题。

相比之下,编程语言编译器(比如说3GL)只是通过程序员指示的一系列指令来完成。

数据库编译器和编程语言编译器将以相同的方式开始。也就是说,在检查语法时将指令解析为数据结构。

之后,它发散了。编程语言编译器将尝试生成目标平台的本机语句。这可能涉及汇编语言(2GL)步骤,链接等。

相反,数据库编译器(或RDBMS)将关注确定处理请求的最佳方式。您的数据库编译器可能永远不必处理2GL和类似的东西。