[go: up one dir, main page]

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

A sequence point defines any point in a computer program's execution at which it is guaranteed that all side effects of previous evaluations will have been performed, and no side effects from subsequent evaluations have yet been performed. They are often mentioned in reference to C and C++, because they are a core concept for determining the validity and, if valid, the possible results of expressions. Adding more sequence points is sometimes necessary to make an expression defined and to ensure a single valid order of evaluation.

Property Value
dbo:abstract
  • A sequence point defines any point in a computer program's execution at which it is guaranteed that all side effects of previous evaluations will have been performed, and no side effects from subsequent evaluations have yet been performed. They are often mentioned in reference to C and C++, because they are a core concept for determining the validity and, if valid, the possible results of expressions. Adding more sequence points is sometimes necessary to make an expression defined and to ensure a single valid order of evaluation. With C++11, usage of the term sequence point has been replaced by sequencing. There are three possibilities: 1. * An expression's evaluation can be sequenced before that of another expression, or equivalently the other expression's evaluation is sequenced after that of the first. 2. * The expressions' evaluation is indeterminately sequenced, meaning one is sequenced before the other, but which is unspecified. 3. * The expressions' evaluation is unsequenced. The execution of unsequenced evaluations can overlap, with catastrophic undefined behavior if they share state. This situation can arise in parallel computations, causing race conditions. However, it can already arise in simple non-concurrent situations like (a = 1) + (b = a), where part of the assignment to a (e.g., half of the bits) may happen before b = a, and the rest afterwards, such that after evaluation of the expression, b may contain a meaningless intermediate state of a. (en)
  • Un punto di sequenza (sequence point) è un punto nell'esecuzione di un programma informatico nel quale è garantito il fatto che tutti gli effetti collaterali delle istruzioni precedenti siano stati realizzati e nessun effetto collaterale delle istruzioni seguenti sia stato realizzato. I punti di sequenza sono un concetto chiave in linguaggi come C e C++, nei quali sono importanti per determinare la validità di una certa istruzione. L'aggiunta di ulteriori punti di sequenza nel codice può essere necessaria, ad esempio, per rendere un'espressione ben definita e garantire l'unicità dell'ordine di valutazione delle operazioni in essa contenute. In C++11 l'espressione sequence point è stata sostituita da sequencing. Date due espressioni, vi sono tre possibili casi di sequencing: 1. * la valutazione di un'espressione può essere "sequenced before" rispetto ad un'altra espressione o, equivalentemente, l'altra espressione è "sequenced after". 2. * le espressioni sono "indeterminately sequenced", ovvero una delle due è "sequenced before" rispetto all'altra, ma l'ordine è indefinito. 3. * la valutazione è "unsequenced". Mentre nel primo caso la semantica del programma è ben definita, gli altri due casi sono problematici. In particolare, la valutazione di espressioni unsequenced può sovrapporsi e, se le due espressioni dipendono da uno stato condiviso, il risultato è e può avere effetti catastrofici. Tale situazione è un problema che si può incontrare facilmente in calcolo parallelo (corsa critica), ma può verificarsi anche in programmi strettamente sequenziali. Ad esempio, nella valutazione dell'espressione (a = 1) + (b = a) parte dell'assegnamento a = 1 (es. metà dei bit) può essere completato prima di b = a e parte dopo, per cui al termine della valutazione b può contenere uno stato intermedio di a, totalmente privo di significato. (it)
  • Точка следования (англ. sequence point) — в программировании любая точка программы, в которой гарантируется, что все побочные эффекты предыдущих вычислений уже проявились, а побочные эффекты последующих ещё отсутствуют. Точки следования часто упоминают, когда речь идёт о языках C и C++. В этих языках можно записать выражение, порядок вычисления подвыражений которого не определён стандартами и влияет на результат. Добавление одной или нескольких точек следования позволяет гарантировать порядок вычисления в некоторых случаях. Стоит заметить, что подход к упорядочению процесса вычисления выражений на основе точек следования изначально достаточно хорошо отвечал потребностям языка C, но не являлся адекватным для языка C++, в котором был существенно расширен набор операторов, возвращающих lvalue результаты. А с появлением необходимости языковой поддержки многопоточности в языках C и C++ от упорядочения на основе точек следования пришлось отказаться полностью. Современные спецификации языков C и C++ описывают упорядочение процесса вычисления выражений через отношения упорядочено до (sequenced before) и упорядочено после (sequenced after). Начиная со стандарта C++11, в языке C++ больше не существует понятия точки следования. В языке С понятие точки следования сохранилось по сей день, но, начиная со стандарта C11, не как фундаментальная концепция, а лишь как комбинация отношений упорядочено до и упорядочено после. Стандарт C++11, а также последующие стандарты C++14 и C++17 внесли в операторы языка C++ большое количество дополнительных упорядочений на основе новой модели, что привело к тому, что многие выражения, поведение которых являлось неопределенным в C++98, получили вполне определенное поведение в современном C++. На сегодняшний день строгость упорядочения процесса вычисления выражений в языке C++ существенно превосходит таковую в языке C. (ru)
  • 顺序点,也称作序列点,是计算机程序中一些执行点,在该点处之前的求值的所有的副作用已经发生,在它之后的求值的所有副作用仍未开始。在C与C++程序设计语言中,表达式的值依赖于它的子表达式的求值顺序。增加更多的顺序点限制了可能的求值顺序,能保证有一个一致结果。 C++11中,顺序点概念已经被这种方法取代:直接指出一个求值是在另一个求值之前,或者两个求值是无顺序的。无顺序的求值可以重叠进行。 (zh)
  • В імперативному програмуванні точка перебігу (англ. sequence point) визначає будь-яку точку виконання програми, в якій гарантовано, що всі побічні ефекти попередніх обчислень вже виконані й жоден з побічних ефектів наступних обчислень ще не відбувся. Вони часто згадуються стосовно C і C++, бо результат деяких виразів залежить від послідовності виконання підвиразів. Додання однієї або більше точок перебігу це спосіб забезпечення послідовного результату, бо так обмежується можливий порядок обчислень. (uk)
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 1230835 (xsd:integer)
dbo:wikiPageLength
  • 8239 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 1119494363 (xsd:integer)
