首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何判断库的执行模型是否与其基本语言的执行模型相同或不同?

如何判断库的执行模型是否与其基本语言的执行模型相同或不同?
EN

Software Engineering用户
提问于 2021-02-03 17:16:32
回答 1查看 175关注 0票数 0

https://en.wikipedia.org/wiki/Execution_模型

编程语言由语法/语法和执行模型组成。执行模型指定语言元素的行为。通过应用执行模型,可以导出用该编程语言编写的程序的行为。例如,当程序员“阅读”代码时,在他们的脑海中,他们会遍历每一行代码所做的事情。实际上,他们模拟了他们内心的行为。程序员所做的是将执行模型应用于代码,这将导致代码的行为。每一种编程语言都有一个执行模型,该模型确定工作单元(由程序语法指示)的执行方式。操作语义是一种指定语言执行模型的方法。运行程序的观察到的行为必须与从操作语义派生的行为相匹配(操作语义定义语言的执行模型)。执行模型涵盖的内容包括什么是不可分割的工作单元,以及对这些工作单元可能发生的顺序的限制。例如,加法操作在许多语言中是一个不可分割的工作单元,而在顺序语言中,这种工作单元被限制一个接一个地进行。

编程语言的操作语义和语言的执行模型是完全相同的吗?在我看来,https://en.wikipedia.org/wiki/Operational_语义学是这样的:

操作语义是一种形式编程语言语义,它通过从程序执行和过程的逻辑语句中构造证据来验证程序的某些期望属性,如正确性、安全性或安全性。

除了操作语义之外,还有什么其他方法来指定语言的执行模型?

https://en.wikipedia.org/wiki/Programming_模型

编程模型是指通过调用看似是库的调用来调用执行的编程风格。示例包括POSIX线程库和Hadoop的MapReduce.1,在这两种情况下,执行模型都不同于编写代码的基本语言。例如,C编程语言没有输入/输出或线程行为的执行模型。但是这种行为可以从C语法中调用,方法是调用一个普通的C库。编程模型与普通库的区别在于,调用的行为不能用程序所用的语言来理解。例如,调用POSIX线程库的行为不能用C语言来理解。原因是调用调用的执行模型与语言的执行模型不同。与编程语言相比,外部执行模型的这种调用是编程模型的定义特征。

如何判断库的执行模型是否与其基本语言的执行模型相同或不同?也就是说,我如何判断一个库是一个编程模型还是一个普通库?

谢谢。

EN

回答 1

Software Engineering用户

发布于 2021-02-03 20:42:15

编程语言的操作语义和语言的执行模型是完全相同的吗?

不是的。在你引用的课文中也有同样的意思。操作语义定义了语言的执行模型。一个跟着另一个。

有什么关系呢?语言的执行模型描述在语言中执行某些指令时将发生的行为。操作语义描述了证明。该语言的执行模型属于软件工程的范畴,由语言规范来描述,而操作语义则直接属于计算机科学领域,并由数学描述。

作为一名软件工程师,你是否需要了解一种语言的操作语义?可能不会,除非您正在设计一种编程语言。

除了操作语义之外,还有什么其他方法来指定语言的执行模型?

语言规范:对语言中的每一条指令所做的每一项指令的详细表示。

如何判断库的执行模型是否与其基本语言的执行模型相同或不同?

阅读源代码,如果它是可用的。这将告诉您POSIX线程是如何实现的,尽管C语言并不直接支持它们。

如果库、操作系统或指令集架构良好,您应该能够在不了解其执行模型或读取源代码的情况下成功地使用它。你应该能把那个图书馆当成黑匣子。抽象概念就是这样的;它们应该保护你不受潜在细节的影响。在实践中,这种情况并不总是发生,然后我们称之为“漏抽象”。

当然,这些都是学术上的区别。在大多数情况下,您不需要知道库是否与使用它的编程语言具有相同的执行模型。这根本不重要。假设您有一个C程序,它使用标准库的一部分,恰好符合C语言本身的执行模型。如果使用Python的call调用该库会发生什么?调用语言不再是C,这有什么区别吗?

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

https://softwareengineering.stackexchange.com/questions/421812

复制
相关文章

相似问题

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