Generator (computer programming) (original) (raw)
En informatique, un générateur est une routine non transparente référentiellement, généralement sans argument. Comme son nom l'indique, elle sert à créer de nouveaux objets. Parmi les générateurs les plus classiques, on trouve les générateurs de nombres aléatoires. Certains générateurs parcourent virtuellement une liste infinie, définie algorithmiquement. De tels générateurs sont appelés compréhensions de listes. Une fonction renvoyant tour à tour les éléments de la suite de Fibonacci ou tous les nombres premiers serait un tel générateur.
Property | Value |
---|---|
dbo:abstract | Generátor je v programování speciální funkce, kterou lze používat pro řízení opakování ve smyčkách. Všechny generátory jsou vlastně iterátory.Generátory se velmi podobají funkcím vracejícím pole tím, že mají parametry, lze je volat a generují posloupnosti hodnot. Na rozdíl od vytváření celých polí však generátory vydávají hodnoty po jedné, což šetří paměť, umožňuje pracovat s neomezenými sadami hodnot nebo s postupně vznikajícími hodnotami a dovoluje, aby volající mohl zpracovávat první hodnotu okamžitě. Jednoduše řečeno, generátor vypadá jako funkce ale se chová jako iterátor. Generátory mohou být implementovány pomocí expresivnějších řídicích struktur, například korutin nebo kontinuací první třídy. Generátory jsou někdy označovány za semikorutiny, a lze je považovat za speciální (slabší) případ korutin, protože při vrácení hodnoty vždy předávají řízení zpátky volajícímu, zatímco při použití obecných korutin je třeba pro získání stejného chování provést skok do volající korutiny; viz srovnání korutin s generátory. (cs) في علم الحاسوب ، يعد المولّد generator روتينًا يمكن استخدامه للتحكم في سلوك تكرار الحلقة . جميع المولدات هي أيضا مكررات . المولد يشبه إلى حد كبير دالة ترجع مصفوفة ، حيث أن المولد يحتوي على معلمات يمكن استدعائها، ويولد سلسلة من القيم. ومع ذلك ، بدلاً من بناء مصفوفة تحتوي على جميع القيم وترجعها كلها في وقت واحد ، ينتج المولد القيم واحدة تلو الأخرى، الأمر الذي يتطلب ذاكرة أقل ويسمح للمستدعي بالبدء في معالجة القيم القليلة الأولى على الفور. باختصار ، يبدو المولد يبدو كدالة ولكنه يتصرف مثل المكرر . يمكن تنفيذ المولدات من حيث تركيبات تدفق التحكم المعبرة، مثل الروتينات الفرعية أو الاستمرارات من الصنف الأول. تُعد المولدات، والمعروفة أيضًا باسم أشباه الروتينات، حالة خاصة (وأضعف من) من الروتينات الفرعية، من حيث أنها دائمًا ما تعيد التحكم إلى المستدعي (عند تمرير قيمة إلى الوراء) ، بدلاً من تحديد روتين فرعي للقفز إليه. (ar) En computación, un generador es una rutina especial que se puede usar para controlar el comportamiento de un iterador en un bucle.Un generador es muy similar a una función que devuelve un vector, en el que un generador tiene los parámetros que se pueden llamar, y genera una secuencia de valores. En lugar de construir un vector que contenga todos los valores y devolverlos de una vez, un generador proporciona un valor a la vez, lo que requiere menos memoria y, por lo tanto, permite que quien lo llama comience a procesar los primeros valores inmediatamente.En resumen, un generador se asemeja a una función pero se comporta como un iterador. Los generadores pueden implementarse en construcciones de control de flujo más expresivas, como la continuación de objetos de primera clase o como co-funciones. Los generadores aparecen por primera vez en 1975 en el lenguaje CLU; y están disponibles en Python, C#, JavaScript, [Ruby] y en otros idiomas. En CLU y C#, los generadores se llaman iteradores y en Ruby . (es) In computer science, a generator is a routine that can be used to control the iteration behaviour of a loop. All generators are also iterators. A generator is very similar to a function that returns an array, in that a generator has parameters, can be called, and generates a sequence of values. However, instead of building an array containing all the values and returning them all at once, a generator yields the values one at a time, which requires less memory and allows the caller to get started processing the first few values immediately. In short, a generator looks like a function but behaves like an iterator. Generators can be implemented in terms of more expressive control flow constructs, such as coroutines or first-class continuations. Generators, also known as semicoroutines, are a special case of (and weaker than) coroutines, in that they always yield control back to the caller (when passing a value back), rather than specifying a coroutine to jump to; see comparison of coroutines with generators. (en) En informatique, un générateur est une routine non transparente référentiellement, généralement sans argument. Comme son nom l'indique, elle sert à créer de nouveaux objets. Parmi les générateurs les plus classiques, on trouve les générateurs de nombres aléatoires. Certains générateurs parcourent virtuellement une liste infinie, définie algorithmiquement. De tels générateurs sont appelés compréhensions de listes. Une fonction renvoyant tour à tour les éléments de la suite de Fibonacci ou tous les nombres premiers serait un tel générateur. (fr) In informatica, un generatore è una speciale routine che può essere usata per il controllo del comportamento di un'iterazione in un loop.Un generatore è molto simile a una funzione che restituisce un vettore, nel quale un generatore ha i parametri, che possono essere chiamati, e genera una sequenza di valori. Invece di costruire un vettore contenente tutti i valori e restituirli in una volta, un generatore fornisce i valori uno alla volta, il che richiede meno memoria e permette così al chiamante di iniziare a elaborare i primi valori immediatamente.In breve, un generatore assomiglia a una funzione ma si comporta come un iteratore. I generatori possono essere implementati in costrutti di controllo di flusso più espressivi, come continuazione di oggetti di prima classe (first class object) o come co-funzioni. I generatori appaiono per la prima volta nel 1975 nel CLU; ora sono disponibili in Python, C#, JavaScript, Ruby e altri linguaggi. In CLU e C#, i generatori vengono chiamati iteratori e in Ruby . (it) ジェネレータは、プログラムにおいて、数列の各要素の値などを次々と生成(ジェネレート)し他の手続きに渡す、という機能を持っている手続きである。値を渡す方法としては、コールバックのようにして他の手続きを呼ぶものもあれば、呼び出される度に次々と異なる値を返す関数であることもある。 (ja) In de informatica is een generator een functie die gebruikt kan worden voor itereren met een lus. Een generator genereert een reeks waarden waar vervolgens over geïtereerd kan worden in een lus. Deze waarden worden na elkaar opgeleverd en telkens wanneer de generator een waarde oplevert kan de lus een keer uitgevoerd worden. Door pas een waarde uit te rekenen wanneer dit nodig is, kan dit efficiëntere code opleveren. Een generator gedraagt zich als een iterator die een datastructuur doorloopt maar een generator ziet eruit als een functie. Een generator verzorgt zowel het berekenen van de waarden als het doorlopen ervan terwijl een iterator alleen een bestaande datastructuur doorloopt. (nl) Em ciência da computação, um gerador (em inglês, generator) é um procedimento especial que pode ser usado para controlar iteradores de loops. Um gerador é muito similar para funções que retornam arrays (ou vetores), geradores podem ter parâmetros, que também podem ser chamados e geram uma sequência de valores. Entretanto, em vez de construir uma sequência que contenha todos os valores e os retornam de uma só vez, um gerador utiliza a palavra-chave yield para retornar os valores um de cada vez, que utiliza menos memória e permite o processamento de poucos valores rapidamente. Um gerador é uma função mas comporta-se como um iterador. As primeiras aparições de geradores foram na CLU em 1975, [1] e atualmente são encontrados facilmente em softwares em linguagem de programação Python e C#. (em CLU e C# generators são chamados de iteradores). Geradores são usualmente utilizados dentro de loops nas funções, que podem reduzir de grandes e demorados loops para únicos loops e rápidos. Um exemplo de gerador em Python: def contador(n): while True: yield n n += 1for i in contador(10): if i <= 20: print i else: break Em Python, um gerador pode ser pensado como um iterador que contém uma pilha. Sempre que é usado um iterador o método do next é chamado, e é executado normalmente até o próximo yield ser alcançado. O gerador é congelado então outra vez, e o valor yield é retornado a quem o chamou. Os geradores computam seus valores yield somente por demanda, são úteis para representar as seqüências que são de difícil processamento pelo computador. (pt) W informatyce, generator jest szczególnym rodzajem , który można wykorzystywać jako iterator. Po raz pierwszy generatory zostały wprowadzone w CLU (1975) i obecnie są dostępne w Pythonie, PHP, C#, Ruby i JavaScript. (W CLU i C# nazywane są iteratorami.) Generator jest bardzo podobny do funkcji zwracającej tablicę w tym, że tak jak ona może być wywoływany z argumentami i generuje listę wartości. Jednak zamiast budować pełną tablicę zawierającą wszystkie elementy i zwracać je wszystkie naraz, generator zwraca je po jednym, co znacznie oszczędza pamięć i pozwala funkcji wywołującej generator korzystać z danych od razu już od pierwszych elementów. Generatory można też wykorzystywać do leniwej iteracji po elementach listy. Jest to użyteczne, gdy prawdopodobnie potrzebnych będzie tylko kilka pierwszych elementów listy, a obliczenie całej listy byłoby kosztowne lub niepraktyczne. Przykładowy generator w C#: static IEnumerable<Pair> WszystkieParyElementów(IList l) { for (int x=0;x<l.Count;x++) { for (int y=x+1;y<l.Count;y++) { yield return new Pair(l[x],l[y]); } } } W Pythonie generator można traktować jako iterator zawierający zamrożone wywołanie funkcji. Za każdym razem, gdy wywoływana jest metoda next iteratora, zamrożone wywołanie wykonuje się dalej aż do instrukcji yield. Wtedy wywołanie funkcji jest ponownie zamrażane, iterator podaje wartość obliczoną w instrukcji yield, a wykonanie programu jest kontynuowane w kodzie wywołującym iterator. (pl) Генератор — в інформатиці, це підпрограма, що контролює ітерації в циклі. Генератор є підвидом ітератора. Різниця між ітератором і генератором: * Ітератор проходить по колекції по одному елементу за раз. * Генератор генерує елементи послідовності по одному елементу за раз. Генератор може бути реалізований у вигляді наступних конструкцій потоку керування як: * співпрограма; * продовження першого порядку. Генератор є частковим випадком співпрограми, оскільки завжди повертає керування до того коду, який його викликав. (uk) 生成器(Generator),是计算机科学中特殊的子程序。实际上,所有生成器都是迭代器。生成器非常类似于返回数组的函数,都是具有参数、可被调用、产生一系列的值。但是生成器不是构造出数组包含所有的值并一次性返回,而是每次产生一个值,因此生成器看起来像函数,但行为像迭代器。 生成器可以用更有表达力的控制流结构实现,如协程或头等計算續體。生成器,也被称作半协程(semicoroutine),是特殊的、能力更弱的协程,总是在传回一个值时把控制交还给调用者,而不是像协程那样指出另一个协程继续执行。 (zh) |
dbo:wikiPageExternalLink | https://wiki.php.net/rfc/generators https://metacpan.org/module/Coro::Generator https://medium.com/concerning-pharo/pharos-hidden-gem-generator-c51ef88aec26 https://web.archive.org/web/20110723043455/http:/cliki.net/pygen https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node347.html%23SECTION003400000000000000000 http://portal.acm.org/citation.cfm%3Fdoid=225540.225541 https://metacpan.org/module/Coro |
dbo:wikiPageID | 572997 (xsd:integer) |
dbo:wikiPageLength | 28896 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1123250001 (xsd:integer) |
dbo:wikiPageWikiLink | dbc:Articles_with_example_Ruby_code dbr:Python_(programming_language) dbr:Ruby_(programming_language) dbr:Sather dbr:F_Sharp_programming_language dbr:Non-strict_evaluation dbc:Articles_with_example_Haskell_code dbc:Articles_with_example_Perl_code dbr:Anonymous_pipe dbc:Articles_with_example_R_code dbr:Pharo dbc:Articles_with_example_Tcl_code dbr:Pthreads dbr:Common_Lisp dbr:Coroutines dbr:Object_(computer_science) dbr:Golden_ratio dbr:Concurrency_(computer_science) dbr:Continuation dbr:Control_flow dbr:Corecursion dbr:Coroutine dbr:Boilerplate_code dbr:Stack_frame dbr:Steve_Omohundro dbr:Stream_(computing) dbr:Subroutine dbc:Articles_with_example_Racket_code dbr:Computer_science dbr:Parallel_computing dbr:C++11 dbr:CLU_(programming_language) dbr:C_(programming_language) dbr:C_Sharp_(programming_language) dbr:Lazy_evaluation dbr:List_(abstract_data_type) dbr:List_comprehension dbr:ECMAScript dbr:F_Sharp_(programming_language) dbc:Articles_with_example_C_Sharp_code dbr:PHP dbr:Foreach_loop dbr:Iteratee dbr:Iteration dbr:Iterator dbr:Logical_disjunction dbr:Haskell_(programming_language) dbr:Java_(programming_language) dbr:Tcl dbc:Articles_with_example_Java_code dbc:Articles_with_example_Python_(programming_language)_code dbc:Programming_constructs dbr:Java_collections_framework dbr:XL_(programming_language) dbr:Icon_(programming_language) dbc:Iteration_in_programming dbr:Racket_(programming_language) dbr:Parameter_(computer_science) dbr:Sequence_expression dbr:Context_switching dbr:Execution_(computers) |
dbp:wikiPageUsesTemplate | dbt:Authority_control dbt:Further_information dbt:Other_uses dbt:Refimprove dbt:Script}_{ ________#_Produce_the_result_of |
dcterms:subject | dbc:Articles_with_example_Ruby_code dbc:Articles_with_example_Haskell_code dbc:Articles_with_example_Perl_code dbc:Articles_with_example_R_code dbc:Articles_with_example_Tcl_code dbc:Articles_with_example_Racket_code dbc:Articles_with_example_C_Sharp_code dbc:Articles_with_example_Java_code dbc:Articles_with_example_Python_(programming_language)_code dbc:Programming_constructs dbc:Iteration_in_programming |
gold:hypernym | dbr:Routine |
rdf:type | owl:Thing yago:Abstraction100002137 yago:Cognition100023271 yago:Concept105835747 yago:Content105809192 yago:GrammaticalRelation113796779 yago:Idea105833840 yago:Inflection113803782 yago:LinguisticRelation113797142 yago:Paradigm113804375 yago:PsychologicalFeature100023100 yago:Relation100031921 dbo:Single yago:WikicatProgrammingConstructs yago:WikicatProgrammingParadigms |
rdfs:comment | En informatique, un générateur est une routine non transparente référentiellement, généralement sans argument. Comme son nom l'indique, elle sert à créer de nouveaux objets. Parmi les générateurs les plus classiques, on trouve les générateurs de nombres aléatoires. Certains générateurs parcourent virtuellement une liste infinie, définie algorithmiquement. De tels générateurs sont appelés compréhensions de listes. Une fonction renvoyant tour à tour les éléments de la suite de Fibonacci ou tous les nombres premiers serait un tel générateur. (fr) ジェネレータは、プログラムにおいて、数列の各要素の値などを次々と生成(ジェネレート)し他の手続きに渡す、という機能を持っている手続きである。値を渡す方法としては、コールバックのようにして他の手続きを呼ぶものもあれば、呼び出される度に次々と異なる値を返す関数であることもある。 (ja) Генератор — в інформатиці, це підпрограма, що контролює ітерації в циклі. Генератор є підвидом ітератора. Різниця між ітератором і генератором: * Ітератор проходить по колекції по одному елементу за раз. * Генератор генерує елементи послідовності по одному елементу за раз. Генератор може бути реалізований у вигляді наступних конструкцій потоку керування як: * співпрограма; * продовження першого порядку. Генератор є частковим випадком співпрограми, оскільки завжди повертає керування до того коду, який його викликав. (uk) 生成器(Generator),是计算机科学中特殊的子程序。实际上,所有生成器都是迭代器。生成器非常类似于返回数组的函数,都是具有参数、可被调用、产生一系列的值。但是生成器不是构造出数组包含所有的值并一次性返回,而是每次产生一个值,因此生成器看起来像函数,但行为像迭代器。 生成器可以用更有表达力的控制流结构实现,如协程或头等計算續體。生成器,也被称作半协程(semicoroutine),是特殊的、能力更弱的协程,总是在传回一个值时把控制交还给调用者,而不是像协程那样指出另一个协程继续执行。 (zh) في علم الحاسوب ، يعد المولّد generator روتينًا يمكن استخدامه للتحكم في سلوك تكرار الحلقة . جميع المولدات هي أيضا مكررات . المولد يشبه إلى حد كبير دالة ترجع مصفوفة ، حيث أن المولد يحتوي على معلمات يمكن استدعائها، ويولد سلسلة من القيم. ومع ذلك ، بدلاً من بناء مصفوفة تحتوي على جميع القيم وترجعها كلها في وقت واحد ، ينتج المولد القيم واحدة تلو الأخرى، الأمر الذي يتطلب ذاكرة أقل ويسمح للمستدعي بالبدء في معالجة القيم القليلة الأولى على الفور. باختصار ، يبدو المولد يبدو كدالة ولكنه يتصرف مثل المكرر . (ar) Generátor je v programování speciální funkce, kterou lze používat pro řízení opakování ve smyčkách. Všechny generátory jsou vlastně iterátory.Generátory se velmi podobají funkcím vracejícím pole tím, že mají parametry, lze je volat a generují posloupnosti hodnot. Na rozdíl od vytváření celých polí však generátory vydávají hodnoty po jedné, což šetří paměť, umožňuje pracovat s neomezenými sadami hodnot nebo s postupně vznikajícími hodnotami a dovoluje, aby volající mohl zpracovávat první hodnotu okamžitě. Jednoduše řečeno, generátor vypadá jako funkce ale se chová jako iterátor. (cs) In computer science, a generator is a routine that can be used to control the iteration behaviour of a loop. All generators are also iterators. A generator is very similar to a function that returns an array, in that a generator has parameters, can be called, and generates a sequence of values. However, instead of building an array containing all the values and returning them all at once, a generator yields the values one at a time, which requires less memory and allows the caller to get started processing the first few values immediately. In short, a generator looks like a function but behaves like an iterator. (en) En computación, un generador es una rutina especial que se puede usar para controlar el comportamiento de un iterador en un bucle.Un generador es muy similar a una función que devuelve un vector, en el que un generador tiene los parámetros que se pueden llamar, y genera una secuencia de valores. Los generadores pueden implementarse en construcciones de control de flujo más expresivas, como la continuación de objetos de primera clase o como co-funciones. (es) In informatica, un generatore è una speciale routine che può essere usata per il controllo del comportamento di un'iterazione in un loop.Un generatore è molto simile a una funzione che restituisce un vettore, nel quale un generatore ha i parametri, che possono essere chiamati, e genera una sequenza di valori. I generatori possono essere implementati in costrutti di controllo di flusso più espressivi, come continuazione di oggetti di prima classe (first class object) o come co-funzioni. (it) In de informatica is een generator een functie die gebruikt kan worden voor itereren met een lus. Een generator genereert een reeks waarden waar vervolgens over geïtereerd kan worden in een lus. Deze waarden worden na elkaar opgeleverd en telkens wanneer de generator een waarde oplevert kan de lus een keer uitgevoerd worden. Door pas een waarde uit te rekenen wanneer dit nodig is, kan dit efficiëntere code opleveren. (nl) W informatyce, generator jest szczególnym rodzajem , który można wykorzystywać jako iterator. Po raz pierwszy generatory zostały wprowadzone w CLU (1975) i obecnie są dostępne w Pythonie, PHP, C#, Ruby i JavaScript. (W CLU i C# nazywane są iteratorami.) Przykładowy generator w C#: static IEnumerable<Pair> WszystkieParyElementów(IList l) { for (int x=0;x<l.Count;x++) { for (int y=x+1;y<l.Count;y++) { yield return new Pair(l[x],l[y]); } } } (pl) Em ciência da computação, um gerador (em inglês, generator) é um procedimento especial que pode ser usado para controlar iteradores de loops. Um gerador é muito similar para funções que retornam arrays (ou vetores), geradores podem ter parâmetros, que também podem ser chamados e geram uma sequência de valores. Entretanto, em vez de construir uma sequência que contenha todos os valores e os retornam de uma só vez, um gerador utiliza a palavra-chave yield para retornar os valores um de cada vez, que utiliza menos memória e permite o processamento de poucos valores rapidamente. Um gerador é uma função mas comporta-se como um iterador. (pt) |
rdfs:label | مولد (برمجة) (ar) Generátor (programování) (cs) Generador (informática) (es) Generator (computer programming) (en) Générateur (informatique) (fr) Generatore (informatica) (it) ジェネレータ (プログラミング) (ja) Generator (informatica) (nl) Generator (informatyka) (pl) Gerador (ciência da computação) (pt) Генератор (програмування) (uk) 生成器 (计算机编程) (zh) |
owl:sameAs | freebase:Generator (computer programming) yago-res:Generator (computer programming) http://d-nb.info/gnd/4129040-9 wikidata:Generator (computer programming) dbpedia-ar:Generator (computer programming) dbpedia-cs:Generator (computer programming) dbpedia-es:Generator (computer programming) dbpedia-fa:Generator (computer programming) dbpedia-fr:Generator (computer programming) dbpedia-he:Generator (computer programming) dbpedia-it:Generator (computer programming) dbpedia-ja:Generator (computer programming) dbpedia-nl:Generator (computer programming) dbpedia-pl:Generator (computer programming) dbpedia-pt:Generator (computer programming) dbpedia-sh:Generator (computer programming) dbpedia-sr:Generator (computer programming) dbpedia-uk:Generator (computer programming) dbpedia-zh:Generator (computer programming) https://global.dbpedia.org/id/2QeR1 |
prov:wasDerivedFrom | wikipedia-en:Generator_(computer_programming)?oldid=1123250001&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Generator_(computer_programming) |
is dbo:wikiPageDisambiguates of | dbr:Generator |
is dbo:wikiPageRedirects of | dbr:Comparison_of_programming_languages_(generators) dbr:Generator_(JavaScript) dbr:Generator_(computer_science) dbr:Semicoroutine |
is dbo:wikiPageWikiLink of | dbr:Python_(programming_language) dbr:Regular_number dbr:C++_Standard_Library dbr:Penril_DataComm_Networks_Inc. dbr:Comparison_of_C_Sharp_and_Java dbr:Comparison_of_programming_languages_(generators) dbr:Cobra_(programming_language) dbr:Effect_system dbr:Control_flow dbr:Corecursion dbr:Coroutine dbr:Linear_congruential_generator dbr:Call-with-current-continuation dbr:Structured_programming dbr:Halton_sequence dbr:Futures_and_promises dbr:Haskell_features dbr:Lazy_evaluation dbr:Web_Server_Gateway_Interface dbr:ECMAScript dbr:F_Sharp_(programming_language) dbr:PHP dbr:Iterator dbr:Iterator_pattern dbr:Generator dbr:JavaScript dbr:Eight_queens_puzzle dbr:Yield dbr:Icon_(programming_language) dbr:Generator_(JavaScript) dbr:Generator_(computer_science) dbr:Semicoroutine |
is foaf:primaryTopic of | wikipedia-en:Generator_(computer_programming) |