dbo:abstract
|
- Continuation, česky pokračování, se jako speciální pojem užívá při programování počítačů, kde se chápe jako abstraktní reprezentace okamžitého stavu vykonávání nějakého programu. Programovací jazyky, které s takovým pokračováním umějí pracovat, ho uchovávají jako datovou strukturu obsahující všechny údaje o výpočetním procesu v určitém momentu jeho provádění. Tyto údaje jsou v počítači vždy k dispozici, ovšem pouze skrytě, v tzv. běhovém prostředí (runtime environment). Zde zmiňovaná datová struktura pokračování je však přístupná v programovacím jazyce a dá se výhodně využít k programování některých speciálních řídicích mechanismů, například ke zpracování výjimek (exception handling), vytváření koprogramů (coroutines), generátorů, vícevláknových programů (thread computing), při programování webových aplikací, aj. Slovo pokračování má v tomto případě jasný význam, protože příslušná datová struktura opravdu zachycuje pokračování programu od toho bodu zpracování, v němž byla vytvořena. Kdyby se program v tom momentu přerušil a měl pokračovat někdy později, může se řídit tímto pokračováním. Zjednodušeně si pokračování lze představit jako všechny příkazy, které mají následovat za místem, kde se zpracování programu právě nachází. To se ovšem nesmí chápat staticky, protože počítač některé operace provádí v jiném pořadí, než byly zapsány v programu, například v aritmetických výrazech vždy pořadí určují priority operátorů a závorky. First-class continuations, česky asi pokračování první kategorie, představují datový typ, který splňuje požadavky na objekty první kategorie. Programovací jazyk, který taková pokračování obsahuje, dovoluje stav provádění v kterémkoli bodu programu uložit a později se k němu zase vrátit, a to i opakovaně. Pokračování se poprvé objevilo v jazyce Scheme, v současnosti je možné ho využívat ve velké řadě programovacích jazyků. (cs)
- Μια συνέχεια (continuation) επαναφέρει ένα στιγμιότυπο μιας υπολογιστικής διεργασίας σε ένα δοσμένο σημείο της εκτέλεσής της. Περιλαμβάνει πληροφορίες όπως η τρέχουσα στοίβα της διεργασίας (με όλα τα δεδομένα των οποίων ο χρόνος ζωής είναι μέσα στη διεργασία, π.χ. οι "τοπικές μεταβλητές") και η θέση της διεργασίας στον υπολογισμό. Ένα τέτοιο στιγμιότυπο μπορεί στη συνέχεια να κληθεί και να συνεχιστεί. Η "τρέχουσα συνέχεια" ("current continuation") ή "συνέχεια του υπολογιστικού βήματος" ("continuation of the computation step") είναι η συνέχεια, η οποία, από την πλευρά του κώδικα που εκτελείται, θα προέκυπτε από το τρέχον σημείο του προγράμματος που εκτελείται. Ο όρος συνέχειες μπορεί επίσης να σημαίνει συνέχειες πρώτης τάξης, οι οποίες είναι σχήματα κώδικα που επιτρέπουν σε μια γλώσσα προγραμματισμού να αποθηκεύει την κατάσταση του υπολογισμού σε κάποιο σημείο και να μπορεί αργότερα, σε κάποιο άλλο σημείο του προγράμματος, να επιστρέφει σε αυτήν. Τα προγράμματα πρέπει να κρατούν θέσεις στη μνήμη για τις μεταβλητές που χρησιμοποιούν οι συναρτήσεις τους. Οι περισσότερες γλώσσες προγραμματισμού χρησιμοποιούν μια στοίβα κλήσεων για να αποθηκεύουν τις μεταβλητές που χρειάζονται γιατί με αυτόν τον τρόπο έχουν γρήγορη και απλή δέσμευση μνήμης και αυτόματη αποδέσμευση. Υπάρχουν επίσης γλώσσες προγραμματισμού που χρησιμοποιούν για αυτόν το σκοπό, ο οποίος επιτρέπει μεγαλύτερη ευελιξία αλλά έχει υψηλότερο κόστος δέσμευσης και αποδέσμευσης μνήμης. Και οι δύο αυτές διαφορετικές υλοποιήσεις έχουν πλεονεκτήματα και μειονεκτήματα όσον αφορά τις συνέχειες. Σχεδόν όλες οι γλώσσες έχουν κάποιον τρόπο για να αλλάζουν τη σειρά των βημάτων εκτέλεσης (δηλ. την τροποποίηση της συνέχειας ενός υπολογιστικού βήματος). Η εντολή είναι η πιο βασική μορφή από αυτές. Δομές ελέγχου όπως οι εντολές if, οι βρόχοι και οι εντολές return, break και exit, είναι πιο δομημένοι (και περιορισμένοι) τρόποι να τροποποιηθεί η σειρά των εντολών που εκτελούνται και στην πραγματικότητα μπορούν να θεωρηθούν σαν περιορισμένες εντολές goto. Υπάρχουν και πιο πολύπλοκα σχήματα κώδικα. Για παράδειγμα στη C, η εντολή setjmp μπορεί να χρησιμοποιηθεί για να γίνει άλμα από τη μέση μιας συνάρτησης σε μια άλλη συνάρτηση, με την προϋπόθεση ότι η άλλη συνάρτηση είναι χαμηλότερα στη στοίβα (για παράδειγμα, μπορεί να περιμένει την αρχική συνάρτηση να τελειώσει την εκτέλεσή της). Άλλα πιο πολύπλοκα παραδείγματα είναι οι συρρουτίνες στη Simula, τα τάσκλετ στην , οι γεννήτριες στην Icon και την Python, οι συνέχειες στη Scala (από την έκδοση 2.8), οι στη Ruby (από την έκδοση 1.9.1), ο μηχανισμός οπισθοδρόμησης (backtracking) στην Prolog, και τα νήματα. (el)
- في علم الحاسوب، تعد الاستمرارية تمثيلاً تجريديًا لحالة التحكم في برنامج حاسوب. الاستمرار يطبق (يعيد reifies) حالة التحكم في البرنامج، أي أن الاستمرارية هي بنية بيانات تمثل العملية الحسابية عند نقطة معينة في تنفيذ العملية؛ يمكن الوصول إلى بنية البيانات التي تم إنشاؤها بواسطة لغة البرمجة، بدلاً من إخفاءها في بيئة وقت التشغيل. تفيد عمليات الاستمرارية في تشفير آليات التحكم الأخرى في لغات البرمجة مثل الاستثناءات والمولدات والروتينات المساعدة وما إلى ذلك. " الاستمرارية الحالية current continuation أو "استمرار خطوة الحساب" هي الاستمرارية، من منظور الكود المشغّل، الذي سيتم اشتقاقهمن النقطة الحالية في تنفيذ البرنامج. يمكن أيضًا استخدام مصطلح استمرارية للإشارة إلى استمرارية الدرجة الأولى، والتي هي عبارة عن تركيبات تعطي لغة البرمجة القدرة على حفظ حالة التنفيذ في أي نقطة والعودة إلى تلك النقطة في وقت لاحق في البرنامج، ربما عدة مرات. (ar)
- Die Continuation ist ein abstraktes Konzept höherer, insbesondere funktionaler Programmiersprachen. Er bezeichnet den Kontrollzustand eines Programms zu einem bestimmten Zeitpunkt zu dessen Laufzeit. Der Begriff Continuation entspricht daher näherungsweise dem Konzept des Prozesskontexts, allerdings schließt der Prozesskontext den aktuellen Zustand der Programmdaten, also z. B. die Werte lokaler und globaler Variablen mit ein. Zugriff auf Continuations ermöglicht es, den Kontrollfluss eines Programmes beliebig zu beeinflussen. So wird es möglich, ein Programm zu einem beliebigen Zeitpunkt anzuhalten und später fortzusetzen, oder das Programm an einer bestimmten Stelle in einen früheren Zustand zurückzuversetzen.Diese Eigenschaft kommt auch im Namen Continuation, zu deutsch Fortsetzung zum Ausdruck.Unter Verwendung von Continuations ist jede Art von Schleife simulierbar.Der uneingeschränkte Zugriff auf die Continuation sowie eine Form einer bedingten Anweisung reichen bereits aus, um beliebige berechenbare Probleme zu lösen. Diese Fähigkeit ermöglicht einen eigenen Programmierstil, den sog. continuation-passing style. Verschiedene Programmiersprachen unterstützen den Umgang mit Continuations, die bekanntesten Vertreter dabei sind verschiedene Lispdialekte wie Scheme. Moderne objektorientierte Sprachen bieten mit Konzepten wie Ausnahmebehandlung eingeschränkte Möglichkeiten, auf die Continuation eines Programms zuzugreifen. (de)
- In computer science, a continuation is an abstract representation of the control state of a computer program. A continuation implements (reifies) the program control state, i.e. the continuation is a data structure that represents the computational process at a given point in the process's execution; the created data structure can be accessed by the programming language, instead of being hidden in the runtime environment. Continuations are useful for encoding other control mechanisms in programming languages such as exceptions, generators, coroutines, and so on. The "current continuation" or "continuation of the computation step" is the continuation that, from the perspective of running code, would be derived from the current point in a program's execution. The term continuations can also be used to refer to first-class continuations, which are constructs that give a programming language the ability to save the execution state at any point and return to that point at a later point in the program, possibly multiple times. (en)
- En informatique, la continuation d'un système est son futur, c'est-à-dire la suite des instructions qu'il lui reste à exécuter à un moment précis. C'est un point de vue pour décrire l'état de la machine. (fr)
- In informatica, una continuazione (continuation in inglese) è un modo per rappresentare lo stato di esecuzione di un programma ad un punto dato. Molti linguaggi hanno un costrutto che permette di salvare lo stato corrente di esecuzione per poi riprendere l'esecuzione a partire da questo stato in un momento successivo. Questa tecnica è tipica della programmazione funzionale ma sono molti i linguaggi di programmazione che presentano questa caratteristica con varie denominazioni:
* Scheme: call/cc (abbreviazione di call-with-current-continuation)
* Standard ML of New Jersey: SMLofNJ.CONT.callcc
* C: setcontext et al. (UNIX System V e GNU libc)
* Ruby: callcc
* : (vedi oltre) possedeva il modulo continuation ma è stato rimosso.
* Haskell: Monade di continuazione La continuazione si utilizza per "saltare" da una parte del programma all'altra a seconda delle necessità. Funziona in modo analogo al comando goto presente nel BASIC con la differenza che il comando goto è sconsigliato perché rende la manutenzione del codice difficile mentre la continuazione non rende ardua la modifica del codice quando questo diventa di elevate dimensioni. La continuazione non salta tra linee di codice ma tra stati. Si può vedere il programma come un insieme di stati che evolvono a seconda delle azioni dell'utente e la continuazione consente di saltare tra stati diversi a seconda delle necessità. Utilizza un modello di programmazione simile a quello delle reti di Petri. Il supporto per la continuazione da parte dei vari linguaggi è molto variabile. Un linguaggio di programmazione supporta la continuazione rientrante o di prima classe se una continuazione può essere richiamata più volte per rientrare nello stesso contesto (l'uso del termine rientrante in questo caso non è da confondere con l'uso fatto trattando il multitasking). Se le continuazione può essere usata solo per uscire dal contesto corrente, si dice il linguaggio supporta l'escape continuation. Molti linguaggi che non supportanto direttamente la continuazione, hanno il supporto per la gestione delle eccezioni, che è equivalente all'escape continuation e può essere usata per gli stessi scopi. I costrutti C setjmp e longjmp sono di questo tipo: possono essere usati solo per srotolare lo stack e non per ripristinare una precedente continuazione salvata. Le continuazioni di prima classe possono essere usate per implementare l'. La presenza sia della continuazione di prima classe che dell'ottimizzazione della chiamata di coda garantita, è uno dei punti di distinzione dello Scheme dagli altri linguaggi Lisp. Molti programmatori che non sono abituati alla continuazione, la trovano un concetto difficile da capire. Il linguaggio di programmazione esoterico include questa caratteristica solo per la sua difficoltà di comprensione. La continuazione è strettamente collegata alla trasformazione della doppia negazione dalla logica classica alla logica intuizionistica attraverso l' e alla legge di Peirce. (it)
- 計算機科学における継続(けいぞく、continuation)とは、プログラムを実行中のある時点において、評価されていない残りのプログラム(the rest of the program)を表現するものであり、手続き(procedure)あるいは関数(function)として表現されるものである。 継続に相当する概念は1960年代初頭から存在しており、Algol 60のコンパイラの実装などの文献にたびたび登場していたが、継続の利用に関する最も早い記述は、1964年のアドリアン・ファン・ワインハールデン (en:Adriaan van Wijngaarden) によるものである。 (ja)
- Продолжение (англ. continuation) — абстрактное представление состояния программы в определённый момент, которое может быть сохранено и использовано для перехода в это состояние. Продолжения содержат всю информацию, чтобы продолжить выполнения программы с определённой точки; состояние глобальных переменных обычно не сохраняется, однако для функциональных языков это несущественно (например, выборочное сохранение и восстановление значений глобальных объектов в Scheme достигается отдельным механизмом dynamic-wind). Продолжения похожи на <a href="/wiki/Goto" title="Goto">goto</a> Бейсика или макросы <a href="/wiki/Setjmp" class="mw-redirect" title="Setjmp">setjmp</a> и <a href="/wiki/Longjmp" title="Longjmp">longjmp</a> в Си, так как также позволяют перейти в любое место программы. Но продолжения, в отличие от goto, позволяют перейти только в участок программы с определённым состоянием, которое должно быть сохранено заранее, в то время, как goto позволяет перейти в участок программы с неинициализированными переменными. Первый язык, реализовавший концепцию продолжений — Scheme, позднее встроенная поддержка продолжений появилась в ряде других языков. (ru)
- Продо́вження (іноді відкладені обчислення, англ. continuation) представляє стан програми в певний момент, який може бути збережений і використаний для переходу в цей стан. Продовження містять всю інформацію, щоб продовжити виконання програми з певної точки. Продовження схожі на goto, оскільки також дозволяють перейти будь-яке місце програми. Але продовження, на відміну від goto, дозволяють перейти лише в ділянку програми з певним станом, який має бути збережений заздалегідь, в той час, як goto дозволяє перейти у ділянку програми з неініціалізованими змінними. (uk)
- 在计算机科学和程序设计中,计算续体或简称续体(英語:continuation,也译作续延、延續性),是对计算机程序的控制状态的一种抽象表现。续体实化了程序状态信息。可以理解为,一个续体以数据结构的形式表现了程序在运行过程中某一点的计算状态,相应的数据内容可以被编程语言访问,而不是被运行时环境所隐藏掉。这对实现编程语言的某些控制机制,比如异常处理、协程、生成器非常有用。 续体包含了当前程序的栈(包括当前周期内的所有数据,也就是局部变量),以及当前运行的位置。一个续体的实例可以在将来用在控制流上,被调用时它从所表达的状态开始恢复执行。 (zh)
|
rdfs:comment
|
- En informatique, la continuation d'un système est son futur, c'est-à-dire la suite des instructions qu'il lui reste à exécuter à un moment précis. C'est un point de vue pour décrire l'état de la machine. (fr)
- 計算機科学における継続(けいぞく、continuation)とは、プログラムを実行中のある時点において、評価されていない残りのプログラム(the rest of the program)を表現するものであり、手続き(procedure)あるいは関数(function)として表現されるものである。 継続に相当する概念は1960年代初頭から存在しており、Algol 60のコンパイラの実装などの文献にたびたび登場していたが、継続の利用に関する最も早い記述は、1964年のアドリアン・ファン・ワインハールデン (en:Adriaan van Wijngaarden) によるものである。 (ja)
- Продо́вження (іноді відкладені обчислення, англ. continuation) представляє стан програми в певний момент, який може бути збережений і використаний для переходу в цей стан. Продовження містять всю інформацію, щоб продовжити виконання програми з певної точки. Продовження схожі на goto, оскільки також дозволяють перейти будь-яке місце програми. Але продовження, на відміну від goto, дозволяють перейти лише в ділянку програми з певним станом, який має бути збережений заздалегідь, в той час, як goto дозволяє перейти у ділянку програми з неініціалізованими змінними. (uk)
- 在计算机科学和程序设计中,计算续体或简称续体(英語:continuation,也译作续延、延續性),是对计算机程序的控制状态的一种抽象表现。续体实化了程序状态信息。可以理解为,一个续体以数据结构的形式表现了程序在运行过程中某一点的计算状态,相应的数据内容可以被编程语言访问,而不是被运行时环境所隐藏掉。这对实现编程语言的某些控制机制,比如异常处理、协程、生成器非常有用。 续体包含了当前程序的栈(包括当前周期内的所有数据,也就是局部变量),以及当前运行的位置。一个续体的实例可以在将来用在控制流上,被调用时它从所表达的状态开始恢复执行。 (zh)
- في علم الحاسوب، تعد الاستمرارية تمثيلاً تجريديًا لحالة التحكم في برنامج حاسوب. الاستمرار يطبق (يعيد reifies) حالة التحكم في البرنامج، أي أن الاستمرارية هي بنية بيانات تمثل العملية الحسابية عند نقطة معينة في تنفيذ العملية؛ يمكن الوصول إلى بنية البيانات التي تم إنشاؤها بواسطة لغة البرمجة، بدلاً من إخفاءها في بيئة وقت التشغيل. تفيد عمليات الاستمرارية في تشفير آليات التحكم الأخرى في لغات البرمجة مثل الاستثناءات والمولدات والروتينات المساعدة وما إلى ذلك. (ar)
- Continuation, česky pokračování, se jako speciální pojem užívá při programování počítačů, kde se chápe jako abstraktní reprezentace okamžitého stavu vykonávání nějakého programu. Programovací jazyky, které s takovým pokračováním umějí pracovat, ho uchovávají jako datovou strukturu obsahující všechny údaje o výpočetním procesu v určitém momentu jeho provádění. Tyto údaje jsou v počítači vždy k dispozici, ovšem pouze skrytě, v tzv. běhovém prostředí (runtime environment). Zde zmiňovaná datová struktura pokračování je však přístupná v programovacím jazyce a dá se výhodně využít k programování některých speciálních řídicích mechanismů, například ke zpracování výjimek (exception handling), vytváření koprogramů (coroutines), generátorů, vícevláknových programů (thread computing), při programován (cs)
- Μια συνέχεια (continuation) επαναφέρει ένα στιγμιότυπο μιας υπολογιστικής διεργασίας σε ένα δοσμένο σημείο της εκτέλεσής της. Περιλαμβάνει πληροφορίες όπως η τρέχουσα στοίβα της διεργασίας (με όλα τα δεδομένα των οποίων ο χρόνος ζωής είναι μέσα στη διεργασία, π.χ. οι "τοπικές μεταβλητές") και η θέση της διεργασίας στον υπολογισμό. Ένα τέτοιο στιγμιότυπο μπορεί στη συνέχεια να κληθεί και να συνεχιστεί. Η "τρέχουσα συνέχεια" ("current continuation") ή "συνέχεια του υπολογιστικού βήματος" ("continuation of the computation step") είναι η συνέχεια, η οποία, από την πλευρά του κώδικα που εκτελείται, θα προέκυπτε από το τρέχον σημείο του προγράμματος που εκτελείται. (el)
- In computer science, a continuation is an abstract representation of the control state of a computer program. A continuation implements (reifies) the program control state, i.e. the continuation is a data structure that represents the computational process at a given point in the process's execution; the created data structure can be accessed by the programming language, instead of being hidden in the runtime environment. Continuations are useful for encoding other control mechanisms in programming languages such as exceptions, generators, coroutines, and so on. (en)
- Die Continuation ist ein abstraktes Konzept höherer, insbesondere funktionaler Programmiersprachen. Er bezeichnet den Kontrollzustand eines Programms zu einem bestimmten Zeitpunkt zu dessen Laufzeit. Der Begriff Continuation entspricht daher näherungsweise dem Konzept des Prozesskontexts, allerdings schließt der Prozesskontext den aktuellen Zustand der Programmdaten, also z. B. die Werte lokaler und globaler Variablen mit ein. (de)
- In informatica, una continuazione (continuation in inglese) è un modo per rappresentare lo stato di esecuzione di un programma ad un punto dato. Molti linguaggi hanno un costrutto che permette di salvare lo stato corrente di esecuzione per poi riprendere l'esecuzione a partire da questo stato in un momento successivo. Questa tecnica è tipica della programmazione funzionale ma sono molti i linguaggi di programmazione che presentano questa caratteristica con varie denominazioni: (it)
- Продолжение (англ. continuation) — абстрактное представление состояния программы в определённый момент, которое может быть сохранено и использовано для перехода в это состояние. Продолжения содержат всю информацию, чтобы продолжить выполнения программы с определённой точки; состояние глобальных переменных обычно не сохраняется, однако для функциональных языков это несущественно (например, выборочное сохранение и восстановление значений глобальных объектов в Scheme достигается отдельным механизмом dynamic-wind). Продолжения похожи на <a href="/wiki/Goto" title="Goto">goto</a> Бейсика или макросы <a href="/wiki/Setjmp" class="mw-redirect" title="Setjmp">setjmp</a> и <a href="/wiki/Longjmp" title="Longjmp">longjmp</a> в Си, так как также позволяют перейти в любое место программы. Но продолжен (ru)
|