编程语言中的执行模型是什么?

时间:2018-01-16 20:56:03

标签: compiler-construction execution

我一直在阅读关于执行模型的维基百科文章,其中说:

执行模型指定了如何进行工作。每种编程语言都有一个执行模型,它被指定为语言规范的一部分,我作为语言实现的一部分实现。

是否类似于printf的本机实现?任何人都可以澄清一下吗?

2 个答案:

答案 0 :(得分:2)

以下是我能够为您搜索的不同语言执行模型的几个描述。它是关于如何为最终执行而不是功能实现构建软件。

  

Java的程序执行模型分为两个不同的阶段 -   汇编,   字节码执行。   这两个阶段彼此没有直接关系。事实上,大多数情况下,第二步发生在不同的机器上,通常在第一步后很长时间。

http://codingraptor.com/java/compile-run-wora/

  

实际上,PHP执行模型非常简单,并且遵循类似cgi的模型。它只是将php文件作为它的输入,解析并解释它,然后返回输出脚本产生的内容,将其作为响应传递回apache,返回给请求用户(浏览器)。

https://blog.xoxzo.com/2012/05/02/php-execution-model-vs-python-web/

答案 1 :(得分:0)

执行模型只是赋予编程语言以含义。

当您将球扔过一个房间时,您可以预测会发生什么,因为您的脑海中有了实体世界的模型。同样,当您运行以编程语言编写的代码时,可以预测会发生什么,因为您已经掌握了该语言的模型。这是该语言的一种执行模型。这与语言的语法不同,后者仅定义构成有效程序的语言。

语言的执行模型是该语言功能的权威规范。该规范可以是正式文档,手册,也可以只是参考实现。

例如,深奥的语言brainfuck具有特别简单的执行模型:

  • 您有一个由30,000个字节的单元组成的线性数组,已初始化为零,并有一个指针指向当前单元,最初是最左侧的单元;
  • 解释器在程序中逐个字符,忽略此处列出的所有字符;
  • <>分别将指针向左和向右移动;
  • +-分别将当前单元格的值增加和减少1;
  • .输出当前单元格的值;
  • ,接受一个输入字符并将其写入当前单元格;
  • 如果当前单元格为零,
  • [跳转到匹配的]之后的字符;
  • ]跳回到匹配的[

这是足够的信息,可以预测在给定特定输入的情况下任何脑力激荡程序将执行的操作,并为该语言实现编译器或解释器。