ES2015のgeneratorはPythonとだいたい似たような機能を持ってるし、C# もだいたい似たような機能がある。

という事で、producerとconsumerの両方の機能を持ったyield的な何かは、プログラミング言語の常識になった気がする。

coroutine的な使い方とかasync-await的な物とかpullとかpushのパーサーとかgeneratorの標準的な応用例もだいたいどの言語でも同じよね。

一方でこの辺はC++とかJavaには無いので、その当時にプログラムの常識を学んだ世代は、どこかで常識をアップデートする必要がある。

yield自体は結構前からある所にはあったのだけど、ES2015は象徴的と思うのよね。 自分にはこの事から、2015年をもって、generatorは常識になった、という気がする。

自分はどこで見かけたか

自分はC# 2.0の頃、yield使って非同期処理する、というのは見た事があった。

あの頃はasync-awaitという物は無かったので、なんかトリッキーだなぁ、という程度の認識で居た。

そのあとC# 5.0のasync-awaitをRxと同時に学んだ。あれは文科省でバイトしてた頃だから2012年頃か?ただ2012年はまだasync-awaitは使わず、使い始めたのはpezy時代だった気がするので2014年かな。 ただRxでモナドで非同期を扱う基本は理解して使ってたので、2012年にはもうだいたい適応してた気がする。

時は流れて、Fluent Pythonを読んだのはCookpadのバイトの前のPythonリハビリ期か。 これは2017年なので去年かね。 ただこの頃には結構もう常識になってた気がする。 ES2017に入る、という話はたぶん知ってたし。

で、今年の2018年にES6の本でまたこの話を読んでいる。 2012年頃は目新しい部分もあったが、さすがにもう6年間なんども見た話題なので、古臭さすら感じる。 一方で扱われるトピックもだいたい固まって、必修科目になったなぁ、という印象も強い。

という事で、2018年現在、もうgeneratorは必修科目の一つになったんだろうね。