2015-07-07 19 views
10

Po prostu natknąłem się na coś, co wydaje się być powszechnie znanym słowem kluczowym compsci, "emituj". Ale nie mogę znaleźć żadnej jasnej definicji tego pojęcia w ogólnym znaczeniu informatyki, ani konkretnej definicji funkcji "emit()" lub słowa kluczowego w jakimkolwiek konkretnym języku programowania.Co oznacza "emitowanie" w terminach ogólnych informatyki?

znalazłem go tutaj, czytania na MapReduce:

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

kontekście mojego dodatkowych wyszukiwań pokazać, że ma coś wspólnego z sygnalizacji i/lub zdarzenia. Wydaje się jednak, że po prostu zakłada się, że czytelnik będzie wiedział, co oznacza "emitowanie". Na przykład, ten artykuł na wzorcach mapreduce:

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

Nie ma wzmianki o tym, co „emitować” jest rzeczywiście robi, są tylko połączenia z nim. Musi jednak różnić się od innych form zwracanych danych, takich jak "return" lub po prostu "printf" lub odpowiednik, inaczej wywołania "emitować" byłyby wezwaniami do "powrotu".

Dalsze wyszukiwanie, znalazłem kilka razy, że w kontekście MapReduce pojawia się jakaś pseudokodowa forma "emituj". I w Node.js. I w Qt. Ale to jest o tym.

Kontekst: Jestem (głównie) samoukiem programistą i administratorem systemu. Jestem pewien, że to pytanie jest omówione w compsci 101 (lub 201?), Ale nie brałem tego kursu.

+1

Cóż, to * wypuszczanie/wyjmowanie * tak, że przeczytałbym go w p-kodzie jako metakintaktyczne powiedzenie * "tutaj są użyteczne dane, zrób coś z tym" * w przeciwieństwie do określania czegoś konkretnego, jak powracanie/drukowanie/echoing/storage –

+0

Po prostu notatka na przyszłość: w rzeczywistości jest to komputerowa wersja Stack Overflow, http://cs.stackexchange.com/, która byłaby bardziej odpowiednia dla tego pytania. To świetna strona! – OceansOnPluto

+0

To jest pytanie meta: jak przenieść to do cs.stackexchange bez podwójnego księgowania? – JDS

Odpowiedz

2

mogę myśleć o trzech kontekstach, w których jest używany:

  • Map/Reduce funkcje, gdzie niektóre wartość wejściowa powoduje 0 lub więcej wartości wyjściowych, aby przejść do Reduce funkcyjne
  • Tokenizers, gdzie strumień tekst jest przetwarzany, a w różnych odstępach czasu, tokeny są emitowane
  • systemy Wiadomości

myślę, że wspólny wątek jest „zero lub więcej”. A return zapewnia dokładnie jedną wartość z powrotem z funkcji, podczas gdy "emituj" to wywołanie funkcji, które może wystąpić zero razy lub kilka razy.

+0

podając ten znacznik wyboru na podstawie "zero lub więcej" w porównaniu do "return" – JDS

2

Widziałem tylko emit() używane podczas budowania prostego kompilatora w środowisku akademickim.

Po przeanalizowaniu gramatyki programu należy tokenizować jego zawartość i wydać instrukcje montażu (wypychanie). (Program kompilujący, który został napisany, zawierał wewnętrzną funkcję o nazwie emit, która odzwierciedla jej teoretyczny/logiczny aspekt).

Po zakończeniu analizy gramatycznej, asembler wykona instrukcje montażu i wygeneruje kod binarny (aka kodu maszynowego).

Nie sądzę, że istnieje ogólna definicja CS dla emitująca; jednak wiem, że jest on używany w kodzie pseudokodowym (a czasami, rzeczywistym kodzie) do pisania programów kompilujących. I to jest edukacja informatyczna na poziomie licencjackim w USA.