23

私は、一般的に知られている compsci キーワードのように思われる "emit" に出くわしました。しかし、一般的なコンピューター サイエンス用語での明確な定義も、特定のプログラミング言語での「emit()」関数またはキーワードの特定の定義も見つかりません。

MapReduce を読んで、ここで見つけました。

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

私の追加の検索のコンテキストは、それがシグナリングおよび/またはイベントと関係があることを示しています. しかし、読者は「放出」とは何か、そして何をするのかを知っていると想定されているようです。たとえば、MapReduce パターンに関するこの記事:

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

「emit」が実際に何をしているのかについては言及されておらず、呼び出しがあるだけです。ただし、「return」または単に「printf」または同等のものなど、データを返す他の形式とは異なる必要があります。そうでない場合、「emit」の呼び出しは「return」の呼び出しになります。

さらに検索すると、MapReduce のコンテキストで「emit」の疑似コード形式が表示されることが何度もありました。そして Node.js で。そしてQtで。しかし、それはそれについてです。

コンテキスト: 私は (ほとんど) 独学の Web プログラマーであり、システム管理者でもあります。この質問は compsci 101 (または 201?) でカバーされていると確信していますが、私はそのコースを受講しませんでした。

4

4 に答える 4

8

学界で単純なコンパイラを構築するときに emit() が使用されているのを見たことがあります。

プログラムの文法を分析したら、その内容をトークン化し、アセンブリ命令を発行(プッシュアウト) します。(実際に作成されたコンパイラ プログラムには、その理論的/論理的側面を反映するために、emit と呼ばれる内部関数さえ含まれていました。)

文法分析が完了すると、アセンブラはアセンブリ命令を受け取り、バイナリ コード (別名マシン コード) を生成します。

だから、私はemitの一般的な CS 定義があるとは思わない。ただし、コンパイラ プログラムを記述するための疑似コード (場合によっては実際のコード) で使用されていることは知っています。これは、米国の学部レベルのコンピュータ サイエンス教育です。

于 2015-09-30T17:33:30.703 に答える
5

それが使用される 3 つのコンテキストを考えることができます。

  • Map/Reduce 関数。一部の入力値により、0 以上の出力値が Reduce 関数に渡されます。
  • テキストのストリームが処理され、さまざまな間隔でトークンが発行されるトークナイザー
  • メッセージング システム

共通点は「ゼロ以上」だと思います。returnは関数から返される値を 1 つだけ提供しますが、「発行」はゼロ回または数回発生する可能性のある関数呼び出しです。

于 2016-12-08T10:08:24.110 に答える