Циклические ссылки: что это такое? Объяснение понятия с примером – замкнутая цепочка ссылок, где последний объект указывает на первый. Программирование, базы данных.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Серия ссылок, где последний объект ссылается на первый.
Series of references where the last object references the first
a series of references where the last object references the first
Циклическая ссылка (или цикл ссылок) — это серия ссылок, где последний объект ссылается на первый, образуя замкнутый цикл.
A circular reference (or reference cycle) is a series of references where the last object references the first, resulting in a closed loop.
Простой пример
Новичок спрашивает у местного жителя, где находится городская библиотека. "Прямо напротив почтового отделения", - отвечает местный житель. Новичок кивает и спрашивает: "А где почтовое отделение?" "Да это просто", - отвечает местный житель. "Оно сразу за библиотекой!"
A newcomer asks a local where the town library is. "Just in front of the post office," says the local. The newcomer nods, and follows up: "But where is the post office?" "Why, that's simple," replies the local. "It's just behind the library!"
На языке
Круговая ссылка не следует путать с логической ошибкой круговой аргументации. Хотя круговая ссылка часто бывает бесполезна и не предоставляет никакой информации, например, две статьи в книжном указателе, ссылающиеся друг на друга, это не обязательно означает, что круговая ссылка совершенно бесполезна. Словари, например, по определению всегда являются круговой ссылкой, поскольку все слова в словаре определяются через другие слова, но при этом словарь остается полезным справочным пособием. Предложения, содержащие круговые ссылки, все равно могут быть осмысленными:
A circular reference is not to be confused with the logical fallacy of a circular argument. Although a circular reference will often be unhelpful and reveal no information, such as two entries in a book index referring to each other, it is not necessarily so that a circular reference is of no use. Dictionaries, for instance, must always ultimately be a circular reference since all words in a dictionary are defined in terms of other words, but a dictionary nevertheless remains a useful reference. Sentences containing circular references can still be meaningful:
Ее брат подарил ей котенка; его сестра поблагодарила его за это. – это круговая конструкция, но не лишенная смысла. Более того, можно утверждать, что самоссылка является необходимым следствием закона непротиворечия Аристотеля, фундаментальной философской аксиомы. С этой точки зрения, без самоссылки логика и математика становятся невозможными или, по крайней мере, теряют свою полезность.
Her brother gave her a kitten; his sister thanked him for it. is circular, but not without meaning. Indeed, it can be argued that self reference is a necessary consequence of Aristotle's Law of non contradiction, a fundamental philosophical axiom. In this view, without self reference, logic and mathematics become impossible, or at least, lack usefulness.
В электронных таблицах
Круговые ссылки также возникают в электронных таблицах, когда две ячейки зависят от результатов друг друга. Например, если значение в ячейке A1 должно быть получено путем прибавления 5 к значению в ячейке B1, а значение в ячейке B1 – путем прибавления 3 к значению в ячейке A1, то вычислить значения невозможно. (Даже если задано A1:=B1+5 и B1:=A1+3, круговая ссылка все равно присутствует. Тот факт, что A1=3 и B1=2 удовлетворяют обеим формулам, не имеет значения, поскольку существует бесконечно много других возможных значений A1 и B1, которые также могут их удовлетворять.) Круговые ссылки в рабочих листах могут быть очень полезным приемом для решения неявных уравнений, таких как уравнение Кольбрука и многие другие, которые в противном случае потребовали бы трудоемких алгоритмов Ньютона-Рафсона в VBA или использования макросов. Важно различать процессы, содержащие круговую ссылку, те, которые не поддаются вычислению, и те, которые представляют собой итерационные вычисления с конечным результатом. Последние могут не работать в электронных таблицах, не предназначенных для их обработки, но при этом остаются логически корректными.
Circular references also occur in spreadsheets when two cells require each other's result. For example, if the value in Cell A1 is to be obtained by adding 5 to the value in Cell B1, and the value in Cell B1 is to be obtained by adding 3 to the value in Cell A1, no values can be computed. (Even if the specifications are A1:=B1+5 and B1:=A1 5, there is still a circular reference. It does not help that, for instance, A1=3 and B1= 2 would satisfy both formulae, as there are infinitely many other possible values of A1 and B1 that can satisfy both instances.) Circular reference in worksheets can be a very useful technique for solving implicit equations such as the Colebrook equation and many others, which might otherwise require tedious Newton Raphson algorithms in VBA or use of macros. A distinction should be made with processes containing a circular reference between those that are incomputable and those that are an iterative calculation with a final output. The latter may fail in spreadsheets not equipped to handle them but are nevertheless still logically valid.