2015-07-07 10 views
10

Mi sono appena imbattuto in quella che sembra essere una parola chiave compsci generalmente nota, "emit". Ma non riesco a trovare alcuna definizione chiara in termini di informatica generale, né una definizione specifica di una funzione o parola chiave "emit()" in un linguaggio di programmazione specifico.Che cosa significa "emettere" in termini di informatica generale?

ho trovato qui, leggendo su MapReduce:

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

Il contesto delle mie ricerche supplementari mostrare che ha qualcosa a che fare con la segnalazione e/o eventi. Ma sembra che si presuma che il lettore saprà cosa "emette" è e fa. Ad esempio, questo articolo sui modelli MapReduce:

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

Non c'è alcuna menzione di ciò che "emettono" è in realtà facendo, ci sono richieste solo per esso. Deve essere diverso da altre forme di dati di ritorno, anche se, come "return" o semplicemente "printf" o l'equivalente, altrimenti le chiamate a "emettere" sarebbero chiamate a "return".

Ulteriori ricerche, ho trovato un po 'di volte che alcune forme di "emettere" pseudocodice appaiono nel contesto di MapReduce. E in Node.js. E a Qt. Ma questo è tutto.

Contesto: Sono un programmatore web (principalmente) autodidatta e amministratore di sistema. Sono sicuro che questa domanda è trattata in compsci 101 (o 201?) Ma non ho seguito questo corso.

+1

Beh, significa * mettere fuori/avanti * così lo leggerò in p-code come un detto metasintatico * "ecco i dati utili, fare qualcosa con esso" * invece di specificare qualcosa di specifico come il ritorno/stampa/echoing/storage –

+0

Solo una nota per il futuro: c'è in realtà una versione informatica di Stack Overflow, http://cs.stackexchange.com/ che sarebbe più appropriato per questa domanda. È un ottimo sito! – OceansOnPluto

+0

Questa è una meta domanda: come posso spostarla in cs.stackexchange senza postare due volte? – JDS

risposta

2

posso pensare a tre contesti in cui è utilizzato:

  • Map/Reduce funzioni, dove alcuni valore di ingresso provoca 0 o più valori di uscita per andare nel ridurre la funzione
  • tokenizers, in cui un flusso di testo viene analizzato, ea vari intervalli, i token vengono emessi
  • sistemi di messaggistica

credo che il filo conduttore è lo "zero o più". A return fornisce esattamente un valore indietro da una funzione, mentre un "emit" è una chiamata di funzione che potrebbe avvenire zero volte o più volte.

+0

dando a questo un segno di spunta sulla base di "zero o più" rispetto a "ritorno" – JDS

2

Ho sempre visto emit() utilizzato quando si costruisce un semplice compilatore nel mondo accademico.

Dopo aver analizzato la grammatica di un programma, l'utente ha eseguito il tokenize del contenuto e emette (push out) istruzioni di assemblaggio. (Il programma di compilazione che è stato scritto contiene addirittura una funzione interna chiamata emit per rispecchiare tale aspetto teorico/logico.)

Una volta completata l'analisi della grammatica, l'assemblatore prenderà le istruzioni di assemblaggio e genererà il codice binario (alias codice macchina).

Quindi, non credo ci sia una definizione CS generale per emetta; tuttavia, so che è usato nello pseudocodice (e talvolta nel codice reale) per scrivere programmi di compilazione. E questo è l'insegnamento di informatica di livello universitario negli Stati Uniti.