Что означает "испускать" в общих терминах компьютерной науки?

Я просто наткнулся на то, что похоже на общеизвестное ключевое слово compsci, "emit". Но я не могу найти четкого определения этого в общих терминах компьютерной науки, а также конкретного определения функции или ключевого слова "emit()" на любом конкретном языке программирования.

Я нашел его здесь, просматривая MapReduce:

https://en.wikipedia.org/wiki/MapReduce

Контекст моих дополнительных поисков показывает, что это имеет какое-то отношение к сигнализации и/или событиям. Но кажется, что предполагается, что читатель узнает, что такое "испускать" и делает. Например, эта статья о шаблонах MapReduce:

https://highlyscalable.wordpress.com/2012/02/01/mapreduce-patterns/

Нет упоминаний о том, что на самом деле делает "emit", есть только призывы к нему. Он должен отличаться от других форм возвращаемых данных, например, "возврат" или просто "printf" или эквивалент, иначе вызовы "emit" будут вызовами "return".

Дальнейший поиск, я нашел кучу раз, что в контексте MapReduce появляется какая-то псевдокодная форма "emit". И в Node.js. И в Qt. Но об этом.

Контекст: Я (в основном) самоуверенный веб-программист и системный администратор. Я уверен, что этот вопрос включен в compsci 101 (или 201?), Но я не принял этот курс.

Ответ 1

Я могу представить три контекста, в которых он использовался:

  • Отображать/уменьшать функции, когда какое-либо входное значение приводит к 0 или более выходным значениям в функции уменьшения
  • Tokenizers, где поток текста обрабатывается, и с различными интервалами выходят токены.
  • Системы обмена сообщениями

Я думаю, что общий поток - это "ноль или больше". A return обеспечивает только одно значение обратно от функции, тогда как "испускать" - вызов функции, который может иметь место в нулевое или несколько раз.

Ответ 2

Я только когда-либо видел emit(), используемый при создании простого компилятора в academia.

Анализируя грамматику программы, вы подписываете ее содержимое и испускаете (push out) инструкции по сборке. (В написанной на самом деле программе компилятора даже содержалась внутренняя функция, называемая emit, чтобы отразить ее теоретический/логический аспект.)

Как только анализ грамматики будет завершен, ассемблер возьмет инструкции по сборке и сгенерирует двоичный код (aka машинный код).

Итак, я не думаю, что существует общее определение CS для emit; однако я знаю, что он используется в псевдокоде (а иногда и в фактическом коде) для написания программ компилятора. И это высшее образование в области информатики в США.

Ответ 3

В контексте сетевого и сетевого программирования:

Когда мы вызываем функцию, функция может возвращать значение. Когда мы вызываем функцию, и функция должна отправить эти результаты другой функции, мы больше не будем возвращать пользователю. Вместо этого мы используем emit. Мы ожидаем, что функция будет передавать результаты другой функции по нашему вызову.

Функция может возвращать результаты и испускать события.