首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >领域特定语言如何帮助弥合语义鸿沟?

领域特定语言如何帮助弥合语义鸿沟?
EN

Stack Overflow用户
提问于 2021-02-02 11:37:56
回答 1查看 41关注 0票数 1

当我读到系统编程时,我发现了语义鸿沟,以及我们如何为更好的软件开发搭建桥梁。

然后出现了编程语言领域这一术语,它显然弥合了语义鸿沟,但同时也填补了规范和执行的鸿沟。有没有人可以举个例子给我解释一下?

semantic gap

addition of PL domain

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-02 20:32:01

当在特定的应用程序域中工作时,您需要考虑该域的概念。例如,如果您正在为律师开发软件,您将在以下概念中工作和思考:法案、法规、法律、段落等。

另一方面,执行平台是软件最终运行的地方(物理机或虚拟机)。在那个领域,你有完全不同的概念:栈、寄存器、指令等。

必须有人或某事将解决方案的模型从应用程序域转换到执行域。语义上的差距是巨大的。通用语言( General-purpose languages,GPLs)通过使用更容易使用的更高级别的抽象(例如,类、对象、方法、函数、参数、集合)来缓解这个问题。因此,不是直接将解决方案翻译到机器上,而是手动将其翻译成编程语言,弥合规范差距,然后编译器机械地将其翻译到目标机器(或许多不同的机器),以弥补执行差距。在将概念从应用程序领域转换为GPL时,仍然需要大量的手动工作。

领域特定语言(DSL)更进一步。它们基于应用程序域中的概念。因此,DSL中的解决方案规范应该是简单的1:1映射。应用程序域和规范之间没有差距。DSL规范现在被机械地翻译(通常在多个步骤中,例如DSL->GPL->机器码)到目标执行平台。

要进一步阅读有关弥合语义鸿沟的主题,我建议阅读Martin Ward和Sergey Dmitriev关于面向语言的编程主题的论文。要阅读更多关于领域特定语言的一般知识,我推荐Markus Voelter的一本书"DSL工程:设计、实现和使用领域特定语言“。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66003306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档