About: Coroutine

An Entity of Type: organisation, from Named Graph: http://dbpedia.org, within Data Space: dbpedia.org

Coroutines are computer program components that generalize subroutines for non-preemptive multitasking, by allowing execution to be suspended and resumed. Coroutines are well-suited for implementing familiar program components such as cooperative tasks, exceptions, event loops, iterators, infinite lists and pipes. Melvin Conway coined the term coroutine in 1958 when he applied it to the construction of an assembly program. The first published explanation of the coroutine appeared later, in 1963.

Property Value
dbo:abstract
  • Koprogramy (anglicky coroutine) jsou v informatice programové komponenty, které umožňují na rozdíl od podprogramů (procedur, funkcí, metod) více vstupních bodů, pozastavení a obnovení výpočtu v jejich různých místech. Koprogramy jsou vhodné pro implementaci kooperativního multitaskingu, iterátorů, proudů (stream) a trubek (pipe). Termín koprogram poprvé použil ve své seminární práci v roce 1963. (cs)
  • Coroutines are computer program components that generalize subroutines for non-preemptive multitasking, by allowing execution to be suspended and resumed. Coroutines are well-suited for implementing familiar program components such as cooperative tasks, exceptions, event loops, iterators, infinite lists and pipes. Melvin Conway coined the term coroutine in 1958 when he applied it to the construction of an assembly program. The first published explanation of the coroutine appeared later, in 1963. (en)
  • In der Informatik sind Koroutinen (auch Coroutinen) eine Verallgemeinerung des Konzepts einer Prozedur oder Funktion. Der prinzipielle Unterschied zwischen Koroutinen und Prozeduren ist, dass Koroutinen ihren Ablauf unterbrechen und später wieder aufnehmen können, wobei sie ihren Status beibehalten. Unter den ältesten Programmiersprachen, die Koroutinen unterstützen, sind Simula oder Modula-2. Auch moderne Sprachen wie Python kennen ähnliche Konzepte. In einigen weit verbreiteten Sprachen wie C oder Java gestaltet sich die Implementierung jedoch schwierig. Der Begriff selbst stammt von Melvin Conway, der ihn 1963 in einer Veröffentlichung über Compilerbau benutzte. Donald Knuth bezeichnet Prozeduren als Spezialfall von Koroutinen. (de)
  • En un programa, una corrutina es una unidad de tratamiento semejante a una subrutina, con la diferencia de que, mientras que la salida de una subrutina pone fin a esta, la salida de una corrutina puede ser el resultado de una suspensión de su tratamiento hasta que se le indique retomar su ejecución (multitarea cooperativa). La suspensión de la corrutina y su reanudación pueden ir acompañadas de una transmisión de datos. Las corrutinas permiten realizar tratamientos basados en algoritmos cooperativos como iteradores, generadores, tuberías, etcétera. Según Donald Knuth, el término corrutina fue inventado por Melvin Conway en 1958, cuando trabajaba en la escritura de un programa en ensamblador.​ Más tarde, Conway propuso organizar un compilador en un conjunto de corrutinas, lo que trajo la posibilidad de utilizar diferentes rutas durante la depuración y de utilizar una sola estructura en producción.​ (es)
  • Dans un programme, une coroutine est une unité de traitement qui s'apparente à une routine, à ceci près que, alors que la sortie d'une routine met fin à la routine, la sortie de la coroutine peut être le résultat d'une suspension de son traitement jusqu'à ce qu'il lui soit signalé de reprendre son cours. La suspension de la coroutine et la reprise de son cours peuvent s'accompagner d'une transmission de données. Les coroutines permettent de réaliser des traitements basés sur des algorithmes coopératifs comme les itérateurs, les générateurs, des canaux de communication, etc. D'après Donald Knuth, le terme coroutine fut inventé par Melvin Conway en 1958, alors qu'il travaillait à l'écriture d'un programme assembleur. Plus tard, Conway proposa d'organiser un compilateur en un ensemble de coroutines, ce qui donne la possibilité d'utiliser des chemins différents lors du débogage, et d'utiliser une seule structure en production. (fr)
  • 코루틴(coroutine)은 루틴의 일종으로서, 협동 루틴이라 할 수 있다(코루틴의 "Co"는 with 또는 together를 뜻한다). 상호 연계 프로그램을 일컫는다고도 표현가능하다. 루틴과 서브 루틴은 서로 비대칭적인 관계이지만, 코루틴들은 완전히 대칭적인, 즉 서로가 서로를 호출하는 관계이다. 코루틴들에서는 무엇이 무엇의 서브루틴인지를 구분하는 것이 불가능하다. 코루틴 A와 B가 있다고 할 때, A를 프로그래밍 할 때는 B를 A의 서브루틴으로 생각한다. 그러나 B를 프로그래밍할 때는 A가 B의 서브루틴이라고 생각한다. 어떠한 코루틴이 발동될 때마다 해당 코루틴은 이전에 자신의 실행이 마지막으로 중단되었던 지점 다음의 장소에서 실행을 재개한다. 도널드 커누스에 따르면 는 1958년 코루틴(coroutine)이라는 용어를 만들어냈으며 당시 그는 이를 어셈블리 프로그램에 적용했다. 코루틴에 관해 설명된 최초의 출판물은 1963년에 등장하였다. (ko)
  • コルーチン(英: co-routine)とはプログラミングの構造の一種。サブルーチンがエントリーからリターンまでを一つの処理単位とするのに対し、コルーチンはいったん処理を中断した後、続きから処理を再開できる。接頭辞 co は協調を意味するが、複数のコルーチンが中断・継続により協調動作を行うことによる。 サブルーチンと異なり、状態管理を意識せずに行えるため、協調的処理、イテレータ、無限リスト、パイプなど、継続状況を持つプログラムが容易に記述できる。 コルーチンはサブルーチンを一般化したものと考えられる。コルーチンをサポートする言語には Modula-2、Simula、Icon、Lua、C#、Limbo、Swift などがある。マルチスレッドで原理的には同じことができるため、現在はそちらが使われるケースが多い。これはマルチスレッドであれば直接OSの支援を受けられることや、エントリー/リターンの構造を変えずにコードを多重化できるので、過去の言語との親和性が良いなどが理由である。ただし、マルチスレッドの場合プログラマが同期制御を行わなければならないので、コルーチンのような簡易さはない。 コルーチンという名称は、メルヴィン・コンウェイの1963年の論文に最初の記述がある。 (ja)
  • Pojęcie współprogramu ma dwie odmienne definicje. Obie definicje zgodnie stwierdzają, że współprogram cechuje się posiadaniem ciągu instrukcji do wykonania i ponadto możliwością zawieszania wykonywania jednego współprogramu A i przenoszenia wykonywania do innego współprogramu B. W szczególności można wznowić pracę zawieszonego współprogramu A, a wykonywanie będzie podjęte w miejscu, w którym zostało zawieszone. Tym co różni obie definicje jest zdolność współpracy z rekurencyjnymi procedurami (W językach programowania funkcyjnego koncepcja współprogramu istnieje pod postacią kontynuacji – pojęcia wprowadzonego niemal równocześnie ze współprogramami). Obiekt współprogramu jest quasi-wątkiem. Tak jak wątek ma ciąg instrukcji do wykonania, w odróżnieniu od wątków obiekty współprogramów nie działają równolegle. Jest niezmiennikiem systemu współprogramów to, że w każdej chwili, dokładnie jeden obiekt współprogramu wykonuje swoje instrukcje: W literaturze znaleźć można termin włókno (ang. fiber) dla odróżnienia od wątku (ang.thread). W latach 60 XX wieku współprogram był fragmentem kodu napisanego w assemblerze. wątki o następujących własnościach: * dokładnie jeden współprogram wykonuje swoje instrukcje, tzn. jest aktywny, * współprogram aktywny może przejść w stan pasywny wskazując przy tym na inny wątek, który ma być uaktywniony, * współprogram uaktywniony w efekcie wykonania instrukcji (w dotychczas aktywnym współprogramie ) kontynuuje wykonywanie instrukcji od odpowiedniego punktu wejścia, dokładniej: pierwsze uruchomienie instrukcji wątku współprogramu spowoduje wykonanie pierwszej instrukcji wątku, każda następna instrukcja wznawiająca wykonywanie wątku współprogramu rozpoczyna wykonywanie instrukcji od punktu wejścia wyznaczonego przez ostatnio wykonaną w nim instrukcję (pl)
  • Em ciência da computação, corrotina é um componente de um programa de computador que generaliza subrotinas para permitir múltiplos pontos de entrada e a suspensão e o resumo da execução em determinados pontos do código. Corrotinas são adequadas para a implementação de componentes como multitarefa, iterador, avaliação preguiçosa e canalização. O termo foi originado por em um artigo de 1963. (pt)
  • Сопрограмма (англ. coroutine) — программный модуль, особым образом организованный для обеспечения взаимодействия с другими модулями по принципу кооперативной многозадачности: модуль приостанавливается в определённой точке, сохраняя полное состояние (включая стек вызовов и счётчик команд), и передаёт управление другому, тот, в свою очередь, выполняет задачу и передаёт управление обратно, сохраняя свои стек и счётчик. Наряду с (англ. fiber), сопрограммы являются средством обеспечения «легковесной» программной многопоточности в том смысле, что могут быть реализованы без использования механизмов переключений контекста операционной системой. Сопрограммы являются более гибкими и обобщёнными, чем подпрограммы: в сравнении с подпрограммой, имеющей всегда одну входную точку, сопрограмма имеет стартовую точку входа и размещённые внутри последовательность возвратов и следующих за ними точек входа. Подпрограмма может возвращаться только однажды, сопрограмма может возвращать управление несколько раз. Время работы подпрограммы определяется принципом LIFO (последняя вызванная подпрограмма завершается первой), время работы сопрограммы определяется её использованием и необходимостью. Появление понятия сопрограммы относят к конструкции, применённой в 1958 году в практике программирования на языке ассемблера, в 1960-е — 1970-е годы сопрограммы практиковались в некоторых высокоуровневых языках (Клу, Симула, Модула-2), но заметное распространение получили лишь в 2000-е годы, когда появились многочисленные библиотеки поддержки сопрограмм в популярных языках программирования, а в некоторые новые языки (такие как Lua, Ruby, Go, Julia) встроены изначально. Сопрограммы используются для реализации многих похожих компонентов программ, таких как генераторы и итераторы, бесконечные списки с использованием ленивых вычислений, каналы, конечные автоматы внутри одной подпрограммы (где состояние определяется по текущей точке входа и выхода), реализации обработки исключений и модели акторов. (ru)
  • Korutiner är inom datavetenskap programkomponenter som generaliserar subrutiner, för att därigenom tillåta olika ingångspunkter och att pausa och fortsätta körningen på vissa platser. Korutiner kom till som en teknik inom lågnivåspråk, men stöds även i vissa högnivåspråk, exempelvis Simula och Modula-2. Ett exempel på nyttan av korutiner. Om man har ett konsument/producent-förhållande där en rutin skapar objekt och lägger dem i kö, och en annan rutin tar objekt från kön och använder dem, så vill man gärna effektivisera detta genom att lägga till och ta bort flera objekt åt gången. Koden skulle kunna se ut så här: var q := new queuecoroutine produce loop while q is not full create some new items add the items to q yield to consumecoroutine consume loop while q is not empty remove some items from q use the items yield to produce Varje korutin gör så mycket den kan innan den överlämnar kontrollen till den andra, med yield-kommandot. Den andra korutinen kan nu fortsätta där den slutade tidigare, och fortsätta att behandla kön. (sv)
  • Співпрограма або співпроцедура (англ. Coroutine) — компонент програми, що узагальнює поняття підпрограми, додатковою підтримкою безлічі точок входу (а не однієї, як підпрограма) і зупинку та продовження виконання із збереженням певного положення. Співпрограми є гнучкішими і узагальненішими, ніж підпрограми, але рідше використовуються на практиці. Застосування співпрограм, будучи методикою ще асемблера, практикувалося лише деякими високорівневими мовами, наприклад Simula і . Співпрограми добре придатні для реалізації багатьох схожих компонентів програм (ітераторів, нескінченних списків, каналів, спільних завдань). Співпрограма має початкову точку входу і розташовані всередині послідовності повернень і наступних точок входу. Підпрограмма може повертати керування лише одного разу, співпрограма може повертати керування багаторазово. Час роботи підпрограми відзначається принципом LIFO (остання викликана підпрограма завершується першою), час роботи співпрограми визначається її використанням і необхідністю. Наведемо простий приклад використання співпрограми. Нехай необхідно реалізувати зв'язок між споживачем і виробником, де одна частина програми створює елементи й поміщає їх у чергу, а інша видаляє їх та використовує. Наступний код реалізує це: var q := new queue coroutine produce loop while q is not full create some new items add the items to q yield to consume coroutine consume loop while q is not empty remove some items from q use the items yield to produce (uk)
  • 协程(英語:coroutine)是计算机程序的一类组件,推广了协作式多任务的子例程,允许执行被挂起与被恢复。相对子例程而言,协程更为一般和灵活,但在实践中使用没有子例程那样广泛。协程更适合于用来实现彼此熟悉的程序组件,如协作式多任务、异常处理、事件循环、迭代器、无限列表和管道。 根据高德纳的说法,马尔文·康威于1958年发明了术语“coroutine”并用于构建汇编程序 ,关于协程的最初解说在1963年发表。 (zh)
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 243800 (xsd:integer)
dbo:wikiPageLength
  • 43995 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 1124323027 (xsd:integer)
