Циклическая ссылка представляет собой ряд ссылок , где ссылки последнего объекта первой, в результате чего в замкнутом контуре.
На языке [ править ]
Циклическую ссылку не следует путать с логической ошибкой кругового аргумента . Хотя циклическая ссылка часто бывает бесполезной и не раскрывает никакой информации, например, две записи в указателе книги, ссылающиеся друг на друга, это не обязательно так, что циклическая ссылка бесполезна. Словари, например, всегда должны быть циклической ссылкой, поскольку все слова в словаре определены в терминах других слов, но словарь, тем не менее, остается полезным справочником. Предложения, содержащие циклические ссылки, могут иметь смысл:
- Ее брат подарил ей котенка; его сестра поблагодарила его за это.
круговой, но не лишенный смысла. В самом деле, можно утверждать, что самоотнесение является необходимым следствием закона непротиворечивости Аристотеля , фундаментальной философской аксиомы . С этой точки зрения, без саморекламы логика и математика становятся невозможными или, по крайней мере, бесполезными. [1] [2]
В компьютерном программировании [ править ]
Циклические ссылки могут появляться в компьютерном программировании, когда один фрагмент кода требует результата от другого, а этому коду требуется результат от первого. Например, две функции posn и plus1 в следующей программе Python содержат циклическую ссылку: [ требуется дополнительное объяснение ]
def posn ( k : int ) -> int : if k < 0 : return plus1 ( k ) return kdef plus1 ( n : int ) -> int : return posn ( n + 1 )
>>> posn ( - 1 ) 0
Циклические ссылки, подобные приведенному выше примеру, могут возвращать допустимые результаты, если они имеют условие завершения. Если нет условия завершения, циклическая ссылка приводит к состоянию, известному как livelock .
В стандарте ISO SQL ограничения циклической целостности неявно поддерживаются в одной таблице. Между несколькими таблицами разрешены циклические ограничения (например, внешние ключи) путем определения ограничений как отложенных (см. CREATE TABLE для PostgreSQL и примеры ограничений DEFERRABLE для Oracle). В этом случае ограничение проверяется в конце транзакции, а не во время выполнения оператора DML. Чтобы обновить циклическую ссылку, в одной транзакции могут быть выполнены два оператора, которые удовлетворят обе ссылки после того, как транзакция будет зафиксирована.
В электронных таблицах [ править ]
Циклические ссылки также встречаются в электронных таблицах, когда две ячейки требуют результата друг друга. Например, если значение в ячейке A1 должно быть получено путем добавления 5 к значению в ячейке B1, а значение в ячейке B1 должно быть получено путем добавления 3 к значению в ячейке A1, никакие значения не могут быть вычислены. (Даже если указаны спецификации A1: = B1 + 5 и B1: = A1-5, круговая ссылка все равно есть. Не помогает, например, что A1 = 3 и B1 = -2 удовлетворяют обеим формулам, так как существует бесконечно много других возможных значений A1 и B1, которые удовлетворяют обоим экземплярам.)
Круговые ссылки на рабочих листах могут быть очень полезным методом для решения неявных уравнений, таких как уравнение Коулбрука и многих других, которые в противном случае могут потребовать утомительных алгоритмов Ньютона-Рафсона в VBA или использования макросов. [3]
Следует различать процессы, содержащие циклическую ссылку, между невычислимыми и итеративными вычислениями с конечным результатом. Последние могут не работать в таблицах, не оборудованных для их обработки, но, тем не менее, логически действительны. [2]
См. Также [ править ]
- Причинность - как один процесс влияет на другой
- Циркулярная отчетность - проблема, при которой источник откуда-то получает информацию, которая затем использует этот источник в качестве ссылки.
- Проблема с остановкой - проблема с определением, завершит ли данная программа выполнение или будет продолжаться бесконечно.
- Вложенная функция
- Quine (вычисления) - самовоспроизводящаяся программа
- Аргумент регресса - проблема эпистемологии, заключающаяся в том, что любое предложение можно бесконечно ставить под сомнение.
- Самореференция - предложение, идея или формула, относящиеся к самому себе.
- В моем ведре дыра - Детская песня
Ссылки [ править ]
- ^ Терри А. Осборн , Будущее обучения иностранным языкам в Соединенных Штатах , стр 31-33, Greenwood Publishing Group, 2002 ISBN 0-89789-719-6 .
- ^ a b Роберт Фиенго, Роберт Мэй, Индексы и личность , стр. 59-62, MIT Press, 1994 ISBN 0-262-56076-3 .
- ^ «Решите неявные уравнения внутри вашего рабочего листа, Анилкумар М., доктор Шринивасан Э. и доктор Рагхунатан К.» . Архивировано из оригинала на 2009-08-17 . Проверено 25 июня 2009 ..