dbo:wikiPageWikiLink
dbp:date
  • July 2022 (en)
dbp:inaccurate
  • yes (en)
dbp:reason
  • C11, C++11 and C++17 introduced new and stricter rules (en)
dbp:talk
  • C++17 P0145 Specifies a lot stricter sequencing (en)
dbp:wikiPageUsesTemplate
dct:subject
rdf:type
rdfs:comment
  • 顺序点,也称作序列点,是计算机程序中一些执行点,在该点处之前的求值的所有的副作用已经发生,在它之后的求值的所有副作用仍未开始。在C与C++程序设计语言中,表达式的值依赖于它的子表达式的求值顺序。增加更多的顺序点限制了可能的求值顺序,能保证有一个一致结果。 C++11中,顺序点概念已经被这种方法取代:直接指出一个求值是在另一个求值之前,或者两个求值是无顺序的。无顺序的求值可以重叠进行。 (zh)
  • В імперативному програмуванні точка перебігу (англ. sequence point) визначає будь-яку точку виконання програми, в якій гарантовано, що всі побічні ефекти попередніх обчислень вже виконані й жоден з побічних ефектів наступних обчислень ще не відбувся. Вони часто згадуються стосовно C і C++, бо результат деяких виразів залежить від послідовності виконання підвиразів. Додання однієї або більше точок перебігу це спосіб забезпечення послідовного результату, бо так обмежується можливий порядок обчислень. (uk)
  • A sequence point defines any point in a computer program's execution at which it is guaranteed that all side effects of previous evaluations will have been performed, and no side effects from subsequent evaluations have yet been performed. They are often mentioned in reference to C and C++, because they are a core concept for determining the validity and, if valid, the possible results of expressions. Adding more sequence points is sometimes necessary to make an expression defined and to ensure a single valid order of evaluation. (en)
  • Un punto di sequenza (sequence point) è un punto nell'esecuzione di un programma informatico nel quale è garantito il fatto che tutti gli effetti collaterali delle istruzioni precedenti siano stati realizzati e nessun effetto collaterale delle istruzioni seguenti sia stato realizzato. I punti di sequenza sono un concetto chiave in linguaggi come C e C++, nei quali sono importanti per determinare la validità di una certa istruzione. L'aggiunta di ulteriori punti di sequenza nel codice può essere necessaria, ad esempio, per rendere un'espressione ben definita e garantire l'unicità dell'ordine di valutazione delle operazioni in essa contenute. (it)
  • Точка следования (англ. sequence point) — в программировании любая точка программы, в которой гарантируется, что все побочные эффекты предыдущих вычислений уже проявились, а побочные эффекты последующих ещё отсутствуют. Точки следования часто упоминают, когда речь идёт о языках C и C++. В этих языках можно записать выражение, порядок вычисления подвыражений которого не определён стандартами и влияет на результат. Добавление одной или нескольких точек следования позволяет гарантировать порядок вычисления в некоторых случаях. (ru)
rdfs:label
  • Punto di sequenza (it)
  • Sequence point (en)
  • Точка следования (ru)
  • Точка перебігу (uk)
  • 顺序点 (zh)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
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