dbo:wikiPageWikiLink
dbp:date
  • 2010-03-24 (xsd:date)
  • 2013-01-19 (xsd:date)
dbp:url
dbp:wikiPageUsesTemplate
dcterms:subject
gold:hypernym
rdf:type
rdfs:comment
  • Koprogramy (anglicky coroutine) jsou v informatice programové komponenty, které umožňují na rozdíl od podprogramů (procedur, funkcí, metod) více vstupních bodů, pozastavení a obnovení výpočtu v jejich různých místech. Koprogramy jsou vhodné pro implementaci kooperativního multitaskingu, iterátorů, proudů (stream) a trubek (pipe). Termín koprogram poprvé použil ve své seminární práci v roce 1963. (cs)
  • Coroutines are computer program components that generalize subroutines for non-preemptive multitasking, by allowing execution to be suspended and resumed. Coroutines are well-suited for implementing familiar program components such as cooperative tasks, exceptions, event loops, iterators, infinite lists and pipes. Melvin Conway coined the term coroutine in 1958 when he applied it to the construction of an assembly program. The first published explanation of the coroutine appeared later, in 1963. (en)
  • 코루틴(coroutine)은 루틴의 일종으로서, 협동 루틴이라 할 수 있다(코루틴의 "Co"는 with 또는 together를 뜻한다). 상호 연계 프로그램을 일컫는다고도 표현가능하다. 루틴과 서브 루틴은 서로 비대칭적인 관계이지만, 코루틴들은 완전히 대칭적인, 즉 서로가 서로를 호출하는 관계이다. 코루틴들에서는 무엇이 무엇의 서브루틴인지를 구분하는 것이 불가능하다. 코루틴 A와 B가 있다고 할 때, A를 프로그래밍 할 때는 B를 A의 서브루틴으로 생각한다. 그러나 B를 프로그래밍할 때는 A가 B의 서브루틴이라고 생각한다. 어떠한 코루틴이 발동될 때마다 해당 코루틴은 이전에 자신의 실행이 마지막으로 중단되었던 지점 다음의 장소에서 실행을 재개한다. 도널드 커누스에 따르면 는 1958년 코루틴(coroutine)이라는 용어를 만들어냈으며 당시 그는 이를 어셈블리 프로그램에 적용했다. 코루틴에 관해 설명된 최초의 출판물은 1963년에 등장하였다. (ko)
  • コルーチン(英: co-routine)とはプログラミングの構造の一種。サブルーチンがエントリーからリターンまでを一つの処理単位とするのに対し、コルーチンはいったん処理を中断した後、続きから処理を再開できる。接頭辞 co は協調を意味するが、複数のコルーチンが中断・継続により協調動作を行うことによる。 サブルーチンと異なり、状態管理を意識せずに行えるため、協調的処理、イテレータ、無限リスト、パイプなど、継続状況を持つプログラムが容易に記述できる。 コルーチンはサブルーチンを一般化したものと考えられる。コルーチンをサポートする言語には Modula-2、Simula、Icon、Lua、C#、Limbo、Swift などがある。マルチスレッドで原理的には同じことができるため、現在はそちらが使われるケースが多い。これはマルチスレッドであれば直接OSの支援を受けられることや、エントリー/リターンの構造を変えずにコードを多重化できるので、過去の言語との親和性が良いなどが理由である。ただし、マルチスレッドの場合プログラマが同期制御を行わなければならないので、コルーチンのような簡易さはない。 コルーチンという名称は、メルヴィン・コンウェイの1963年の論文に最初の記述がある。 (ja)
  • Em ciência da computação, corrotina é um componente de um programa de computador que generaliza subrotinas para permitir múltiplos pontos de entrada e a suspensão e o resumo da execução em determinados pontos do código. Corrotinas são adequadas para a implementação de componentes como multitarefa, iterador, avaliação preguiçosa e canalização. O termo foi originado por em um artigo de 1963. (pt)
  • 协程(英語:coroutine)是计算机程序的一类组件,推广了协作式多任务的子例程,允许执行被挂起与被恢复。相对子例程而言,协程更为一般和灵活,但在实践中使用没有子例程那样广泛。协程更适合于用来实现彼此熟悉的程序组件,如协作式多任务、异常处理、事件循环、迭代器、无限列表和管道。 根据高德纳的说法,马尔文·康威于1958年发明了术语“coroutine”并用于构建汇编程序 ,关于协程的最初解说在1963年发表。 (zh)
  • In der Informatik sind Koroutinen (auch Coroutinen) eine Verallgemeinerung des Konzepts einer Prozedur oder Funktion. Der prinzipielle Unterschied zwischen Koroutinen und Prozeduren ist, dass Koroutinen ihren Ablauf unterbrechen und später wieder aufnehmen können, wobei sie ihren Status beibehalten. (de)
  • En un programa, una corrutina es una unidad de tratamiento semejante a una subrutina, con la diferencia de que, mientras que la salida de una subrutina pone fin a esta, la salida de una corrutina puede ser el resultado de una suspensión de su tratamiento hasta que se le indique retomar su ejecución (multitarea cooperativa). La suspensión de la corrutina y su reanudación pueden ir acompañadas de una transmisión de datos. Las corrutinas permiten realizar tratamientos basados en algoritmos cooperativos como iteradores, generadores, tuberías, etcétera. (es)
  • Dans un programme, une coroutine est une unité de traitement qui s'apparente à une routine, à ceci près que, alors que la sortie d'une routine met fin à la routine, la sortie de la coroutine peut être le résultat d'une suspension de son traitement jusqu'à ce qu'il lui soit signalé de reprendre son cours. La suspension de la coroutine et la reprise de son cours peuvent s'accompagner d'une transmission de données. Les coroutines permettent de réaliser des traitements basés sur des algorithmes coopératifs comme les itérateurs, les générateurs, des canaux de communication, etc. (fr)
  • Pojęcie współprogramu ma dwie odmienne definicje. Obie definicje zgodnie stwierdzają, że współprogram cechuje się posiadaniem ciągu instrukcji do wykonania i ponadto możliwością zawieszania wykonywania jednego współprogramu A i przenoszenia wykonywania do innego współprogramu B. W szczególności można wznowić pracę zawieszonego współprogramu A, a wykonywanie będzie podjęte w miejscu, w którym zostało zawieszone. Tym co różni obie definicje jest zdolność współpracy z rekurencyjnymi procedurami (W językach programowania funkcyjnego koncepcja współprogramu istnieje pod postacią kontynuacji – pojęcia wprowadzonego niemal równocześnie ze współprogramami). (pl)
  • Korutiner är inom datavetenskap programkomponenter som generaliserar subrutiner, för att därigenom tillåta olika ingångspunkter och att pausa och fortsätta körningen på vissa platser. Korutiner kom till som en teknik inom lågnivåspråk, men stöds även i vissa högnivåspråk, exempelvis Simula och Modula-2. var q := new queuecoroutine produce loop while q is not full create some new items add the items to q yield to consumecoroutine consume loop while q is not empty remove some items from q use the items yield to produce (sv)
  • Сопрограмма (англ. coroutine) — программный модуль, особым образом организованный для обеспечения взаимодействия с другими модулями по принципу кооперативной многозадачности: модуль приостанавливается в определённой точке, сохраняя полное состояние (включая стек вызовов и счётчик команд), и передаёт управление другому, тот, в свою очередь, выполняет задачу и передаёт управление обратно, сохраняя свои стек и счётчик. Наряду с (англ. fiber), сопрограммы являются средством обеспечения «легковесной» программной многопоточности в том смысле, что могут быть реализованы без использования механизмов переключений контекста операционной системой. (ru)
  • Співпрограма або співпроцедура (англ. Coroutine) — компонент програми, що узагальнює поняття підпрограми, додатковою підтримкою безлічі точок входу (а не однієї, як підпрограма) і зупинку та продовження виконання із збереженням певного положення. Співпрограми є гнучкішими і узагальненішими, ніж підпрограми, але рідше використовуються на практиці. Застосування співпрограм, будучи методикою ще асемблера, практикувалося лише деякими високорівневими мовами, наприклад Simula і . Співпрограми добре придатні для реалізації багатьох схожих компонентів програм (ітераторів, нескінченних списків, каналів, спільних завдань). (uk)
rdfs:label
  • Koprogram (cs)
  • Koroutine (de)
  • Corrutina (es)
  • Coroutine (en)
  • Coroutine (fr)
  • 코루틴 (ko)
  • コルーチン (ja)
  • Współprogram (pl)
  • Сопрограмма (ru)
  • Corrotina (pt)
  • Korutin (sv)
  • Співпрограма (uk)
  • 协程 (zh)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:wikiPageDisambiguates of
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is foaf:primaryTopic of
Powered by OpenLink Virtuoso    This material is Open Knowledge     W3C Semantic Web Technology     This material is Open Knowledge    Valid XHTML + RDFa
This content was extracted from Wikipedia and is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License