"emit" 在一般计算机科学术语中是什么意思?
What does "emit" mean in general computer science terms?
我刚刚偶然发现了一个似乎是众所周知的 compsci 关键字,"emit"。但是我在一般计算机科学术语中找不到任何明确的定义,也找不到任何特定编程语言中 "emit()" 函数或关键字的特定定义。
我在这里找到它,正在阅读 MapReduce:
https://en.wikipedia.org/wiki/MapReduce
我额外搜索的上下文显示它与信号 and/or 事件有关。但似乎只是假设 reader 会知道 "emit" 是什么和做什么。例如,这篇关于 MapReduce 模式的文章:
https://highlyscalable.wordpress.com/2012/02/01/mapreduce-patterns/
没有提到 "emit" 实际上在做什么,只有对它的调用。但是,它必须不同于其他形式的返回数据,例如 "return" 或简单的 "printf" 或等效的,否则对 "emit" 的调用将是对 "return" 的调用。
进一步搜索,我发现很多次 "emit" 的某种伪代码形式出现在 MapReduce 的上下文中。并在 Node.js。在 Qt 中。但仅此而已。
背景:我是一名(大部分)自学成才的网络程序员和系统管理员。我确定这个问题包含在 compsci 101(或 201?)中,但我没有参加该课程。
我只见过在学术界构建一个简单的编译器时使用 emit()。
分析程序的语法后,您将其内容标记化并发出(推出)汇编指令。 (实际上编写的编译器程序甚至包含一个名为 emit 的内部函数来反映它的 theoretical/logical 方面。)
语法分析完成后,汇编程序将采用汇编指令并生成二进制代码(又名机器代码)。
因此,我认为 emit 没有通用的 CS 定义;但是,我知道它用于编写编译器程序的伪代码(有时是实际代码)。那就是美国本科水平的计算机科学教育。
我可以想到使用它的三个上下文:
- Map/Reduce 函数,其中某些输入值导致 0 个或多个输出值进入 Reduce 函数
- Tokenizers,处理文本流,并在不同的时间间隔发出标记
- 消息系统
我认为共同点是"zero or more"。 return
只提供一个函数返回的值,而 "emit" 是一个可以发生零次或多次的函数调用。
在 Web 和网络编程的上下文中:
当我们调用函数时,函数可能return一个值。
当我们调用一个函数并且该函数应该将这些结果发送到另一个函数时,我们将不再使用 return。相反,我们使用 emit。我们希望该函数通过我们的调用 将结果 发送到另一个函数。
函数可以 return 结果和 发出 事件。
在MapReduce编程模型的上下文中,说map性质的操作接受输入值并发出结果,无非是对输入的转换。
我刚刚偶然发现了一个似乎是众所周知的 compsci 关键字,"emit"。但是我在一般计算机科学术语中找不到任何明确的定义,也找不到任何特定编程语言中 "emit()" 函数或关键字的特定定义。
我在这里找到它,正在阅读 MapReduce:
https://en.wikipedia.org/wiki/MapReduce
我额外搜索的上下文显示它与信号 and/or 事件有关。但似乎只是假设 reader 会知道 "emit" 是什么和做什么。例如,这篇关于 MapReduce 模式的文章:
https://highlyscalable.wordpress.com/2012/02/01/mapreduce-patterns/
没有提到 "emit" 实际上在做什么,只有对它的调用。但是,它必须不同于其他形式的返回数据,例如 "return" 或简单的 "printf" 或等效的,否则对 "emit" 的调用将是对 "return" 的调用。
进一步搜索,我发现很多次 "emit" 的某种伪代码形式出现在 MapReduce 的上下文中。并在 Node.js。在 Qt 中。但仅此而已。
背景:我是一名(大部分)自学成才的网络程序员和系统管理员。我确定这个问题包含在 compsci 101(或 201?)中,但我没有参加该课程。
我只见过在学术界构建一个简单的编译器时使用 emit()。
分析程序的语法后,您将其内容标记化并发出(推出)汇编指令。 (实际上编写的编译器程序甚至包含一个名为 emit 的内部函数来反映它的 theoretical/logical 方面。)
语法分析完成后,汇编程序将采用汇编指令并生成二进制代码(又名机器代码)。
因此,我认为 emit 没有通用的 CS 定义;但是,我知道它用于编写编译器程序的伪代码(有时是实际代码)。那就是美国本科水平的计算机科学教育。
我可以想到使用它的三个上下文:
- Map/Reduce 函数,其中某些输入值导致 0 个或多个输出值进入 Reduce 函数
- Tokenizers,处理文本流,并在不同的时间间隔发出标记
- 消息系统
我认为共同点是"zero or more"。 return
只提供一个函数返回的值,而 "emit" 是一个可以发生零次或多次的函数调用。
在 Web 和网络编程的上下文中:
当我们调用函数时,函数可能return一个值。 当我们调用一个函数并且该函数应该将这些结果发送到另一个函数时,我们将不再使用 return。相反,我们使用 emit。我们希望该函数通过我们的调用 将结果 发送到另一个函数。
函数可以 return 结果和 发出 事件。
在MapReduce编程模型的上下文中,说map性质的操作接受输入值并发出结果,无非是对输入的转换。